![]() |
Manuelle Roboter Steuerung - Button und Cursortasten
Hallo,
ich bin neu hier im Forum und wollte gleich mal mit Fragen starten. Ich bau gerade eine GUI für ein Project, hierdrüber wird ein Fischertechnik Roboter über eine KI gesteuert [Fahr Bewegungen]. Da wir auch eine Manuelle Steuerung realisieren wollen, bin ich gerade dabei diese zu bauen. In der VCL habe ich 6 Buttons [Links_Vor / Vor / Rechts_Vor / Links_Zurück / zurück / Rechts_zurück] Der Roboter fährt immer so lange bis er einen neuen Befehl erhält (leider vorgegeben, nicht zu ändern). ERSTE FRAGE: Ich habe 6x OnMouseDown-Event, dabei fährt er jeweils in die entsprechende Richtung. Außerdem 6x OnMouseUp-Event, hierbei wird ein Stopp Befehl gesendet.
Code:
D.h. ich habe schon 12 proceduren... wobei 6 mal wirklich genau das selbe ausgeführt wird.
procedure TForm_Roboter_GUI.Button_Manuell_Rechts_ZurueckMouseDown(
Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Robo.BewegenEiner(2,-Speed); Robo.BewegenEiner(1,round(-speed/10)); end; procedure TForm_Roboter_GUI.Button_Manuell_Rechts_ZurueckMouseUp( Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Roboter_Stopp; end; procedure TForm_Roboter_GUI.Button_Manuell_VorMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Robo.BewegenAlle(speed,speed); end; procedure TForm_Roboter_GUI.Button_Manuell_VorMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Roboter_Stopp; end; ... Kann ich das anders lösen und in weniger Proceduren zusammenfassen??? ZWEITE FRAGE: Ich möchte es auch realisieren das ich den Roboter mit den Cursortasten meiner Tastatur lenken kann. Ich habe angefangen mit FormKeyDown abzufragen welche taste gedrückt wird, die abfrage ist auch kein Problem.
Code:
Bricht so natürlich mit Fehlermeldung "Nicht genügend wirkliche Parameter" ab.
procedure TForm_Roboter_GUI.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin case Key of VK_UP : Button_Manuell_VorMouseDown; VK_DOWN : Button_Manuell_ZurueckMouseDown; end; end; Was für Parameter muss ich da noch hinter schreiben damit ich die MouseDown-Events auch so ausführen kann, damit das funktioniert, fals ich das überhaupt so machen kann? Ich hoffe ich habe das klar und verständlich beschrieben, und das man mir hier helfen kann ;) mfg CDI |
AW: Manuelle Roboter Steuerung - Button und Cursortasten
Du könntest für das MouseUp für alle Buttons die selbe Prozedur verwenden.
Damit hättest du 5 Prozeduren weniger. Du könntest für das MouseDown ebenfalls für alle Buttons die selbe Prozedur verwenden und in der Prozedur abfragen, auf welchen Button geklickt wurde. Ob das nun schöner ist???
Delphi-Quellcode:
Und zum Problem mit "Nicht genügend wirkliche Parameter"
procedure TForm_Roboter_GUI.Button_ManuellMouseDown(
Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Sender=Button_Manuell_Rechts_Zurueck then begin ... end else if Sender=Button_Manuell_Vor then begin ... end else ... end; end;
Delphi-Quellcode:
Ich hab das hier auf die schnelle reingetippt. Fehler deshalb nicht ausgeschlossen.
procedure TForm_Roboter_GUI.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin case Key of VK_UP : Button_Manuell_VorMouseDown(Button_Manuell_Vor, mbLeft, [], 0, 0); VK_DOWN : Button_Manuell_ZurueckMouseDown(Button_Manuell_Zurueck, mbLeft, [], 0, 0); end; end; |
AW: Manuelle Roboter Steuerung - Button und Cursortasten
Dann verweise doch im Objekt Inspektor der Buttons bei MouseUp auf ein und die selbe Procedure.
|
AW: Manuelle Roboter Steuerung - Button und Cursortasten
Super, Danke.
Die Tipps konnte ich sehr leicht anwenden und es hat mir extrem geholfen! Läuft gerade wunderbar :) Danke Amateurprofi :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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