AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ein OnHover nachbauen / benutzen

Ein Thema von Cyberaxx · begonnen am 20. Sep 2009 · letzter Beitrag vom 25. Sep 2009
Antwort Antwort
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#1

Re: ein OnHover nachbauen / benutzen

  Alt 25. Sep 2009, 07:56
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!
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz