Delphi - Obtener Nombre del Control que pierde el foco

 
Vista:

Obtener Nombre del Control que pierde el foco

Publicado por irreal (15 intervenciones) el 20/03/2003 13:29:20
Como se recoge el nombre del control que pierde el foco,ya que en el OnExit al llamar a 'ActiveControl' ya lo ha perdido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Obtener Nombre del Control que pierde el foco

Publicado por Ernesto D'Spirito (706 intervenciones) el 20/03/2003 15:10:55
Una opción es modificar la VCL, para guardar el valor de ActiveControl antes de modificarlo en una propiedad que podría llamarse LastActiveControl.

Otra opción es que todos los controles compartan un evento OnExit en el que se asigne LastActiveControl:

procedure TForm1.LostFocus(Sender: TObject);
begin
LastActiveControl := TWinControl(Sender);
end;

La forma "menos intrusiva" sería sobrescribir el método virtual SetFocusedControl:

TForm1 = class(TForm)
....
....
protected
FLastActiveControl: TWinControl;
FNextLastActiveControl: TWinControl;
function GetLastActiveControl: TWinControl;
public
function SetFocusedControl(Control: TWinControl): Boolean; override;
published
property LastActiveControl: TWinControl read GetLastActiveControl;
end;

implementation

function TForm1.SetFocusedControl(Control: TWinControl): Boolean;
begin
inherited ActiveChanged;
FLastActiveControl := FNextLastActiveControl;
FNextLastActiveControl := Control;
end;

function TForm1.GetLastActiveControl: TWinControl;
begin
Result := FLastActiveControl;
if Result = nil then
Result := FNextLastActiveControl;
if (Result = nil) or not ContainsControl(Result) then
Result := ActiveControl;
end;

Espero que te sirva.

Ernesto D'Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar