Dodawanie obsługi dla TScreen.OnActiveControlChange
w tworzeniu głównego formularza, a uchwyt podpowiedzi w takim przypadku:
type
TForm2=class(TForm)
...
private
procedure ScreenFocusControlChange(Sender: TObject);
end;
implementation
procedure TForm2.FormCreate(Sender: TObject);
begin
Screen.OnActiveControlChange := ScreenFocusControlChange;
end;
procedure TForm2.ScreenFocusControlChange(Sender: TObject);
begin
Label1.Caption := ActiveControl.Hint;
Label1.Update;
end;
Zauważ, że Sender
nie będzie Pan wiele dobrego; zawsze jest to Screen
. Strefy czasowe (na przykład, aby zmienić tylko Label.Caption
do edycji kontroli) poprzez testowanie ActiveControl
:
if (ActiveControl is TEdit) then
// Update caption of label with ActiveControl.Hint
pamiętać, że jeśli trzeba przypisać zdarzenie kiedy pokażesz form potomnych (na razie na tym forma dziecka), lub zawsze będziesz aktualizować etykietę oryginalnego formularza z podpowiedziami. Najprostszym sposobem, aby zrobić zmiany przeznaczenia jest dać każdemu tworzyć OnActiveControlChange
obsługi i przypisać go w formie za OnActivate
imprezy i cofnąć ją w razie OnDeactivate
:
procedure TForm1.FormActivate(Sender: TObject);
begin
Screen.OnActiveControlChange := Self.ScreenActiveControlChange;
end;
procedure TForm1.FormDeactivate(Sender: TObject);
begin
Screen.OnActiveControlChange := nil;
end;
pozwoli na aktualizację kontrole inne niż Label1
na w każdym formularzu i używaj tylko zmian podpowiedzi w formularzach, które chcesz.
Czego używasz, VCL lub FMX? – Kromster
Używam VCL i XE2. –