Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ayuda con color en controles activos (https://www.clubdelphi.com/foros/showthread.php?t=10029)

squenda 08-05-2004 05:50:07

ayuda con color en controles activos
 
Hola a todos, una vez mas dando lata, lo que necesito saber en esta ocacion es:

a los controles de edicion de un formulario como son edits, combo box, memos y de fecha como el date time picker necesito colorearlos cuando tienen el foco, lo que hago es que en el evento OnEnter de cada control les asigno algun color...

edt_clientes.color := clRed;

y en el evento OnExit les devuelvo el color original...

edt_clientes.color := clWindow;

pero es de verdad una lata estar haciendo esto para cada control, imaginense cuando hay 30 o mas controles.... que hueva!!

asi que decidi pedir ayuda para ver si alguien sabe de algun procedimiento que haga lo anterior sin tanto rollo.

de antermano muchas gracias

saludos

jachguate 08-05-2004 06:38:32

Se me ocurre que podes hacer un único procedimiento genérico que cambie wel color para la entrada y otro para la salida...

Algo como:

Código Delphi [-]
Procedure TForm1.ControlEnter(Sender : TObject);

Begin
  (sender as TControl).Color := clRed;
End;

Procedure TForm1.ControlExit(Sender : TObject);

Begin
  (sender as TControl).Color := clWindow;
End;

Y en el evento onCreate de tu forma, hacer un ciclo que itere por los controles del formulario, y asigne estos procedimientos genériocos a los eventos OnEnter y OnExit de todos. Si tenes mas de un formulario, podes usar herencia visual para conseguir, en un solo paso, el mismo comportamiento en todos los formularios de tu aplicación.

Hasta luego.

;)

Paoti 09-05-2004 05:06:29

Hola!!!

una forma más fácil, es crear tu primer cuadro de texto, con el cambio de colores

Código Delphi [-]
Procedure TForm1.TEDIT1Enter(Sender : TObject);

Begin
  (sender as TControl).Color := clRed;
End;

Procedure TForm1.Edit1Exit(Sender : TObject);

Begin
  (sender as TControl).Color := clWindow;
End;

enseguida, seleccionas el siguiente TEdit, y te vas al inspector de objetos y en la pestaña eventos, te vas al evento OnEnter, y seleccionas de la lista desplegable el procemiento que definiste para tu primer TEdit, y asi con los demas controles, y tendras el mismo comportamiento, solamente habiendo programado una sola vez tu procedimiento.....



Espero te sirva, hasta luego...

Lepe 09-05-2004 10:44:33

Siguiendo la filosofia de Paoti, en lugar de ir por cada control, puedes ir al ObjectTreeview y seleccionar todos los controles de una vez para asignarle los evento de una sola tacada.

Digo esto, porque si tienes Pagecontrols en tu form o varios paneles, se te hace muy engorroso ir seleccionandolos uno a uno los controles.

Saludos.

Jose_T 10-05-2004 00:22:23

Cambiar el color al recibir y perder el foco.
 
Hola,

échale un ojo al código del componente TScrollBoxCursor que está disponible en la sección de componentes del clubdelphi. En él hago que todos los controles que estén posicionados dentro del mismo, tengan el comportamiento que andas buscando.

Si bien no te sirve el control en cuestión, que además aporta la funcionalidad de desplazarte entre controles con las teclas del cursor, sin tener en cuenta el TabOrder, sino el orden de posicionamiento de los controles, al menos sí podrás entender cómo yo lo hice, que posiblemente te sirva.

Un saludo,

Jose_T
http://www.madridsoft.com
Consultas de Delphi, VB, SQL y otros gratis.

jachguate 10-05-2004 06:17:24

Pues yo defiendo mi postura de hacerlo en tiempo de ejecución, pues no implica el cuidad de hacerlo uno a uno en tiempo de diseño. Podes idear un mecanismo para crear un enlace a eventos asignados en tiempo de diseño y que estos no se pierdan, para poder aumentar la funcionalidad, además de valerte, por ejemplo del tag, para controles que no querras que tengan ese comportamiento... en fin, el límite es la imaginación.

Hasta luego.

;)

squenda 11-05-2004 10:33:23

pues muchas gracias a todos, estoy intentando cada una de sus sugerencias a ver con cual me quedo. gracias


La franja horaria es GMT +2. Ahora son las 08:47:10.

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