Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Rutina de input con texto Canvas... (https://www.clubdelphi.com/foros/showthread.php?t=29004)

Geta 10-01-2006 11:15:29

Rutina de input con texto Canvas...
 
Mi pregunta seria como se podria hacer una especie de input pero utilizando las funciones de canvas para imprimir texto, como TextOut, etc.

Más o menos me he creado uno usando el evento Keyup del Form y según la tecla pulsada pues imprimir dicho caracter, pero con esta forma no puedo introducir ningún simbolo como @ o ? y querria que si se puediera.

Gracias de antemano.

Saludos

Neftali [Germán.Estévez] 10-01-2006 12:24:17

Antes de nada, bienvenido y te recomiendo que revises la Guía de estilo de los foros.

La verdad es que no te has explicado muy bien; ¿Dónde estás haciendo ésto? ¿en un componente? ¿Qué tipo de componente?
¿Puedes poner algo de código, para que nos ayude a comprender lo que estás haciendo?
¿Cuando hablas de imprimir te refieres a qué exactamente -porque imprimir es mardar algo a la impresora-?

Geta 10-01-2006 19:57:55

Gracias, por la bienvenida. Si que eché un ojo a la guia de estilo.

Puntualizaré para que podais entender mi problema.

En una aplicación, quiero recoger mediante teclado, usando una rutina de input creada por mi, una frase que de el usuario, pero quiero que la rutina de input use los texto del canvas de mi form, es decir, usar texto 'dibujado' en el canvas para crear el input.

Ahora bien, lo tengo medio hecho, en el evento keyup del form. Pero necesito que esta rutina me admita simbolos tales como " @ $ y demás, ya que uso el parámetro key para dibujar la letra correspondiente a la tecla pulsada.

Gracias.

dec 11-01-2006 06:31:20

Hola,

No entiendo muy bien porqué te empeñas en utilizar el "canvas" del formulario a modo de "entrada" del usuario. Supongo que tienes tus razones. Creo que costaría más trabajo adaptar el "canvas" para utilizarlo como un "TEdit" que lo contrario, esto es, adaptar un "TEdit" para que se parezca al "Canvas".

Puedes hacer que el "TEdit" sea del mismo color que el formulario. Puedes quitarle el borde, de forma que ni siquiera se aprecie el "TEdit" y este quede confundido con el formulario; incluso puedes ocultar el "caret" del "TEdit" para que parezca que está escribiéndose en el propio formulario.

De ese modo no tendrás problemas con los caracteres que mencionas, además de que podrás aprovechar lo que puede ofrecerte el componente "TEdit". Pero, fíjate lo que dice el autor del código que enlazo más arriba sobre ocultar el "caret" del "TEdit" al usuario:

Cita:

Of course this is an excellent way to confuse the user, since there will be no indication where the focus is anymore when the user tabs into one of the edits...

Geta 11-01-2006 18:29:04

Cita:

Empezado por dec
Hola,

No entiendo muy bien porqué te empeñas en utilizar el "canvas" del formulario a modo de "entrada" del usuario. Supongo que tienes tus razones. Creo que costaría más trabajo adaptar el "canvas" para utilizarlo como un "TEdit" que lo contrario, esto es, adaptar un "TEdit" para que se parezca al "Canvas".

Puedes hacer que el "TEdit" sea del mismo color que el formulario. Puedes quitarle el borde, de forma que ni siquiera se aprecie el "TEdit" y este quede confundido con el formulario; incluso puedes ocultar el "caret" del "TEdit" para que parezca que está escribiéndose en el propio formulario.

De ese modo no tendrás problemas con los caracteres que mencionas, además de que podrás aprovechar lo que puede ofrecerte el componente "TEdit". Pero, fíjate lo que dice el autor del código que enlazo más arriba sobre ocultar el "caret" del "TEdit" al usuario:

No si esta idea ya se me pasó por la cabeza e incluso empecé a probarla, pero no conseguia los resultados que buscaba.

Pongo en antecedentes. Estoy intentando emular los antiguos juegos spectrum que eran aventuras de texto que las ordenes se introducian por teclado. Entonces, además de poder crear un input con canvas quiero que la frase introducida haga 'scroll' hacia arriba cuando el ordenador responda a la frase introducida, y eso usando un Tedit lo veia más dificil.

Pero la verdad es que ayer ya avance bastante y no está quedando mal.

Ricardojosep 11-01-2006 18:48:29

Hola Geta!
No se cual es tu problema, creo que es, cuando tu quieres dibujar el simbolo '@' por ejemplo.
Bueno, esta es una forma de hacerlo:

en el evento OnKeyDown(....) de la Form pone este codigo
Código Delphi [-]
if ( (GetKeyState(VK_CONTROL) and 128)=128 ) and
     ( (GetKeyState(ord('2'))   and 128)=128 )
    then
      Form1.Canvas.TextOut(20,20,'@');

Y listo, eso es para dibujar un '@' en la Form.
Observa que tienes que presionar Ctrl + 2 para dibujar el simbolo '@'.
Creo que eso es lo que necesitas, en caso contrario disculpa.
Cabe señalar que el codigo lo saque de Trucomania. El truco es el 178.
para ingresar a Trucomania hace Click Aqui

La parte del Scroll lo puedes ver en el truco 58 de Trucomani.

Suerte!!! Hasta Pronto.

dec 12-01-2006 05:26:35

Hola,

Cita:

Empezado por Geta
(...) y eso usando un Tedit lo veia más dificil.

Bueno, quien dice un "TEdit" dice un "TMemo"... ¿No? ;)


La franja horaria es GMT +2. Ahora son las 10:25:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi