Ein Raspberry soll über Touchscreen bedient werden, d.h. es ist keine Tastatur angeschlossen.
Mehrere Labels sollen mit vierstelligen Zahlenwerten versehen werden können, mit diesen wird dann als Parameter weitergerechnet.
Meine aktuelle Lösung:
Ich habe eine zweite Form 'Eingabe' kreiert und auf dieser vier 'einstellige' Labels (label1000er, label100er, label10er, label1er) nebeneinander abgelegt, zusammen ergeben sie die Illusion einer vierstelligen Zahl.
Über/unter jedem Label befindet sich eine Grafik mit einem Up/Down Pfeil - siehe Anhang. Über die OnClick Events dieser Grafiken kann ich die einzelnen 'Stellen' der pseudo-vierstelligen Zahl durchblättern.
Code: Alles auswählen
procedure TEingabe.Image1Click(Sender: TObject);
begin
if strtoint(label1000er.Caption) < 9 then label1000er.Caption := inttostr(strtoint(label1000er.Caption) + 1) else label1000er.Caption := '0';
end;
procedure TEingabe.Image3Click(Sender: TObject);
begin
if strtoint(label100er.Caption) < 9 then label100er.Caption := inttostr(strtoint(label100er.Caption) + 1) else label100er.Caption := '0';
end;
procedure TEingabe.Image5Click(Sender: TObject);
begin
if strtoint(label10er.Caption) < 9 then label10er.Caption := inttostr(strtoint(label10er.Caption) + 1) else label10er.Caption := '0';
end;
procedure TEingabe.Image7Click(Sender: TObject);
begin
if strtoint(label1er.Caption) < 9 then label1er.Caption := inttostr(strtoint(label1er.Caption) + 1) else label1er.Caption := '0';
end;
procedure TEingabe.Image2Click(Sender: TObject);
begin
if strtoint(label1000er.Caption) > 0 then label1000er.Caption := inttostr(strtoint(label1000er.Caption) - 1) else label1000er.Caption := '9';
end;
procedure TEingabe.Image4Click(Sender: TObject);
begin
if strtoint(label100er.Caption) > 0 then label100er.Caption := inttostr(strtoint(label100er.Caption) - 1) else label100er.Caption := '9';
end;
procedure TEingabe.Image6Click(Sender: TObject);
begin
if strtoint(label10er.Caption) > 0 then label10er.Caption := inttostr(strtoint(label10er.Caption) - 1) else label10er.Caption := '9';
end;
procedure TEingabe.Image8Click(Sender: TObject);
begin
if strtoint(label1er.Caption) > 0 then label1er.Caption := inttostr(strtoint(label1er.Caption) - 1) else label1er.Caption := '9';
end;

Die Label der Mainform 'Form1' haben alle das gleiche OnClick Event über das die zweite Form sichtbar gemacht wird:
Code: Alles auswählen
procedure TForm1.LabelClick(Sender: TObject);
begin
dummy := (sender as TLabel).Caption;
Unit2.Eingabe.label1000er.caption := copy(dummy,1,1);
Unit2.Eingabe.label100er.caption := copy(dummy,2,1);
Unit2.Eingabe.label10er.caption := copy(dummy,3,1);
Unit2.Eingabe.label1er.caption := copy(dummy,4,1);
Unit2.Eingabe.visible := true;
end;
Die Frage jetzt aber: Wie bringe ich das Ergebnis aus der zweiten Form zurück zum auslösenden Label der ersten Form?
Eine direkte Zuweisung (nach Klick auf den 'Übernehmen'-Button) auf ein explizites Label der ersten Form funktioniert:
Code: Alles auswählen
procedure TEingabe.ButtonOKClick(Sender: TObject);
begin
form1.label1.caption := label1000er.caption + label100er.caption + label10er.caption + label1er.caption;
Eingabe.visible := false;
end;
Ich hoffe die Problembeschreibung war halbwegs verständlich?
