![]() |
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
Moin!
@Sharky: Zu deiner Code Zusammenfassung: Du könntest doch auch einfach ClientRect/BoundsRect (je nachdem) direkt benutzen der Form, dann brauchst du nicht extra ein Rectangle für die Form zusammenbauen. MfG Muetze1 |
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
das flackern von Form2 verhinderst du indem du aus
Delphi-Quellcode:
,
form2.Show;
Delphi-Quellcode:
machst.
if not form2.visible then form2.show;
Worauf willst du nun eigentlich reagieren? auf das verlassen des Buttons mit der Maus, auf das verlassen von form1 oder von form2? |
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
Ich hab mal etwas rumgebastelt:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Point: TPoint; begin with TForm2.Create(Self) do begin Point.X := Button1.Left; Point.Y := Button1.Top + Button1.Height; Point := Self.ClientToScreen(Point); Left := Point.X; Top := Point.Y; Show; end; end; end.
Delphi-Quellcode:
BorderStyle hab ich auf bsNone gesetzt, weil es dann korrekt funktioniert... :roll:
unit Unit5;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm2 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } procedure WMMouseLeave(var Message: TWMMouse); message WM_MOUSELEAVE; procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE; end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.WMMouseLeave(var Message: TWMMouse); var Point: TPoint; begin GetCursorPos(Point); if not PtInRect(BoundsRect, Point) then Close; end; procedure TForm2.WMMouseMove(var Message: TWMMouseMove); var EventTrack: TTrackMouseEvent; begin EventTrack.dwFlags := TME_LEAVE; EventTrack.hwndTrack := Handle; EventTrack.cbSize := SizeOf(EventTrack); TrackMouseEvent(EventTrack); inherited; end; procedure TForm2.FormCreate(Sender: TObject); begin BorderStyle := bsNone; end; end. |
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
hallo sir thornberry
reagiere auf verlassen des button's mit if not form2.visible then form2.show; flackert die form noch immer mfg vader |
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
hallo stevie,
dein code ist interresant, aber funzt nicht wenn ich mit der maus auf den button komme wird die form2 hinter der form1 erzeugt und ohne fenstertitelleiste und wenn ich von den button runterfahre bleibt die form2. mfg vader |
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
Zitat:
Klick auf dem Button --> Form2 geht unter dem Button auf und schließt sich erst wieder, wenn man drauf war und es wieder verlassen hat... Zitat:
|
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
hallo stevie;
ich will ja nicht auf den button klicken,sonder ich mache es mit onmousemove , und ich will nicht auf form2 mit der maus,weil form2 nur ein infofenster mit label's ist. mfg vader |
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
Ok, ich dachte, weil...
Zitat:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private-Deklarationen } PopupForm: TForm; public { Public-Deklarationen } procedure WndProc(var Message: TMessage); override; end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Point: TPoint; begin if not Assigned(PopupForm) then PopupForm := TForm2.Create(Self); with PopupForm do begin Point.X := Button1.Left; Point.Y := Button1.Top + Button1.Height; Point := Self.ClientToScreen(Point); Left := Point.X; Top := Point.Y; Show; end; end; procedure TForm1.WndProc(var Message: TMessage); begin if Message.Msg = CM_MOUSELEAVE then if Assigned(PopupForm) then if (Message.LParam = Longint(Button1)) then FreeAndNil(PopupForm); inherited; end; end. |
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
hallo stevie,
ersten danke für deine einsatz, aber es funzt nicht, 1. die popupform kommt auf andererposition auf dem bildschirm 2. wenn ich mit der maus auf das popupfenster komme gibts eine exception !!! sonst gehts maus auf button >>> popupfenster kommt maus weg vom button popupfenster <<<<weg. mfg vader |
Re: Form schließen wenn Mauszeiger d.Form verläßt ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hai Vader,
ich habe mal ein Testprojekt angehängt. Evntuell ist es ja so wie Du möchtest |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 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 by Thomas Breitkreuz