Glück auf!
In meiner geplanten app habe ich Matrizen unterschiedlicher Größe (Rang) zu verarbeiten. Deshalb erzeuge ich die Editierfelder für die Komponenten ABC[i,k] zur Laufzeit durch folgenden Code:
Delphi-Quellcode:
procedure TForm1.CreateMatrix(rang:integer);
var
Edt : TEdit;
i,k : integer;
begin
SetLength(ABC,rang,rang);
for i:=0 to rang-1 do
for k:=0 to rang-1 do
begin
if TEdit(FindComponent('ABC'+IntToStr(i)+IntToStr(k))) = nil then
begin
Edt:=TEdit.Create(Self);
Edt.Parent:=GroupBox1;
Edt.Name:='ABC'+IntToStr(i)+IntToStr(k);
Edt.Width:=75;Edt.Height:=24;
Edt.Top:=30+i*35;
Edt.Left:=15+k*90;
Edt.Alignment:=taRightJustify;
Edt.BiDiMode:=bdLeftToRight;
Edt.Visible:=true;Edt.Enabled:=true;
Edt.Text:=''
end;
end;
if rang=3 then
begin
GroupBox1.Width:=290;GroupBox1.Height:=145;
end
else
begin
GroupBox1.Width:=195;GroupBox1.Height:=100;
end;
end;
Das funktioniert einwandfrei. Aber ich habe keine Idee, wie ich die Behandlungsroutinen, z. B. Edt.OnExit, ebenfalls zur Laufzeit erzeugen kann. Statisch geht es nicht, da der Compiler die TEdiit-Felder nicht kennt - sie werden ja erst zur Laufzeit erzeugt - und meckert daher (berechtigt).
Hat jemand da eine Idee?
Ein schönes WE
Kurt