Ver Mensaje Individual
  #5  
Antiguo 08-01-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Delphitest.

Otra opción para detectar el cambio de foco, es usar el evento OnActiveControlChange :
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    ...
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    procedure ActiveCtrlChange(Sender: TObject);
  ...
  end;

...
implementation

uses TypInfo;

const
  FOCUSEDCOLOR   = clMoneyGreen;
  UNFOCUSEDCOLOR = clWindow;

var
  PrevFocusedCtrl: TWinControl = nil;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Screen.OnActiveControlChange:= ActiveCtrlChange;
end;

procedure TForm1.ActiveCtrlChange(Sender: TObject);
begin
  if not Assigned(PrevFocusedCtrl) then
    PrevFocusedCtrl:= ActiveControl;

  if Assigned(GetPropInfo(PrevFocusedCtrl.ClassInfo, 'Color')) then
    SetOrdProp(PrevFocusedCtrl, 'Color', UNFOCUSEDCOLOR);

  if Assigned(GetPropInfo(ActiveControl.ClassInfo, 'Color')) then
  begin
    SetOrdProp(ActiveControl,'Color', FOCUSEDCOLOR);
    PrevFocusedCtrl:= ActiveControl;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Screen.OnActiveControlChange:= nil;
end;
...
De este modo cambiará el color del control focalizado (siempre que poseea la propiedad Color)

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 09-01-2015 a las 00:16:03.
Responder Con Cita