Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar el color de fondo de un Edit o DBEdit (https://www.clubdelphi.com/foros/showthread.php?t=43267)

FGarcia 06-05-2007 23:34:46

Cambiar el color de fondo de un Edit o DBEdit
 
Saludos:
Con el siguiente codigo cambio el color de fondo de un DBEdit cada vez que ingreso (ENTER) a el o salgo (EXIT) del mismo

Código Delphi [-]
//Asignamos color al DBEdit
procedure TfrmClientes.DBEdit1Enter(Sender: TObject);
var ColorOrigen: TColor;
begin
  ColorOrigen := DBEdit1.Color ;
  DBEdit1.Color := clSkyBlue;
end;
 
//Restauramos el color del DBEdit;
procedure TfrmClientes.DBEdit1Exit(Sender: TObject);
var ColorOrigen: TColor;
begin
  DBEdit1.Color := ColorOrigen;
end;

No quiero repetir este codigo para 20 edits, ok Delphi me permite asignar el evento OnEnter y OnExit al DBEdit1 y despues se lo puedo asignar a los demas DBEdit pero esto no funciona porque (eso creo) hago referencia en especifico a un DBEdit en este caso DBEdit1.

si creo algo como esto:

Código Delphi [-]
procedure TfrmClientes.ColorEnter;
var
  Cnt: integer;
  ColorOrigen: TColor;
begin
  for Cnt := 0 to Pred(ComponentCount) do
  begin
    if Components[Cnt] is TDBEdit then
      begin
        ColorOrigen := TDBEdit(Components[Cnt]).Color;
        TDBEdit(Components[Cnt]).Color := clSkyBlue;
      end;
  end;
end;
 
procedure TfrmClientes.ColorExit;
var
  Cnt: integer;
  ColorOrigen: TColor;
begin
  for Cnt := 0 to Pred(ComponentCount) do
  begin
    if Components[Cnt] is TDBEdit then
      TDBEdit(Components[Cnt]).Color := ColorOrigen;
  end;
end;
 
procedure TfrmClientes.DBEdit1Enter(Sender: TObject);
begin
  ColorEnter;
end;
 
procedure TfrmClientes.DBEdit1Exit(Sender: TObject);
begin
  ColorExit;
end;

Entonces todos los DBEdit se colorean simultaneamente, en algo me perdi, se agradece la ayuda.

FGarcia 06-05-2007 23:56:08

De nuevo aqui!
Bueno resolvi esto de la siguiente manera:

Código Delphi [-]
private
    { Private declarations }
    ColorOrigen: TColor;
    procedure ColorEnter(Sender: TObject);
    procedure ColorExit(Sender: TObject);
procedure TfrmClientes.ColorEnter(Sender: TObject);
begin
  ColorOrigen := TDBEdit(Sender).Color;
  TDBEdit(SEnder).Color := clSkyBlue;
end;
procedure TfrmClientes.ColorExit(Sender: TObject);
begin
  TDBEdit(Sender).Color := ColorOrigen;
end;
procedure TfrmClientes.DBEdit1Enter(Sender: TObject);
begin
  ColorEnter(Sender);
end;
procedure TfrmClientes.DBEdit1Exit(Sender: TObject);
begin
  ColorExit(Sender);
end;

Se aceptan todas las sugerencias

ContraVeneno 07-05-2007 18:18:46

Como ya descubriste las bondades del objeto Sender, el mismo evento OnEnter y OnExit manejan este objeto, por lo que no sería necesario crear las funciones ColorEnter y/o ColorExit.

Puedes usar el mismo código en el propio evento de tu primer control y asignarle ese mismo evento a todos los demás.

pborges36 07-05-2007 18:27:06

Hola. Tambien podrias usar este componente que pude realizar gracias a la ayuda de algunos integrantes del foro. Espero te sirva. Saludos.

FGarcia 08-05-2007 04:27:24

:D :D :D :D
Contraveneno: creo que ya estaba harto cuando puse el codigo final, asi que hace un rato que volvi al computador vi tu mensaje y quedo esto:

Código Delphi [-]
//Asignamos color al dbedit
procedure TfrmClientes.DBEdit1Enter(Sender: TObject);
begin
  ColorOrigen := TDBEdit(Sender).Color;
  TDBEdit(SEnder).Color := clSkyBlue;
end;
 
//Restauramos color al dbedit
procedure TfrmClientes.DBEdit1Exit(Sender: TObject);
begin
  TDBEdit(Sender).Color := ColorOrigen;
end;

Espero haber entendido tu mensaje, si no me lo haces saber. Gracias!

pborges36 Gracias por el componente, la pregunta al final el codigo que pusiste ¿es el final..final o despues de tantas opiniones hubo otro cambio?

pborges36 09-05-2007 18:28:34

Es verdad que hubo varias opiniones, personalmente me quede con las modificaciones que hizo Crandel, la primera. Funciona de 10. Saludos.

patoaballay 15-05-2007 20:16:00

como se puede cambiar el color de fondo de una fila seleccionda en una grilla de datos?? puedo cambiar el color del texto de la fila seleccionada, pero quisiera cambiar tambien el color de fondo de la misma fila.

ContraVeneno 15-05-2007 20:20:19

http://www.clubdelphi.com/foros/show...r+color+grilla


La franja horaria es GMT +2. Ahora son las 14:14:50.

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