Immerhin habe ich jetzt die Lösung gefunden wie ich sie gerne hätte.
In die Typ-Deklaration von Form1:
Das OnClick-Event der Labels von Form1:
Code: Alles auswählen
procedure TForm1.Label1Click(Sender: TObject);
begin
ausloeser := sender;
Unit2.Eingabe.label1000er.caption := copy((ausloeser as tlabel).Caption,1,1);
Unit2.Eingabe.label100er.caption := copy((ausloeser as tlabel).Caption,2,1);
Unit2.Eingabe.label10er.caption := copy((ausloeser as tlabel).Caption,3,1);
Unit2.Eingabe.label1er.caption := copy((ausloeser as tlabel).Caption,4,1);
Unit2.Eingabe.visible := true;
end;
Und das OnClick-Event des 'Übernehmen'-Buttons von der Eingabe-Form:
Code: Alles auswählen
procedure TEingabe.Button1Click(Sender: TObject);
var rueckgabe : tobject;
begin
rueckgabe := form1.ausloeser;
labeltext := label1000er.caption + label100er.caption + label10er.caption + label1er.caption;
(rueckgabe as tlabel).caption := labeltext;
Eingabe.visible := false;
end;
Und schon kann ich auf die zusätzliche Prozedur verzichten, genau so wollte ich das haben. Und du musst zugeben, das ist ein gutes Stück einfacher als bei dir
.
Ein blindes Huhn findet auch mal ein Korn...
Und um soviel wie möglich in die zweite Form auszulagern:
Code: Alles auswählen
//Das reduzierte OnClick der Labels:
procedure TForm1.Label1Click(Sender: TObject);
begin
ausloeser := sender;
Unit2.Eingabe.visible := true;
end;
//Im Kopf der Eingabe-Unit:
var
Eingabe: TEingabe;
rueckgabe : tobject;
//OnActivate-Event der zweiten Form:
procedure TEingabe.FormActivate(Sender: TObject);
begin
rueckgabe := form1.ausloeser;
label1000er.caption := copy((rueckgabe as tlabel).Caption,1,1);
label100er.caption := copy((rueckgabe as tlabel).Caption,2,1);
label10er.caption := copy((rueckgabe as tlabel).Caption,3,1);
label1er.caption := copy((rueckgabe as tlabel).Caption,4,1);
end;
//Und das OnClick-Event des Buttons wieder wie vor:
procedure TEingabe.Button1Click(Sender: TObject);
begin
rueckgabe := form1.ausloeser;
labeltext := label1000er.caption + label100er.caption + label10er.caption + label1er.caption;
(rueckgabe as tlabel).caption := labeltext;
Eingabe.visible := false;
end;
Findet das halbwegs deine Gnade? Im OnActivate könnte man ja nun deine Zahlenmanipulation einfliessen lassen.