![]() |
Kann man die Maus durch Kommandos bewegen ?
Liebe Delphifans,
Ich habe ein simples Zeichenprogramm über ein Imageobjekt für meine Nichte gemacht ,mit dem ich über die Maus einfache Symbole zeichnen kann. Jetzt meine Frage: gibt es eine Möglichkeit, die Mausbewegung und das Drücken der Maustaste zu simulieren (ich habe da zwar einige Artikel hier mit der Suche gefunden, aber es war nicht das passende dabei)? Ich möchte einige Testsequenzen vorbelegen und dann ablaufen lassen, d.h. z.B. ein beliebiges Zeichenobjekt vorgeben. Meine kleine Nichte hätte dann die Möglichkeit, das nachzuzeichnen. So ein Code würde sich auch für irgendwelche Werbezwecke anbieten. Habe schon einiges probiert, ist mir aber leider nicht gelungen. Die Ereignissprozedure OnMouseDown und OnMouseMove hat ja verschiedene Parameter, die ich übergeben müsste. Da ich noch ein Newbie bin, hab ich natürlich einige Probleme. procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); Vielleicht hat jemand von euch Lust, mir zu helfen. vielen Dank für jede HIlfe LingNeu |
Re: Kann man die Maus durch Kommandos bewegen ?
Du kannst mit
![]() ![]() |
Re: Kann man die Maus durch Kommandos bewegen ?
Hi,
wenn es nur um das Image geht, halte ich das direkte Aufrufen der Ereignisse ohne SetCursorpos usw. für sinnvoller. Das ist auch nicht schwer:
Delphi-Quellcode:
Der Code müsste eine beliebige Linie auf das Image zeichnen, wenn ich mich nicht irre (ungetestet).
down := point(random(image.width), random(image.height));
move := point(random(image.width), random(image.height)); ImageMouseDown(self, mbLeft, ssLeft, down.x, down.y); ImageMouseMove(self, ssLeft, move.x, move.y); ImageMouseUp(self, mbLeft, ssLeft, move.x, move.y); |
Re: Kann man die Maus durch Kommandos bewegen ?
@jfheins
vielen Dank für Deinen Hinweis! Habe das mit der API noch nicht probiert und ich kenne das auch noch nicht. Aber irgendwann muss man das auch lernen. @NamenLozer ebenfalls vielen Dank für Deinen Code sieht ja echt cool aus. Habe den Code mal in einem Buttonereignis eingegeben um es zu testen, leider kommt eine Meldung, das inkompatible Tpyen "TPoint und dynamic array" da sind. Wie muss ich die beiden Variablen deklarieren ? Wenn ich die beiden als array mit integer deklariere bekomme ich "inkompatible Typen "Array und TPoint" :cry:
Delphi-Quellcode:
Besten Dank nochmals!
procedure TForm1.Button1Click(Sender: TObject);
var down: array of TPoints; move: array of TPoints; begin down := point(random(image1.width), random(image1.height)); move := point(random(image1.width), random(image1.height)); ImageMouseDown(self, mbLeft, ssLeft, down.x, down.y); ImageMouseMove(self, ssLeft, move.x, move.y); ImageMouseUp(self, mbLeft, ssLeft, move.x, move.y); end; Lingneu |
Re: Kann man die Maus durch Kommandos bewegen ?
Lass mal das
Delphi-Quellcode:
weg, dann sollte es eigentlich funktionieren.
array of
Delphi-Quellcode:
var
down: TPoint; move: TPoint; |
Re: Kann man die Maus durch Kommandos bewegen ?
@dunkel,
danke für den Tipp. Leider habe ich Inkompatible Typen 'TShiftState' und 'Enumeration' bei ssLeft
Delphi-Quellcode:
ciao
procedure TForm1.Button1Click(Sender: TObject);
var down: TPoint; move: TPoint; begin down := point(random(image1.width), random(image1.height)); move := point(random(image1.width), random(image1.height)); ImageMouseDown(self, mbLeft, ssLeft, down.x, down.y); ImageMouseMove(self, ssLeft, move.x, move.y); ImageMouseUp(self, mbLeft, ssLeft, move.x, move.y); end; LingNeu |
Re: Kann man die Maus durch Kommandos bewegen ?
Hi,
Delphi-Quellcode:
ist es so besser?
ImageMouseDown(self, mbLeft, [ssLeft], down.x, down.y);
|
Re: Kann man die Maus durch Kommandos bewegen ?
hi bitsetter,
danke,jetzt habe ich keine Fehlermeldung mehr. Allerdings wird nichts gezeichnet :roll: ohje ciao LingNeu |
Re: Kann man die Maus durch Kommandos bewegen ?
Aber das Zeichnen, wenn Du die Mouse manuell bewegst & die Tasten drückst, funktioniert?
|
Re: Kann man die Maus durch Kommandos bewegen ?
Hast du den Ereignissen onMouseDown und onMouseUp Code hinzugefügt?
Zum Beispiel so:
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin image1.Canvas.MoveTo(x,y); end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin image1.Canvas.LineTo(x,y); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 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