2010-12-16 5 views
5

Я хочу получить предыдущий активный элемент управления в Delphi, я попытался использовать событие OnActiveControlChange, но даже через это я могу получить текущий активный элемент управления, а не предыдущий.Как найти предыдущий активный элемент управления: Delphi

Спасибо за помощь заранее. --Vijay

ответ

8

Попробуйте этот код

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; 

Используйте wcControl.Name, чтобы получить имя предыдущего элемента управления

Для получения дополнительной информации пройти через this link

+0

Спасибо Бхарата I пропустил эту простую логику – 2010-12-16 10:43:58

4

Вы можете создать себе «историю» активных элементов управления, используя это событие, и чтобы найти предыдущее, вы обратитесь к своему списку истории.

+0

Спасибо Miller поддержание истории помогает мне решить еще один вопрос, – 2010-12-16 10:51:41

Смежные вопросы