![]() |
Mausposition in Paintbox
Hallo,
wie kann ich in einer Paintbox die Mausposition herausbekommen? Gruß Spurius |
Re: Mausposition in Paintbox
einfach das mouseMove-event der PaintBox verwenden!
darin dann die x und y koordinate ausgeben lassen:
Code:
procedure TTestform.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer); begin Caption := IntToStr(X) + ' *** ' + IntToStr(Y); end; |
Re: Mausposition in Paintbox
Und wie geht das wenn ich die Mausposition beim OnClick Ereignis herausbekommen will?
|
Re: Mausposition in Paintbox
dann verwendest du die im OnMouseMove ermittelten Koordinaten trotzdem und deklarierst diese als private Variablen des Forms. Beim OnClick-Event klannst du dann diese ganz einfach verwenden :wink:
Code:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure PaintBox1Click(Sender: TObject); private { Private-Deklarationen } xPos, yPos: Integer; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin xPos := X; yPos := Y; end; procedure TForm1.PaintBox1Click(Sender: TObject); begin Caption := IntToStr(xPos) + ' *** ' + IntToStr(yPos); end; end. wobei du aber auch eine Variable vom Typ TPoint verwenden kannst: deklaration: anstatt xPos,yPos: Integer --> pt: TPoint; und anstatt Caption := IntToStr(xPos) + ' *** ' + IntToStr(yPos); --> Caption := IntToStr(pt.X) + ' *** ' + IntToStr(pt.Y); |
Re: Mausposition in Paintbox
Ok, vielen Dank.
|
Re: Mausposition in Paintbox
Meiner Meinung nach wäre das der effizientere Weg:
Delphi-Quellcode:
procedure TForm1.PaintBox1Click(Sender: TObject);
var Pos:TPoint; begin Pos:=Mouse.CursorPos; showmessage(inttostr(pos.X)); end; |
Re: Mausposition in Paintbox
Zitat:
|
Re: Mausposition in Paintbox
Shit... stimmt...
Bei meinem Prog war eh fullscreen und da ist das nicht aufgefallen...:oops: Da hätt ich mich beim nächsten mal wider sau geärgert... :dp: |
Re: Mausposition in Paintbox
:hi:
Die PaintBox hätte sonst auch nocht OnMouseDown :) mfg Tobias |
Re: Mausposition in Paintbox
Moin!
Und zu bevorzugen wäre OnMouseUp - weil bei Windows kann man auch einen Button drücken und es sich trotzdem vor dem Loslassen der Maustaste es nochmal überlegen und mit dem Cursor ausserhalb des Buttons fahren und dort loslassen - dann wird der Click auch nicht ausgelöst. Ausserdem hat man in dem folgenden Code von MouseUp nicht das Problem wie in MouseDown, das die Maus noch gedrückt ist im folgenden, was z.B. wieder neue Aktionen auslösen kann. Und zu der Mouse.Pos Sache: Nutzt ClientToScreen() bzw. ScreenToClient() der Komponente um die Koordinaten umrechnen zu lassen. MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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 by Thomas Breitkreuz