![]() |
Problem mit MouseMove Ereignis
Hallo alle zusammen :-D
Ich habe folgende Frage: Gibt es eine Möglichkeit, ein bestimmtes OnMouseMove Ereignis, was auf einem Panel ist, auch auf ein Image anzuwenden? (Es soll also von dem MouseMove Ereignis des Images auf das MouseMove Ereignis vom Panel verweisen!) Im Vorraus schonmal vielen Dank :o |
Re: Problem mit MouseMove Ereignis
Du kannst doch die Methode einfach im OI zuweisen. Oder hab ich das mal wieder falsch verstanden?
|
Re: Problem mit MouseMove Ereignis
Ja kann man schon, nur leider ist dann ein Bild, was sich in meinem Programm
immer unter der Maus, innerhalb des Panels, bewegt, nicht mehr über dem anderen Bild, was sich automatisch innerhalb des Panels bewegt. |
Re: Problem mit MouseMove Ereignis
Kannst Du das mal etwas näher erläutern, damit ich Opa verstehe, was Du machen willst?
|
Re: Problem mit MouseMove Ereignis
Das soll eine Art Spiel werden:
1. Ein Image(mit einem Zielscheibenbild) bewegt sich automatisch innerhalb eines Panels. 2. Unter der Maus ist dann ein zweites Image (mit einem Zielkreuzbild), was sich immer mit der Maus bewegt. 3. Und wenn das Zielkreuz über dem Image mit der Zielscheibe ist, und man dann klickt, bekommt man immer einen Punkt. Problem: Wenn die Maus über dem Zielscheibenbild ist, bewegt sich das Zielkreuzbild nicht mehr weiter, da das MouseMove Ereignis nur auf dem Panel ist. |
Re: Problem mit MouseMove Ereignis
Wäre es nicht einfacher und sinnvoller, das Fadenkreuz als Cursor einzubinden?
|
Re: Problem mit MouseMove Ereignis
Wenn ich das gleiche MouseMove Ereignis auch auf dem Zielscheibenbild mache, dann wird das Zielkreuz an eine falsche Position bewegt!
Code (MouseMove Ereignis auf dem Panel):
Delphi-Quellcode:
procedure TSDIAppForm.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin Image3.Left:=X-round(Image3.Width/2); Image3.Top:=Y-round(Image3.Height/2); Application.ProcessMessages; end; Code (Click Ereignis auf dem ZielscheibenImage):
Delphi-Quellcode:
procedure TSDIAppForm.Image4Click(Sender: TObject);
var Temp, Temp1:Integer; begin Temp:=Image4.Left+Image4.Width; Temp1:=Image4.Top+Image4.Height; if Start=true then begin if (Image3.Left<=Temp) and (Image3.Left>=Image4.Left) and (Image3.Top<=Temp1) and (Image3.Top>=Image4.Top) then begin //ShowMessage('Treffer'); Punkte:=Punkte+1; PunktePanel.Caption:='aktuelle Punktzahl: '+InttoStr(Punkte); end; end; end; PS: Das ist immoment nur ein Testprogramm der Funktionen :-D |
Re: Problem mit MouseMove Ereignis
Ja das habe ich auch schonmal versucht, hat aber bei mir nicht funktioniert.
Es wäre nett, wenn du/sie mir mal einen Beispielcode dafür geben könntest/köntten. Ich werde erst wieder ab ca. 18:30 Uhr antworten können, da ich jetzt weg muss. Vielen Dank Tim :) |
Re: Problem mit MouseMove Ereignis
Wie gesagt, ich würde mir einen Fadenkreuz-Cursor basteln und OnClick nachsehen, ob sich der Cursor innerhalb des Images befindet (was beim Image.OnClick ja irgendwie immer der Fall sein müsste :lol:).
[edit] ![]() |
Re: Problem mit MouseMove Ereignis
Jaa vielen Dank DeddyH es funktioniert alles! :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz