Einzelnen Beitrag anzeigen

CDI

Registriert seit: 13. Jan 2016
2 Beiträge
 
Delphi 10 Seattle Architect
 
#1

Manuelle Roboter Steuerung - Button und Cursortasten

  Alt 13. Jan 2016, 22:49
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
  Mit Zitat antworten Zitat