Delphi-PRAXiS

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 Trackbar Mouseleave-Event (https://www.delphipraxis.net/44364-trackbar-mouseleave-event.html)

Alex_ITA01 18. Apr 2005 15:21


Trackbar Mouseleave-Event
 
Hallo erstmal,
ich habe mal eine Frage bezüglich einer Trackbar und Mouseleave-Events.
Gibt es eine Möglichkeit einer Trackbar ein Mouseleave-Event hinzuzufügen oder auf eine MouseLeave-Event zu reagieren?
Hintergrund ist: Ich möchte beim "Verlassen" der Trackbar, dass sie versteckt wird. Es ist aber nicht unbedingt vorstellbar das der Fokus sich ändert (also OnExit geht demzufolge nicht).

Danke für jeden Tip.
MFG Alex

Sharky 19. Apr 2005 05:40

Re: Trackbar Mouseleave-Event
 
Hai Alex,

das hier wäre eine mögliche Lösung:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    TrackBar1: TTrackBar;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    FTrackEnter : Boolean;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CMMouseEnter(var Message: TMessage);
var
  ptWork : TPoint;
begin
  GetCursorPos(ptWork);
  if WindowFromPoint(ptWork) = TrackBar1.Handle then //Maus ist über der TrackBar1
  begin
    FTrackEnter := True;
  end;
end;

procedure TForm1.CMMouseLeave(var Message: TMessage);
var
  ptWork : TPoint;
begin
  GetCursorPos(ptWork);
  if (WindowFromPoint(ptWork) <> TrackBar1.Handle) and
     (FTrackEnter) then //Maus verlässt die TrackBar1
  begin
    TrackBar1.Visible := False;
    FTrackEnter := False;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TrackBar1.Visible := True;
end;

Alex_ITA01 19. Apr 2005 07:56

Re: Trackbar Mouseleave-Event
 
Hi Sharky,
danke für den Source aber leider habe ich da eine Kleinigkeit vergessen zu erzählen. :wall:

Ich befinde mich innerhalb meiner eigenen Komponente und im MouseMove (dieser eigenen Kompo) lasse ich die Trackbar (die ist im privat von meiner Kompo deklariert und hat das Parent meiner Kompo) sichtbar werden.

Delphi-Quellcode:
  FTrackbar := TTrackBar.Create(Self);
  FTrackbar.Parent    := Self.Parent;
Die Trackbar ist einfach nur zum verstellen eines Wertes da und sobald der User sich von der Trackbar wegbewegt, dann soll die Trackbar wieder versteckt werden. Leider funktioniert dein Source nicht (er springt zumindest nie in die if-Bedingung hinein).
Hättest du eine Idee, wie ich die Trackbar verschwinden lassen kann?

MFG Alex

Sharky 19. Apr 2005 07:59

Re: Trackbar Mouseleave-Event
 
Hai Alex,

dann sollte es doch möglich sein das Du eine eigene TTrackBar ableitest und dieser dann die beiden Ereignisse beibringst.
Diese abgeleitete verwendest Du dann in deiner Komponente.

Alex_ITA01 19. Apr 2005 08:03

Re: Trackbar Mouseleave-Event
 
Ah, du meinst eine Trackbar mit den "MouseEvents" (Leave udn Enter) erstellen und dann in meiner Kompo verwenden? Stimmt, auf die Idee bin ich noch nicht gekommen.
Danke ich werde es mal testen.
MFG Alex

Alex_ITA01 19. Apr 2005 08:11

Re: Trackbar Mouseleave-Event
 
Jo, danke Sharky. Hat Super geklappt.
Habe mir wie du sagtest ne Trackbar "neu" erstellt und die zwei Events hinzugeschrieben und es klappt super.
MFG Alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 Uhr.

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