![]() |
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; |
Re: Kann man die Maus durch Kommandos bewegen ?
hallo dunkel,
ja das normale Zeichnen geht einwandfrei. Mit der linken Maustaste kann ich eine Stiftzeichnung machen sobald ich diese Taste drücke. Bei MouseUp hört das Zeichnen auf. Ich habe festgestellt, das die Maus den Fokus auf dem Button weiter hat, obwohl die Maus sich ja bewegen müsste. Ob das Schuld daran ist, das die Maus sich nicht auf das Image bewegt? ciao LingNeu |
Re: Kann man die Maus durch Kommandos bewegen ?
hallo bitsetter,
ja natürlich habe ich das, sonst wäre der Code ... ImageMouseDown(self, mbLeft, [ssLeft], down.x, down.y); ImageMouseMove(self, [ssLeft], move.x, move.y); wahrscheinlich nicht möglich. Was könnte das sein ? ciao LingNeu |
Re: Kann man die Maus durch Kommandos bewegen ?
Der Cursor wird sich dadurch wohl nicht bewegen, es wird wohl nur der jeweilige Code ausgeführt.
|
Re: Kann man die Maus durch Kommandos bewegen ?
Liste der Anhänge anzeigen (Anzahl: 1)
Damit das nicht alles ganz umsonst war, habe ich einen einfachen Mausrecorder für das TImage geschrieben. Damit bewegt sich auch der Cursor und simuliert die zuvor aufgenommenen Mausaktionen am TImage.
EDIT: war leider Doppelpost |
Re: Kann man die Maus durch Kommandos bewegen ?
@bitsetter,
vielen Dank für deine unermüdliche Hilfe! Das Programm ist ja echt toll. Vielleicht kann ich das so abändern, das ich über eine Anweisung die Zeichnungserstellung machen kann. Momentan muss ich ja noch selbst mit der Hand zeichnen. Schön wäre es, wenn man wie schon gesagt die Sache automatisch steuern könnte, dann könnte ich die Sache auch für mich persönlich gut als Werbesache verwenden. Trotzdem nochmals danke ciao LingNeu |
Re: Kann man die Maus durch Kommandos bewegen ?
Zitat:
wie meinst du das genau, etwa das man verschiedene Objekte wie Rechtecke und Kreise hintereinander automatisch zeichnet? Könntest du das noch mal näher erläutern? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 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