2010-12-16 134 views

Répondre

8

Essayez ce code

TForm1 = class(TForm) 
    --- 
    --- 
    private 
    { Private declarations } 
    wcActive, wcPrevious : TWinControl; 
    public 
    { Public declarations } 
    procedure ActiveControlChanged(Sender: TObject) ; 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.ActiveControlChanged(Sender: TObject); 
begin 
    wcPrevious := wcActive; 
    wcActive := Form1.ActiveControl; 
end; 

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

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
    Screen.OnActiveControlChange := nil; 
end; 

Utilisez wcControl.Name pour obtenir le nom du contrôle précédent

Pour plus d'informations passent par this link

+0

Merci Bharat I manqué cette logique simple –

4

Vous pouvez créer vous-même un «historique» des contrôles actifs en utilisant cet événement, et pour trouver le précédent, vous consulterez votre liste d'historique.

+0

Merci Miller histoire maintenant me aide à résoudre une autre question –