Komponente beim Fokussieren farblich hervorheben |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Um eine Komponente bei Erhalt des Fokus' farblich hervorzuheben können Sie das OnEnter-Ereignis (Control erhält den Fokus) im Verbund mit dem OnExit-Ereignis (Control verliert den Fokus) nutzen. Da diese Vorgehensweise bei vielen betroffenden Controls schnell unübersichtlich wird, ist es besser im OnActiveControlChange-Ereignis des TScreen-Objekts anzusetzen.Folgendes Beispiel setzt den Hintergrund aller Edit-Felder bei Erhalt des Fokus' auf rot, verlieren sie den Fokus, werden sie wieder auf die Standardfarbe zurückgesetzt.Zunächst die Typendeklarationen:
type
TForm1 = class(TForm)
//..
private
{ Private-Deklarationen }
FOldActiveControl: TWinControl;
procedure ActiveControlChange(Sender:TObject);
//..
end;
Die Implementation des Ereignisses sieht dann so aus:
procedure TForm1.ActiveControlChange(Sender:TObject);
procedure ColorControl(const aControl: TWinControl);
begin
if aControl is TEdit then
if TEdit(aControl).Focused then
TEdit(aControl).Color:=clRed
else
TEdit(aControl).Color:=clWindow;
end;
begin
//Control, das zuletzt den Fokus hatte
if Assigned(FOldActiveControl) then
ColorControl(FOldActiveControl);
//Control, das jetzt den Fokus hat
FOldActiveControl:=Screen.ActiveControl;
if Assigned(FOldActiveControl) then
ColorControl(FOldActiveControl);
end;
Im OnCreate-Ereignis des Formulars kann das Ereignis zugewiesen werden:
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.OnActiveControlChange:=ActiveControlChange;
end;
Damit es beim Beenden zu keiner Zugriffsverletzung kommt, muss das Ereignis beim Freigeben des Formulars wieder auf nil gesetzt werden:
procedure TForm1.FormDestroy(Sender: TObject);
begin
Screen.OnActiveControlChange:=nil;
end;
- Überblick
- Komponenten vom Formular entfernen
- Komponenten zur Laufzeit erzeugen
- Eigenschaften von Komponenten zur Laufzeit ändern
- Zugriffsmethoden auf Komponenten
- TWinControl beim Mauszeiger ermitteln
- Steuerelement am Neuzeichnen hindern
- Zugriff auf Komponenten über ihre Namen
- Komponenten speichern/laden
- Einer Komponente den Fokus geben