Einzelnen Beitrag anzeigen

Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#1

Zur Laufzeit erzeugte Editierfelder

  Alt 23. Apr 2021, 20:10
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
  Mit Zitat antworten Zitat