Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   texto como fondo en un DBEdit (https://www.clubdelphi.com/foros/showthread.php?t=29457)

Oni 23-01-2006 11:55:58

texto como fondo en un DBEdit
 
Hola, necesito que en el fondo de un DBEdit aparezca un texto que yo quiera. El usuario puede escribir en el DBEdit encima. Lo he intentado con un TCanvas pero no lo he conseguido.
Gracias,

Neftali [Germán.Estévez] 23-01-2006 12:30:32

No me ha quedado del todo claro; ¿Puedes explicarte mejor?
Seguramente, derivando y redefiniendo el método Paint sea posible; Pero como te he dicho no me ha quedado claro, así que no seguro que la solución vaya por ahí.

Oni 23-01-2006 12:45:32

texto como fondo en un DBEdit
 
Hola de nuevo, tengo un DBEdit enlazado con un campo clave de una tabla. Si pulso una tecla (por ejemplo F3) sobre el DBEdit, me abriria una ventana por la cual puedo buscar por el campo clave en la tabla. Me gustaria que en este DBEdit apareciera un texto como fondo (por ejemplo: "pulsar F3") para recordar al usuario que puede pulsar esa tecla y buscar en una ventana por ese campo clave.
Resumiendo, que aparezca un texto sobreimpreso en el fondo del DBEdit.

Lepe 23-01-2006 13:09:09

...y el usuario pulsa la tecla "F" y despues la tecla "3" :p

Creo que eso es cosa del Hint, o bien de un Status bar, al tomar el foco un control, añades ese texto en el statusbar.

Creo que pintando en el DBEdit, incluso puede llevar a confusión, ya que, aunque esté en otro control, puede ver el texto de ..."pulsar F3". Situándolo en un StatusBar, queda en su contexto ;)

saludos.

Oni 23-01-2006 13:54:24

Probe inicialmente con hint, pero el usuario tiene que pasar el cursor del raton sobre el DBEdit, si no lo pasa, no sabria que debe pulsar F3 en ese campo DBEdit. Me gustaria que dentro del campo DBEdit, como fondo aparezca el texto, independientemente donde este el raton. Si el DBEdit recibe el foco y se pulsa F3, posteriormente podria borrar el texto para que no se superponga a la clave.

Neftali [Germán.Estévez] 23-01-2006 15:43:43

Hace tiempo estuve con algo similar, no exactamente lo mismo, pero similar.
La idea, me ha parecido original, así que he adaptado el que tenía para probar lo que comentas.
Échale un vistazo a éste componente a ver si es eso lo que explicas; Lleva incluída una demo compilada.
Ésta es la muestra.

roman 23-01-2006 15:55:50

Yo optaría por una de dos:

O pongo el "hint" en el rótulo del dbedit:

Código:

Código (presiona F3)
+---------------------+
| H-724              |
+---------------------+

o manejaría el evento OnGetText del campo asociado:

Código Delphi [-]
procedure TForm1.Table1NombreGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text := Sender.AsString;
  if DisplayText then
    Text := Text + ' (Presiona F3)';
end;

de manera que, si el control no está en modo de edición, aparecería así:

Código:

Código
+---------------------+
| H-724 (presiona F3) |
+---------------------+

y al entrar a editarlo, desparecería el "(presiona F3)"

// Saludos

Oni 24-01-2006 11:19:29

Eso era lo que necesitaba, muchisimas gracias Neftali


La franja horaria es GMT +2. Ahora son las 15:01:18.

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