Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Image auf die mit der Maus angeklickten Position setzen (https://www.delphipraxis.net/166894-image-auf-die-mit-der-maus-angeklickten-position-setzen.html)

newmusicslamer 4. Mär 2012 17:21

Delphi-Version: 7

Image auf die mit der Maus angeklickten Position setzen
 
Hallo!

Ich habe ein Problem ich will dass ein Image dorthin wandert, wohin man vorher mit der Maus einmal geklickt hat.
Ich stelle mir das ungefähr so vor:
Code:
procedure TForm1.FormClick(Sender: TObject);
begin
image1.Left := MouseClick.left ;
image1.top := MouseClick.top ;
end;
:?:

Ich hoffe ihr könnt mir helfen!

Jonas Shinaniganz 4. Mär 2012 17:23

AW: Image auf die mit der Maus angeklickten Position setzen
 
Die Mausposition könnte dir helfen!
Delphi-Quellcode:
var
  p: TPoint;
begin
  p := Mouse.CursorPos;
Dann hast du p.X und p.Y

Popov 4. Mär 2012 17:26

AW: Image auf die mit der Maus angeklickten Position setzen
 
Bitte beachten, dass Mouse.CursorPos die globalen Werte liefert. Wenn man also nur auf dem eigenen Formular arbeitet, oder Komponente, dann OnMouseDown nutzen oder Werte anpassen.

himitsu 4. Mär 2012 17:42

AW: Image auf die mit der Maus angeklickten Position setzen
 
OnClick
OnMouseUp
OnMouseDown

Luckie 4. Mär 2012 17:59

AW: Image auf die mit der Maus angeklickten Position setzen
 
Zitat:

Zitat von Popov (Beitrag 1154472)
Bitte beachten, dass Mouse.CursorPos die globalen Werte liefert. Wenn man also nur auf dem eigenen Formular arbeitet, oder Komponente, dann OnMouseDown nutzen oder Werte anpassen.

Oder mit ScreenToClient umrechnen.

newmusicslamer 4. Mär 2012 18:03

AW: Image auf die mit der Maus angeklickten Position setzen
 
Wie kann ich p (den Point) als Image Pos nehmen?

Jonas Shinaniganz 4. Mär 2012 18:29

AW: Image auf die mit der Maus angeklickten Position setzen
 
Hi,

Du hast ja schon:

Zitat:

Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
image1.Left := MouseClick.left ;
image1.top := MouseClick.top ;
end;

Jetzt könntest du doch versuchen:

Delphi-Quellcode:
image1.Left := p.X;
Bedenke dabei aber:

Zitat:

Oder mit ScreenToClient umrechnen.
ScreenToClient(p).X ...

newmusicslamer 4. Mär 2012 18:40

AW: Image auf die mit der Maus angeklickten Position setzen
 
Jetzt habe ich es mit diesem Code versucht:
Code:
procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
  p: TPoint ;
begin
 image4.Visible := true ;
 image4.left := p.Y ;
 image4.top := p.X ;
 p := Mouse.CursorPos ;
end;
aber das Bild verschwindet irgendwo im Nirgendwo. Es geht auch nicht mit image4.left := p.X und dann halt bei top das Y

Jonas Shinaniganz 4. Mär 2012 19:00

AW: Image auf die mit der Maus angeklickten Position setzen
 
Dass das Bild 'verschwindet' liegt daran, dass es auserhalb der Form liegt.

Du musst, bevor du die left/top Werte setzt noch P konvertieren.

nicht :

Zitat:

Delphi-Quellcode:
image4.left := p.Y ;

sonder :

Delphi-Quellcode:
 image4.left := ScreenToClient(p).Y

newmusicslamer 4. Mär 2012 19:06

AW: Image auf die mit der Maus angeklickten Position setzen
 
geht nicht wandelt er anscheinend immer noch nicht um.
Bei mir sieht es jetzt so aus:
Code:
procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
  p: TPoint ;
begin
 image4.Visible := true ;
 image4.left := ScreenToClient(p).Y ;
 image4.top := ScreenToClient(p).X ;
 p := Mouse.CursorPos ;
end;

Luckie 4. Mär 2012 19:22

AW: Image auf die mit der Maus angeklickten Position setzen
 
Ähm, du weißt aber schon dass die Anweisung von oben nach unten abgearbeitet werden und nicht von unten nach oben?

Jonas Shinaniganz 4. Mär 2012 19:39

AW: Image auf die mit der Maus angeklickten Position setzen
 
Zitat:


image4.left := ScreenToClient(p).Y ;
image4.top := ScreenToClient(p).X ;
p := Mouse.CursorPos ;

Okay du bist der Bundeskanzler.

Erst sagst du dem Protokollanten, den du immer bei dir hast, er soll die Werte X und Y aufschreiben.

Dann schreibt der Protokollanten etwas auf. Danach sagst du dem Protokollanten, was X und Y ist.

Aber er hat schon geschrieben...

Du müsstest das ganze noch in die Richtige Reihenfolge bringen.

himitsu 4. Mär 2012 19:54

AW: Image auf die mit der Maus angeklickten Position setzen
 
Es sind nicht zufällig jemandem die übergebenen Parameter des OnMouseDown-Ereignisses aufgefallen?
:wall:

Jonas Shinaniganz 4. Mär 2012 21:25

AW: Image auf die mit der Maus angeklickten Position setzen
 
himitsu hat absolut Recht, da du inzwischen das Event gewechselt hast kannst du einfach die Parameter benutzen.

Delphi-Quellcode:
procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState;[B] X, Y: [/B] Integer);
Delphi-Quellcode:
 

image4.left := Y;
image4.top := X;

DeddyH 4. Mär 2012 22:06

AW: Image auf die mit der Maus angeklickten Position setzen
 
Jetzt noch richtig herum, und es wird ein Schuh draus.
Delphi-Quellcode:
Image4.Left := X;
Image4.Top := Y;

newmusicslamer 5. Mär 2012 15:18

AW: Image auf die mit der Maus angeklickten Position setzen
 
Dankeschön an alle! Mir ist es auch heute Morgen eingefallen. Der Standard Fehler von mir :(

*geschlossen*

dillipp 5. Mär 2012 16:08

AW: Image auf die mit der Maus angeklickten Position setzen
 
Wenn ich das bei mir versuche, bekomme ich immer nur Undefinierter Bezeichner "Mouse".
Liegt das an meiner alten Delphi Version?

Bummi 5. Mär 2012 16:14

AW: Image auf die mit der Maus angeklickten Position setzen
 
Wenn es bei Dir in Controls die Klasse TMouse nicht gibt nimm etwas in der Art
Delphi-Quellcode:
var
 p:TPoint;
begin
   GetCursorPos(p);
   Caption := IntToStr(p.X) +' - ' + IntToStr(p.y);
end;

dillipp 5. Mär 2012 18:05

AW: Image auf die mit der Maus angeklickten Position setzen
 
Danke, jetzt klappts


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