Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ein OnHover nachbauen / benutzen (https://www.delphipraxis.net/140535-ein-onhover-nachbauen-benutzen.html)

Cyberaxx 20. Sep 2009 02:05


ein OnHover nachbauen / benutzen
 
Hallo Delphi Gemeinde

Ich programmiere gerade eine Benutzerliste, naja ich versuche es zumindest ;)
Aufgebaut ist es Server / Gruppe / Benutzer
Die jeweilige Liste hat ein Panel als Header, darin enthalten in Image(Align=Left) und ein Label(Align=Client)
Im eingeklappten Modus ist nur das Panel mit dem Label und dem Image zu sehen.
Ich würde gerne eine Art Hover mit drin haben, sobald man mit der Maus nun über dieses Panel gleitet, soll die Farbe des Panels geändert werden, solange sich die Maus innerhalb des Panels befindet.
Ich habe hier schon gesucht und einiges ausprobiert, ich bekomme allerdings keine Lösung hin.
Das MouseOver wird ja nur aufgerufen wenn sich die Maus innerhalb befindet und das auch nur wenn sich keine weiteren Komponenten darauf befinden.

Gibt es da eine Möglichkeit wie man dies lösen könnte?
Code:
[+] Server1 [0/6] <-- On Hover
[-] Server2 [10/33]
   [+] Gruppe1 <-- On Hover
   [+] Gruppe2
   [-] Gruppe3
      - User1 <-- On Hover
      - User2
[+] Server3 [0/2]
Hoffe mir kann hier jemand helfen :)

Gruß
Daniel

SirThornberry 20. Sep 2009 07:37

Re: ein OnHover nachbauen / benutzen
 
eine wirklich funktionierende Variante habe ich bei so etwas nur per Timer hin bekommen in dem ständig geprüft wird ob sich der Mauscursor noch über der Komponente befindet.

hathor 20. Sep 2009 11:53

Re: ein OnHover nachbauen / benutzen
 
Delphi-Quellcode:
procedure TForm1.Panel1MouseLeave(Sender: TObject);
begin
Panel1.Color:= clgreen;
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Panel1.Color:= clred;
end;

DeddyH 20. Sep 2009 11:57

Re: ein OnHover nachbauen / benutzen
 
Dann zieh die Maus mal extrem schnell über das Panel. Ich habe die Erfahrung gemacht, dass das MouseLeave-Event in dem Fall nicht (immer) ausgelöst wird.

hathor 20. Sep 2009 12:07

Re: ein OnHover nachbauen / benutzen
 
Wie schnell - was ist extrem?
Bei mir funktioniert es.
Vielleicht musst Du das Betriebssystem mal "aufräumen"...

DeddyH 20. Sep 2009 12:10

Re: ein OnHover nachbauen / benutzen
 
Was hat das mit dem Betriebssystem zu tun? Und bei unseren Kunden ist der Satz "bei mir funktioniert es" einer der unbeliebtesten :lol:

hathor 20. Sep 2009 12:22

Re: ein OnHover nachbauen / benutzen
 
Zitat:

Zitat von DeddyH
Was hat das mit dem Betriebssystem zu tun? Und bei unseren Kunden ist der Satz "bei mir funktioniert es" einer der unbeliebtesten :lol:

Das klingt jetzt ziemlich aggressiv!

Letztendlich muss es ja nur bei Cyberaxx funktionieren und nicht bei Dir!

DeddyH 20. Sep 2009 12:22

Re: ein OnHover nachbauen / benutzen
 
War aber nicht so gemeint.

jaenicke 20. Sep 2009 12:33

Re: ein OnHover nachbauen / benutzen
 
Normalerweise wird das immer ausgelöst. Ich habe bis jetzt noch nie festgestellt, dass es nicht klappt, wenn sonst alles richtig läuft.

Wo es Probleme gab:
  • Bei Verzögerungen bei der Botschaftsbehandlung. Zum Beispiel wegen langsamen Zeichenoperationen. Ein Problem z.B. bei Toolbar-Komponenten.
  • Bei unsauberer eigener Umsetzung in alten Delphiversionen, in denen es die Ereignisse noch nicht gab.
  • Wenn bestimmte "Systemerweiterungen" sich einklinken um z.B. systemweite Mausgesten oder ähnliches umzusetzen.

Auf einem sauberen System und normal laufenden Delphiprogrammen bzw. auch Programmen anderer Sprachen und den direkten Windows Botschaften habe ich noch nie Fehler damit reproduzieren können. :stupid:

DeddyH 20. Sep 2009 12:47

Re: ein OnHover nachbauen / benutzen
 
Zitat:

Zitat von jaenicke
Bei Verzögerungen bei der Botschaftsbehandlung. Zum Beispiel wegen langsamen Zeichenoperationen.

Wenn man Komponenten schreibt, die von TGraphicControl oder TCustomControl abgeleitet sind, kann es schon passieren, dass die Botschaft nicht mehr ankommt. Ich denke, darauf wollte auch Jens hinaus. Und den :stupid: kannst Du Dir in Zukunft sparen, OK?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz