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 CM_MOUSELEAVE funktioniert nicht... (https://www.delphipraxis.net/87183-cm_mouseleave-funktioniert-nicht.html)

patti 24. Feb 2007 17:20


CM_MOUSELEAVE funktioniert nicht...
 
Hey,

Ich habe ein Problem mit CM_MOUSELEAVE und ich glaube ich verzweifle bald :freak:. Hier erstmal der Code:

Delphi-Quellcode:
unit haupt;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
    procedure MouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
    procedure MouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.MouseEnter(var Msg: TMessage);
begin
  Color := clGreen;
end;

procedure TForm1.MouseLeave(var Msg: TMessage);
begin
  Color := clRed;
end;

end.
Ich habe das schonmal in einem anderen Programm gemacht und da hat alles wunderbar funktioniert, aber jetzt geht es nicht mehr :(

Mach ich irgendwas falsch?

Danke im Voraus,
P@Tti

SirThornberry 24. Feb 2007 17:25

Re: CM_MOUSELEAVE funktioniert nicht...
 
liegt eventuell irgendetwas auf deiner Form (Panel etc.) was das Form selbst verdeckt?

patti 24. Feb 2007 17:29

Re: CM_MOUSELEAVE funktioniert nicht...
 
Nein, es ist im Moment nur die Form, komischerweise funktionier CM_MOUSEENTER schon, also beim Überfahren mit der Maus wird es grün.

Ich habe alles wie bei meinem früheren Programm gemacht, aber jetzt klappt es nicht mehr.

P@Tti

patti 24. Feb 2007 17:38

Re: CM_MOUSELEAVE funktioniert nicht...
 
Übrigens habe ich gesehen, dass dieser Code genauso in der DP zu finden ist, umso mehr wundert es mich, dass es nicht funktioniert...

P@Tti

Christian Seehase 24. Feb 2007 17:45

Re: CM_MOUSELEAVE funktioniert nicht...
 
Moin Patti,

Zitat:

Zitat von patti
Übrigens habe ich gesehen, dass dieser Code genauso in der DP zu finden ist, umso mehr wundert es mich, dass es nicht funktioniert...

Bist Du sicher, dass Du den Code im Zusammenhang mit einem Formular gesehen hast?
Ich habe es gerade einmal ausprobiert, und musste feststellen, dass es funktioniert, allerdings nur einmal, als ich mit dem Cursor Richtung Caption gegangen bin.
Wenn Du aber die linke Maustaste gedrückt hast, wenn sich der Cursor über dem Formular befindet, und dann, mit gedrückter Taste, vom Formular runtergehst, funktioniert es immer.

DGL-luke 24. Feb 2007 18:57

Re: CM_MOUSELEAVE funktioniert nicht...
 
Hallo,

da MSDN kennt MSDN-Library durchsuchenCM_MOUSEENTER/LEAVE gar nicht... dafür aber MSDN-Library durchsuchenWM_MOUSELEAVE, ENTER aber nicht.

Äußerst komisch, das ganze :gruebel:

Was ist denn mit den VCL-Events OnMouseEnter/Leave? Die machens genauso... ist in TWinControl deklariert...

SirThornberry 24. Feb 2007 19:02

Re: CM_MOUSELEAVE funktioniert nicht...
 
dafür gibt es MSDN-Library durchsuchenWM_MOUSEHOVER. Findet man alles wenn man im MSDN sich das ganze mal durchliest.

TStringlist 24. Feb 2007 19:12

Re: CM_MOUSELEAVE funktioniert nicht...
 
Zitat:

Ich habe es gerade einmal ausprobiert, und musste feststellen, dass es funktioniert, allerdings nur einmal, als ich mit dem Cursor Richtung Caption gegangen bin.
Wenn Du aber die linke Maustaste gedrückt hast, wenn sich der Cursor über dem Formular befindet, und dann, mit gedrückter Taste, vom Formular runtergehst, funktioniert es immer.
Und das heißt natürlich nichts anderes als: Es funktioniert deswegen nicht, weil die Mouse-Messages nach dem Verlassen deiner Form damit ja auch gar nicht mehr an deine Form abgesendet werden, sondern stattdessen dann an die Form, über der die Maus danach herausgekommen ist. Verlässt Du deine Form über die Title-Bar, dann existiert natürlich auch noch genug Zeit, diese Message auch überhaupt noch erhalten zu können. Und hälst Du eine Maustaste gedrück, dann unterbleibt dieser Wechsel des Mouse-Message-Empfängers und zwar wegen des dann noch aktiven Mouse-capturings.

patti 25. Feb 2007 11:32

Re: CM_MOUSELEAVE funktioniert nicht...
 
Sorry, dass ich erst jetzt antworte, aber ich war gestern abend nicht mehr online...

Ich habe jetzt einen Timer auf die Form gesetzt mit Interval 10 und als OnTimer-Ereignis ein einfaches
Delphi-Quellcode:
Application.ProcessMessages;
Ist zwar nicht die beste Lösung, funktioniert aber wenigstens...

Danke für eure Antworten und Bemühungen!

P@Tti


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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