Re: onMouseMove abfragen?
Zitat:
in onMouseMove. Gruß Heike |
Re: onMouseMove abfragen?
Im MouseMove des Panels kann er ja nur True werden weil ja nur ausgelöst wird, wenn Maus drüber ist :zwinker:. Du müsstest also auch neben deinem Panel abfragen.
:gruebel: Timer, onIdle, onMouseMove der restlichen Anwendung, ... EDIT: auch Morgeeen :hi: |
Re: onMouseMove abfragen?
Eine sauberere Lösung dürfte aber sein, wenn man die Nachrichten MouseLeave/MouseEnter abfängt. Dürfte es einiges zu im Forum geben.
|
Re: onMouseMove abfragen?
Zitat:
Gruß Heike |
Re: onMouseMove abfragen?
Zitat:
Mfg Ich EDIT: @Gausi: Ja Leave & Enter währen schon gut nur hat das D7-Panel sowas leider nicht :( |
Re: onMouseMove abfragen?
Dass das D7-Panel das nicht hat, ist schon klar, aber von Panel ne Komponente abzuleiten, die das hat, ist nicht wirklich schwierig. Hab ich vor kurzem mit TImage gemacht, und ich habe von Komponentenentwicklung keinen Plan ;-) - Wenn ich wieder zu hause bin, kann ich den Code mal rauskramen, falls Bedarf besteht.
|
Re: onMouseMove abfragen?
Zitat:
Gruß Heike |
Re: onMouseMove abfragen?
Hi,
Subclassing wäre noch eine andere Möglichkeit.
Delphi-Quellcode:
private
OldWindowProc: TWndMethod; procedure PanSubClassWndProc(var Message: TMessage); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.PanSubClassWndProc(var Message: TMessage); begin case Message.Msg of CM_MOUSELEAVE: Panel1.Color := clBlack; CM_MOUSEENTER: Panel1.Color := clGreen; end; OldWindowProc(Message); end; procedure TForm1.FormCreate(Sender: TObject); begin OldWindowProc:= Panel1.WindowProc; Panel1.WindowProc:= PanSubClassWndProc; end; procedure TForm1.FormDestroy(Sender: TObject); begin Panel1.WindowProc:= OldWindowProc; end; |
Re: onMouseMove abfragen?
Ich meinte hlat sowas in der Art:
Delphi-Quellcode:
unit Mousepanel;
interface uses Messages, SysUtils, Classes, Controls, ExtCtrls; type tMousepanel = class(TPanel) private { Private-Deklarationen } FOnMouseEnter: TNotifyEvent; FOnMouseLeave: TNotifyEvent; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; protected { Protected-Deklarationen } public { Public-Deklarationen } published { Published-Deklarationen } property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end; procedure Register; implementation procedure Register; begin RegisterComponents('Beispiele', [tMousepanel]); end; procedure tMousepanel.CMMouseEnter(var Message: TMessage); begin if assigned(FOnMouseEnter) then FOnMouseEnter(Self); end; procedure tMousepanel.CMMouseLeave(var Message: TMessage); begin if assigned(FOnMouseLeave) then FOnMouseLeave(Self); end; end. |
Re: onMouseMove abfragen?
Vielen Dank, an Euch Beiden. Habe jetzt einiges lernen können. Ich habe beides getestet. Klappt sehr gut. Hier in meinem Fall habe ich es mit Subclassing gemacht. Das kannt ich noch garnicht. Toll was damit alles anfangen kann. Die Sache mit dem Panel ableiten ist auch nit schlecht und vorallen sehr gut zu gebrauchen wenn man es in mehreren Anwendungen einbauen möchte.
Nochmals, vielen Dank Gruß Heike |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 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