Einzelnen Beitrag anzeigen

fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#1

Mehrere Objekte zur Laufzeit erzeugen

  Alt 1. Jun 2016, 14:58
Delphi-Version: 5
Hi,

ich stehe gerade vor folgendem Problem. Ich möchte mehrere Komponenten, um genau zu sein 2 Tedits, 1 TLable und 1 Tspeedbutton jeweils dynamisch zur Laufzeit erzeugen. Dazu habe ich jeweils ein Dynamisches Array erzeugt und lass mit die Teile per Parent auf ein Panel Mappen.

Irgendwie schein mein Delphi aber ein Problem damit zu haben wenn ich mehr als 3 Komponenten zur Laufzeit einbinden möchte. 2 gehen Problemlos, sobald ich die 3. Hinzunehmen spinnt mein Delphi und hängt sich auf. Kennt ihr das verhalten?
Anbei mal die 3 Prozeduren.

Delphi-Quellcode:
  private
    TabellenCombo : array of TComboBox;
    FeldCombo : array of TComboBox;
    dynDelBtn : Array of TSpeedbutton;

procedure TForm1.CreateNewDynDelButton;
begin
  inherited;
  SetLength(dynDelBtn, length(dynDelBtn)+1);
  dynDelBtn[length(dynDelBtn)] := TSpeedbutton.Create(self);
  dynDelBtn[length(dynDelBtn)].Parent := self.DokExpPanel;
  dynDelBtn[length(dynDelBtn)].Name := 'DynBtn'+inttostr(length(dynDelBtn));
  dynDelBtn[length(dynDelBtn)].Visible := True;
  dynDelBtn[length(dynDelBtn)].Left := 5;
  dynDelBtn[length(dynDelBtn)].Top := (dynDelBtn[length(dynDelBtn)].Height + 10) * length(dynDelBtn);
  dynDelBtn[length(dynDelBtn)].Width := 20;
  dynDelBtn[length(dynDelBtn)].Height := 15;
  dynDelBtn[length(dynDelBtn)].Glyph := nil;
  ImageList1.GetBitmap(0, dynDelBtn[length(dynDelBtn)].Glyph);
  dynDelBtn[length(dynDelBtn)].OnClick:=DeleteMeBtn;

end;

procedure TForm1.CreateNewTableCombo;
begin
  SetLength(TabellenCombo, length(TabellenCombo)+1);
  TabellenCombo[length(TabellenCombo)]:=TComboBox.Create(self);
  TabellenCombo[length(TabellenCombo)].Parent := self.DokExpPanel;
  TabellenCombo[length(TabellenCombo)].Name := 'Tabellen'+inttostr(length(TabellenCombo));
  TabellenCombo[length(TabellenCombo)].Left := 30;
  TabellenCombo[length(TabellenCombo)].Top := (TabellenCombo[length(TabellenCombo)].Height + 10) * length(TabellenCombo);
end;

procedure TForm1.CreateNewFieldCombo;
begin
  SetLength(FeldCombo, length(FeldCombo)+1);
  FeldCombo[length(FeldCombo)]:=TComboBox.Create(self);
  FeldCombo[length(FeldCombo)].Parent := Self.DokExpPanel;
  FeldCombo[length(FeldCombo)].Name := 'Felder'+inttostr(length(FeldCombo));
  FeldCombo[length(FeldCombo)].Left := 200;
  FeldCombo[length(FeldCombo)].Top := (FeldCombo[length(FeldCombo)].Height + 10) * length(FeldCombo);
end;
Danke im Voraus für die Hilfe
  Mit Zitat antworten Zitat