RAD Studio VCL Reference
|
Occurs immediately after input focus changes to a new windowed control.
property OnActiveControlChange: TNotifyEvent;
__property TNotifyEvent OnActiveControlChange;
Write an OnActiveControlChange event handler to take specific action when input focus changes to a new control. The change in focus may be within the active form, or across forms to a new form that then becomes the active form.
When focus moves from one control to another, the following events occur.
1If the new focused control is in a different form, focus moves to the new form.
2Focus moves to the new active control.
3If the active form changed, an OnActiveFormChange event occurs.
4An OnActiveControlChange event occurs.
C++ Examples:
/* This example uses the OnActiveControlChange event to detect when focus changes on the form. When focus changes, the hint for the active control is displayed on the status bar. To use this example, you must add a status bar to the form and set its SimplePanel property to true. Add a new public procedure, ActiveControlChanged, to the TForm1 class declaration. */ void _fastcall TForm1::ActiveControlChanged(System::TObject *Sender) { TWinControl *Active = NULL; for (int I = 0; I < Form1->ControlCount; I++) { TWinControl *Temp = dynamic_cast<TWinControl *>(Form1->Controls[I]); if (Temp && Temp->Focused()) Active = Temp; } if ((Active != NULL) && (Active->Hint != "")) StatusBar2->SimpleText = GetLongHint(Active->Hint) + " focus"; } void __fastcall TForm1::MouseOverChanged(TObject *Sender) { TWinControl *Active = dynamic_cast<TWinControl *>(Sender); if (Active != NULL) StatusBar1->SimpleText = GetLongHint(Active->Hint) + " mouse over"; } /* Assign this method as the OnActiveControlChange event handler by setting it from the form's OnCreate event handler: */ void __fastcall TForm1::FormCreate(TObject *Sender) { Screen->OnActiveControlChange = ActiveControlChanged; } /* Make sure you clean up the screen object when the form is freed by adding this OnDestroy event handler to the form: */ void __fastcall TForm1::FormDestroy(TObject *Sender) { Screen->OnActiveControlChange = 0; }
Delphi Examples:
{ This example uses the OnActiveControlChange event to detect when focus changes on the form. When focus changes, the hint for the active control is displayed on the status bar. To use this example, you must add a status bar to the form and set its SimplePanel property to true. Add a new public procedure, ActiveControlChanged, to the TForm1 class declaration. } type TForm1 = class(TForm) StatusBar1, StatusBar2: TStatusBar; Button1: TButton; RadioButton1: TRadioButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure MouseOverChanged(Sender: TObject); private { Private declarations } public procedure ActiveControlChanged(Sender: TObject); end; var Active : TWinControl; I: Integer; Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ActiveControlChanged(Sender: TObject); var Active : TWinControl; I: Integer; begin Active := nil; for I:= 0 to ControlCount -1 do begin if (Controls[I] is TWinControl) then if (Controls[I] as TWinControl).Focused then Active := TWinControl(Controls[I]); end; if ((Active <> nil) and (Active.Hint <> '')) then begin StatusBar2.SimpleText := GetLongHint(Active.Hint) + ' focus'; end end; procedure TForm1.MouseOverChanged(Sender: TObject); var Active : TWinControl; I: Integer; begin if (Sender is TWinControl) then begin Active := TWinControl(Sender); StatusBar1.SimpleText := GetLongHint(Active.Hint) + ' mouse over'; end; end; { Assign this method as the OnActiveControlChange event handler by setting it from the form's OnCreate event handler: } procedure TForm1.FormCreate(Sender: TObject); begin Screen.OnActiveControlChange := ActiveControlChanged; end; { Make sure you clean up the screen object when the form is freed by adding this OnDestroy event handler to the form: } procedure TForm1.FormDestroy(Sender: TObject); begin Screen.OnActiveControlChange := nil; end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|