Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mauposition auf beweglichem Image ermitteln (https://www.delphipraxis.net/158707-mauposition-auf-beweglichem-image-ermitteln.html)

Dunkelbunt27 27. Feb 2011 17:22

Mauposition auf beweglichem Image ermitteln
 
Hallo Delphi-PRAXIS,

ich versuche die aktuelle Klick Position auf einem Image, das sich verschieben lässt zu ermitteln.
Wenn man über Mouse.Cursor.Pos.Y des Images (Y-Koordinate) ermittelt, ist dies aber immer auf den gesamten sichtbaren Bereich des Fensters bezogen.
Da man das Image auch nur zum Teil sehen kann, in dem man es über den unteren Rand rutschen lässt, ist es aber schwierig rauszubekommen, wo man auf dem Image hingeklickt hat, da egal wo das Objekt ist, wenn die Maus sich nicht bewegt, aber das Objekt, liefert Mouse.Cursor.Pos.Y immer das gleiche.

Gibt es eine Möglichkeit Koordinaten auf einem Objekt abzufragen, so wie es mit der Form ist?
(Links oben 1:1, rechts unten z.B. 100:100)

FG Dunkelbunt

DeddyH 27. Feb 2011 18:12

AW: Mauposition auf beweglichem Image ermitteln
 
Mouse.CursorPos gibt Dir die Bildschirmkoordinaten zurück. Die kannst Du aber mit ScreenToClient umrechnen, oder Du verwendest ein Ereignis des Images, das Dir die relativen Koordinaten liefert (OnMouseDown).

Dunkelbunt27 27. Feb 2011 18:45

AW: Mauposition auf beweglichem Image ermitteln
 
Liefert mir das OnMouseDown des Images auch mittels Mouse.Cursor.Pos die Koordinaten zurück? Oder was muss ich nehmen?

EDIT: Ich wollte die Koordinaten testweise mal auf einem Label ausgeben:
Delphi-Quellcode:
Testlabel.Caption := 'Y: '+IntToStr(Y)+'  X: '+IntToStr(X);
Es passiert beim klicken aber nichts...

Bummi 27. Feb 2011 19:02

AW: Mauposition auf beweglichem Image ermitteln
 
PointToStr darfst Du AFAIK selbst programieren,
OnMouseXXXX liefert Dir in X und Y die Koordinaten innerhalb Deines Controls zurück.

Dunkelbunt27 27. Feb 2011 19:09

AW: Mauposition auf beweglichem Image ermitteln
 
PointToStr hab ich
Delphi-Quellcode:
function PointToStr(aPoint: TPoint): string;              //Point in String umwandeln
begin
  Result := Format('X: %d | Y: %d',[aPoint.X, aPoint.Y]);  // Format wandelt um
  // %d = Dezimal,        Standardgerüst: %[Index:][-][Width][.Precision]Type
end;
ScreenToClient hilft mir anscheinend noch nicht weiter. Ich denke OnMouseDown wird funktionieren.

Dunkelbunt27 27. Feb 2011 19:49

AW: Mauposition auf beweglichem Image ermitteln
 
Könnte mir jemand spontan einen Grund nennen, wieso mein zur Laufzeit erstelltes Image auf meine eigene OnMouseDown Prozedur nicht richtig auf das klicken reagiert?
Wenn ich ein neues Image einfüge und dann die vordefinierte OnMouseDown nehme, funktioniert alles....

Edit: Sorry für Doppelpost

Bummi 27. Feb 2011 19:53

AW: Mauposition auf beweglichem Image ermitteln
 
weist Du Deinem zur Laufzeit erzeigten Image eine OnMouseDown - Methode zu?

Dunkelbunt27 27. Feb 2011 20:02

AW: Mauposition auf beweglichem Image ermitteln
 
Also, ich hab es so gemacht:
Delphi-Quellcode:
public
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
...
procedure TProjekt.ImageMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   Testlabel.Caption := 'X: '+ IntToStr(X)+ 'Y: '+IntToStr(Y);
end;
Ist doch richtig, oder?

Bummi 27. Feb 2011 20:25

AW: Mauposition auf beweglichem Image ermitteln
 
ich meinte etwas in der Art ....
Delphi-Quellcode:
with TImage.Create(self) do
  begin
    Parent := Form1;
    Left := 10;
    Top := 20;
    OnMouseDown := ImageMouseDown;
    ....
  end;

Dunkelbunt27 27. Feb 2011 20:49

AW: Mauposition auf beweglichem Image ermitteln
 
Ja sowas in der Art habe ich.
Nur das
Code:
OnMouseDown := ImageMouseDown;
fehlt

Danke... mal schauen obs klappt

EDIT: Ja, jetzt funktionierts. Danke.


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