AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mauszeiger im Form oder nicht? Ereigniss?

Ein Thema von richard_boderich · begonnen am 8. Apr 2005 · letzter Beitrag vom 8. Apr 2005
Antwort Antwort
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

Mauszeiger im Form oder nicht? Ereigniss?

  Alt 8. Apr 2005, 12:03
moin moin,

ich hab eine kleines problem. ich moechte feststellen ob
der mauszeiger in das form bewegt wird oder wieder heraus.
ich kann aber kein passendes ereignis finden?

ich dachte an ein mousemovem aber das ist nicht so ganz das was ich brauche,
da dieses ereignis bei jeder mausbewegung ausloest.
ich will es aber so haben, das nur ein eregnis eintritt, wenn der mauszeiger in
den clientberich des forms eintritt und wieder heraus bewegt wird.

hoffe ihr habt da nen tipp für mich,thx im vorraus.

bis denne,

euer richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Mauszeiger im Form oder nicht? Ereigniss?

  Alt 8. Apr 2005, 13:26
Nimm die beiden folgenden event handler in deine Form auf:
Delphi-Quellcode:
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#3

Re: Mauszeiger im Form oder nicht? Ereigniss?

  Alt 8. Apr 2005, 14:10
hi marabu,

danke erstmal für deine antwort, ich hab das jetz folgendermaßen geloest.

Delphi-Quellcode:

procedure aufklappen;
begin
form1.label2.caption:='ok';
form1.height:=200;
end;

procedure zuklappen;
begin
form1.label2.caption:='false';
form1.Height:=30;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (mouse.cursorpos.x > form1.Left) and (mouse.cursorpos.x < form1.Left+form1.width) and
   (mouse.CursorPos.y>form1.Top) and (mouse.CursorPos.y < form1.top+form1.height) then aufklappen
else zuklappen;
end;
ist aber sehr naja wie so ich es ausdrücken, einmal brauch ich nen timer und es muss doch auch enfacher gehn oder ?
das mit der message hab ich auch schon gelesen, aber ich hab wenig erfahrung mit WMI, vielleicht kannst du mir ja da
noch etwas helfen. und deinen code mal etwas erläutern.

bis denne,

richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Mauszeiger im Form oder nicht? Ereigniss?

  Alt 8. Apr 2005, 14:28
Das könnte etwa so aussehen:

Delphi-Quellcode:

interface

type
  TMyForm = class(TForm)
    ...
  private
    ...
    FMouseInForm: boolean;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  public
    property MouseInForm: boolean read FMouseInForm;
  end;


implementation

procedure TMyForm.CMMouseEnter(var Message: TMessage);
begin
  FMouseInForm := true;
end;

procedure TMyForm.CMMouseLeave(var Message: TMessage);
begin
  FMouseInForm := false;
end;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Mauszeiger im Form oder nicht? Ereigniss?

  Alt 8. Apr 2005, 14:34
mit dem cm_mouseenter, cm_mouseleave funktioniert nur bedingt. Wenn man ein Panel über die gesammte form legt und BorderStyle auf bsNone so bekommt man die messages nicht weil die maus eben nie das Form entered sondern nur das panel was darüber liegt. Die einzig sichere methode dürfte ein lokaler mousehook sein, bzw. die timervariante.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Mauszeiger im Form oder nicht? Ereigniss?

  Alt 8. Apr 2005, 16:59
Vielleicht hilft das:

Delphi-Quellcode:

interface

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    FMouseInForm: boolean;
    procedure OnIdle(Sender: TObject; var Done: Boolean);
  public
    property MouseInForm: boolean read FMouseInForm;
  end;

implementation

procedure TForm1.OnIdle(Sender: TObject; var Done: Boolean);
var
  pt: TPoint;
begin
  GetCursorPos(pt);
  FMouseInForm := PtInRect(ClientRect, ScreenToClient(pt));
  Done := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnIdle := OnIdle;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:33 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