Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi MouseEnter (https://www.delphipraxis.net/101937-mouseenter.html)

Konse 21. Okt 2007 21:39

Re: MouseEnter
 
ich filtere alle mouseevents die noch vorhanden sind, die von den einzelnen kontrolls beinhalten meist nicht alle.
in der msdnn sind die restlichen für die mouse beschrieben, die du filtern musst.

wie gesagt ist nur ein vorschlag

Gruß Konse

PS:
Dachte du wolltest verhindern dass mit der mouse während des disabled zustandes etwas gemacht wird.

taktaky 21. Okt 2007 21:48

Re: MouseEnter
 
Zitat:

Zitat von Blackheart
...
Ich konnts mir einfach nicht verkneifen - Sorry

Der Code ist super und reagiert wesentlicher schneller als Timer
Delphi-Quellcode:
if ControlAtPos(Form1.ScreenToClient(ptWork), False, True) = Image1 then ...
Nun kommt der Teil 2 und zwar der Teil "then"

Ich möchte damit den Cursor tot machen ohne ihn ausblenden zu müssen.
Den Cursor kann man ausblenden aber der Cursor macht immer was in Hintergrund :mrgreen:

Deswegen möchte ich die sleep() verwenden

Konse 21. Okt 2007 22:15

Re: MouseEnter
 
@Blackheart
weiss nicht ob du es gelesen hast, aber es kam noch ein requirement hinzu...

@taktaky
also wenn du wirklich mit sleep deinen thread für die controlls schlafen legen willst, wie sollen generell die messages von deiner form abgearbeitet werden?

meiner meinung nach bleibt dir nichts übrig ausser die mouseevents für diese region zu filtern, bzw die region zu disablen (was auch nur die nachrichtenbehandlung für ein paar messages ausschaltet)


Falls du es mit sleep schaffst, sag mir bescheid :D

Beste Grüße
Konse

taktaky 21. Okt 2007 23:23

Re: MouseEnter
 
wie kann mit den mouseevents für diese Region (image1) filtern?
Ich möchte den Cursor nicht ausblenden sondern nur seine Wirkung tot machen.

Konse 22. Okt 2007 00:05

Re: MouseEnter
 
hi, also nochmal
wenn du die funktionalität der maus in dieser region verhindern willst, so musst du meiner meinung nach, buttons+buttonwheel deiner maus deaktivieren. diese messages werden einem windowsfenster zugeordnet. Denke in diesem fall wird die form dein window sein, wo du dein image draufhast.

D.h. du filterst deine mousemessages von der form.
In dieser filterprozedur überprüfst du ob sich dein cursor innerhalb dieser region befindet, wenn ja dann eliminierst du diese nachricht (oft mit #0, kommt aber darauf an), ansonsten nicht.

Damit kannst du mit deiner maus in deiner form alles bedienen, nur die region von deinem bild eben nicht.


Hoffe das war etwas verständlicher, ich schreibe meist etwas umständlich ;-)

Beste Grüße
Konse

ps:falls jemandem eine bessere möglichkeit bekannt ist, währe neugierig diese zu erfahren ;-)

sirius 22. Okt 2007 08:40

Re: MouseEnter
 
Du kannst mit MSDN-Library durchsuchenenablewindow Ein Fenster mit einem Schlag "inaktiv" schalten.

oder

Du arbeitest mit TApplicationevents. Speziell dann mit dem Ereignis onMessage. Dort gehen alle Messages an dein Programm durch und du kannst die Mousemessages abfangen, wenn dir danach ist:
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if stopMouseMessages then
    handled:= ((msg.message>= WM_MouseFirst) and (msg.message<= WM_MouseLast));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr.
Seite 2 von 2     12   

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