AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Form schließen wenn Mauszeiger d.Form verläßt ?
Thema durchsuchen
Ansicht
Themen-Optionen

Form schließen wenn Mauszeiger d.Form verläßt ?

Ein Thema von Vader · begonnen am 23. Jun 2004 · letzter Beitrag vom 29. Jun 2004
Antwort Antwort
Seite 3 von 4     123 4      
Muetze1
(Gast)

n/a Beiträge
 
#21

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 24. Jun 2004, 12:17
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#22

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 24. Jun 2004, 12:25
das flackern von Form2 verhinderst du indem du aus
form2.Show; ,
if not form2.visible then form2.show; machst.

Worauf willst du nun eigentlich reagieren? auf das verlassen des Buttons mit der Maus, auf das verlassen von form1 oder von form2?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#23

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 24. Jun 2004, 12:36
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:
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.
BorderStyle hab ich auf bsNone gesetzt, weil es dann korrekt funktioniert...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#24

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 24. Jun 2004, 13:30
hallo sir thornberry


reagiere auf verlassen des button's

mit if not form2.visible then form2.show;
flackert die form noch immer
mfg vader
  Mit Zitat antworten Zitat
Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#25

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 24. Jun 2004, 15:01
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
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#26

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 24. Jun 2004, 15:08
Zitat von Vader:
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.
Hast du den Code so übernommen, oder modifiziert? Der Code funktioniert bei mir genau, wie er soll:
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 von Stevie:
BorderStyle hab ich auf bsNone gesetzt, weil es dann korrekt funktioniert...
Irgendwie klappt die Sache nicht so richtig, wenn das Form nen Rahmen hat, weil das WM_MouseLeave beim Verlassen des ClientBereichs entsteht...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#27

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 24. Jun 2004, 18:50
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
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#28

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 25. Jun 2004, 13:08
Ok, ich dachte, weil...
Zitat von Vader:
ich möchte gerne das die form geschlossen wird wenn ich mit dem mauszeiger die form verlasse.
Dann musste folgendes machen:
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#29

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 26. Jun 2004, 17:23
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#30

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 26. Jun 2004, 17:36
Hai Vader,

ich habe mal ein Testprojekt angehängt. Evntuell ist es ja so wie Du möchtest
Angehängte Dateien
Dateityp: zip beispiel_966.zip (4,0 KB, 10x aufgerufen)
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 06:58 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