Da so viele Komponenten aufeinander liegen muss ich immer schauen das ich das Panel erreiche, denn nur dieses soll Hovern.
Ich müsste pro Liste das OnEnter/OnLeave des Images und Labels. Von da muss ich auf das Panel um die Farbe zu ändern.
Dazu brauche ich auch immer das letzte aktiv gewesene Panel um dort die Farbe wieder zu ändern sobald ich nicht mehr auf diesem bin.
Da ich nicht über das OnEnter/OnLeave des Panels gehen kann um das Hint Zeitversetzt aufzurufen, Aufgrund dessen das diese beidem Prozeduren durch das Image und Label nicht aufgerufen werden.
Bei dem Deteils des Benutzers siehts es zudem etwas anders aus. Dieses besteht nur aus einem Panel und darauf enthalten sind zwei Labels und einige Images, die nicht das ganze Panel belegen.
Ich müsste dann also zwei globale Prozeduren haben, auf die jedes Panel, Image und Label zugreifen.
Delphi-Quellcode:
procedure OnMouseEnter(Sender: TObject);
procedure OnMouseLeave(Sender: TObject);
Sobald das OnEnter aufgerufen wird, muss ich dann auf das Panel kommen indem ich das jeweilige Parent des Images und Labels prüfen.
Den Zustand des Panels speichern und prüfen ob es sich geändert hat.
Delphi-Quellcode:
procedure OnMouseEnter(Sender: TObject);
var
TmpPanel: TPanel;
begin
if Sender is TImage then begin
if TImage(Sender).Parent is TPanel then
TmpPanel := (TImage(Sender).Parent) as TPanel;
end
else if Sender is TLabel then begin
if TLabel(Sender).Parent is TPanel then
TmpPanel := (TLabel(Sender).Parent) as TPanel;
end
else if Sender is TPanel then begin
TmpPanel := (Sender) as TPanel;
end
else Exit;
TmpPanel.Color := clAqua;
end;
procedure OnMouseLeave(Sender: TObject);
var
TmpPanel: TPanel;
begin
if Sender is TImage then begin
if TImage(Sender).Parent is TPanel then
TmpPanel := (TImage(Sender).Parent) as TPanel;
end
else if Sender is TLabel then begin
if TLabel(Sender).Parent is TPanel then
TmpPanel := (TLabel(Sender).Parent) as TPanel;
end
else if Sender is TPanel then begin
TmpPanel := (Sender) as TPanel;
end
else Exit;
TmpPanel.ParentColor := True;
end;
Das ist nun ungetestet, wie würde ich da aber das Hint anzeigen?
Ist das wirklich Performanter?
Edit: Proceduren geändert!