Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OnMouseEnter/-Over/-Leave für beliebige Komponente? (https://www.delphipraxis.net/121068-onmouseenter-over-leave-fuer-beliebige-komponente.html)

sirius 24. Sep 2008 19:48

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?
 
Du kannst ja während des Veränderns des VST durch/über eine Variable ein weiteres "Verändern" blocken.

MCXSC 24. Sep 2008 20:01

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?
 
Hm und wie z.B.? Ich hab schon versucht, in dad "VST_Minimize" eine Bedingung einzubauen (z.B. if width = 400), aber auch das klappt nicht...

sirius 24. Sep 2008 20:10

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?
 
Weiß auch nicht genau. Vielleicht in der Case-Anweisung:
Delphi-Quellcode:
if not MouseMsgOnWork then //Feld der Klasse
begin
  MouseMsgOnWork:=true;
  try
    case msg.msg of
    ...
    end;
  finally
    MouseMsgOnWork:=false;
  end;
end;
vielleicht kommen zu viele Messages hintereinander. Aber ich vermute grad fast, dass dies das Problem nicht löst.

MCXSC 24. Sep 2008 20:17

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?
 
Zitat:

Zitat von sirius
Aber ich vermute grad fast, dass dies das Problem nicht löst.

Richtig. :(

sirius 25. Sep 2008 09:22

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?
 
Dann würde mir noch einfallen, einen Timer zu benutzen (ist nicht so schön, verhindert aber gleich generell ein Flackern) Damit schaffst du dir eine Art zeitliche Hysterese.

Delphi-Quellcode:
type ...
     ...
     Timer:TTimer;
  private
    ...
    MsgMouseOnWork:Boolean; //mit false initialisieren
    ...
    procedure VST_Expand;
    procedure VST_Minimize;
    procedure VST_StartTimer;
  public
    { Public-Deklarationen } 
  end;

...

procedure TForm2.VST_StartTimer;
begin
  MsgMouseOnWork:=true;
  Timer.enabled:=true;
end;

procedure TForm2.TimeronTimer(...); //Timerereignis
begin
  MsgMouseOnWork:=false;
  Timer.enabled:=false;    
end;
procedure TForm2.VST_Expand;
begin
  if not MsgMouseOnWork then
  begin
    VST.Align := alNone;
    VST.Width := 400;
    VST.Height := Panel2.Height -10;
    ---> VST.Parent := Form2; <--- 
    VST_startTimer;
  end;
end;

procedure TForm2.VST_Minimize;
begin
  if not MsgMouseOnWork then
  begin
    ---> VST.Parent := Panel2; <--- 
    VST.Align := alClient;
    VST_starttimer;
  end;
end;
Edit: Ahh, das ist auch noch nicht vollständig. Du musst dir trotzdem bei jeder MEssage merken, welcher Zustand gerade aktuell ist, und den dann im Timer-Ereignis schließlich einstellen.

MCXSC 26. Sep 2008 03:21

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?
 
Ja, so habe ich es ja bisher auch... Aber die Sache mit einem direkten MouseOver wäre ja etwas sauberer^^

sirius 26. Sep 2008 09:22

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?
 
Für mich ist halt grad schwer das Problem zu entdecken, weil es ja in D7 funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 Uhr.
Seite 2 von 2     12   

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