Autor Beitrag
Jezuz
Hält's aus hier
Beiträge: 1

Win XP, Linux 9.2
D7 Prof
BeitragVerfasst: Mi 13.07.05 17:33 
Salut

Ich progge mir gerade ein kleines Brettspiel für den PC zusammen... Hab aber das Problem, dass ich dafür eigentlich die Position des Mauszeigers im Bezug auf die Paintbox brauche. (Also eben nicht die Cursorposition im Bezug auf den gesammten Bildschirm)

Schon mal im Vorraus Besten Dank

Jezuz
ManuelGS
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 173

Win XP HE, Suse Linux
D6, D7, D2005 Personal
BeitragVerfasst: Mi 13.07.05 17:59 
Hi!
Das ist reine Mathe!
Ich würde das Ereignis der Form "OnMousedown" verwenden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.OnMouseDown....
var posx,posy:integer;
begin
posx:=x-paintbox.width;
posy:=y-paintbox.height;
end;


Dann kannst du natürlich noch Bedingungen einfügen, z.B. ob überhaupt in der Paintbox geklickt wurde, oder auf der Form usw.

Gruß, Manuel.

_________________
"Leben ist gänzlich Bühne und Spiel; so lerne denn spielen
und entsage dem Ernst - oder erdulde das Leid." - Palladas von Alexandria
ScorpionKing
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1150

Win XP

BeitragVerfasst: Mi 13.07.05 19:04 
Zu sagen wäre noch, dass x und y nicht vorgegeben sind!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var p: TPoint;
begin
GetMousePos(p);
x := p.x;
y := p.y;

_________________
Aus dem Urlaub zurück!
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mi 13.07.05 19:16 
Stichwort: Suche in: Delphi-Forum, Delphi-Library "SCREENTOCLIENT". Du übergibst die Koordinaten auf dem Monitor (die du mit GetCursorPos holst) und erhälst die Position auf der Paintbox.

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
ScorpionKing
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1150

Win XP

BeitragVerfasst: Mi 13.07.05 19:19 
Der Code von oben, mit meinem kombiniert ergibt doch das selbe, ohne größeren Aufwand! Warum also schwerer machen, als es ist? :wink:

_________________
Aus dem Urlaub zurück!
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mi 13.07.05 19:38 
Schwerer :shock:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var P:TPoint;
begin
 GetCursorPos(P);
 P:=PaintBox1.ScreenToClient(P);
 // Fertig! P.x und P.y stehen zur Verfügung
Das halte ich für das Einfachste!

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
ScorpionKing
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1150

Win XP

BeitragVerfasst: Do 14.07.05 13:44 
Oh, sorry, stimmt, ist tatsächlich kürzer!

_________________
Aus dem Urlaub zurück!
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Do 14.07.05 14:12 
Zitat:
Warum also schwerer machen, als es ist?

Auch auf die Gefahr, dass ich kleinlich bin oder so. Aber wenn ich mittels der Events OnMouseDown, OnMouseUp und OnMouseMove (der Paintbox wohl gemerkt) das X und Y auswerte erhalte ich von Begin an die Position innerhalb der Paintbox. Nebenbei dann auch so unwichtichtige Informationen wie "ich habe jetzt gedrückt, losgelassen oder die Maus bewegt". Warum also so kompliziert und es selber ausrechnen? ;-)

ManuelGS: Ich glaube nicht, dass das funktionieren würde. Sobald sich die Maus über der PaintBox befindet würde das Form kein OnMouseMove mehr bekommen. Außer es hat das MouseCapture gesetzt. Was passiert sobald man die Maus drückt. Aber dazu müsste man erst aufs Form klicken und die Maus dann über die PaintBox bewegen.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
ManuelGS
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 173

Win XP HE, Suse Linux
D6, D7, D2005 Personal
BeitragVerfasst: Do 14.07.05 14:20 
@lossy
stimmt wohl. hab's selbst aber auch gar nicht getestet.
aber mit getcursor anstelle von onmousedown würd's doch hinhauen?

_________________
"Leben ist gänzlich Bühne und Spiel; so lerne denn spielen
und entsage dem Ernst - oder erdulde das Leid." - Palladas von Alexandria
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Fr 15.07.05 08:28 
GetCursorPos würde ja wieder einen Punkt mit dem Ursprung oben Links im Bildschirm liefern. Das müsste man erst wieder mit ScreenToClient in einen Punkt umrechnen der als Ursprung den Objectursprung hat. Siehe Post von maxk.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.