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:
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;
...
D.h. ich habe schon 12 proceduren... wobei 6 mal wirklich genau das selbe ausgeführt wird.
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:
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;
Bricht so natürlich mit Fehlermeldung "Nicht genügend wirkliche Parameter" ab.
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