Also das dürfte eigentlich auch beim ersten Mal schon nicht so richtig klappen dürfen.
Typisches Problem. Du addierst zu Tag einen hinzu, setzt das als Länge und greifst auf Element 1 in dem Array zu. Richtig wäre aber das Element 0. Außerdem hast du teilweise ein Tag eines anderen Elementes im Wickel. Das Tag in dem With bezieht sich natürlich IMMER auf das Tag von dem Label nicht auf das was du oben als Index "missbrauchst". Evtl. wäre es sicherer du würdest mit
High(ALsText) oder oder mit einer anderen Variable arbeiten.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TMainForm.BTNAddEntryClick(Sender: TObject); begin SetLength(ALsText, Tag + 1); ALsText[tag] := Tlabel.Create(self); with ALsText[tag] do begin parent := SBToDo; left := 10; top := Self.tag * 25; name := 'LText' + IntToStr(Self.tag + 1); caption := 'Ihr Text'; end; Tag := Tag + 1; end; |
Das sollte es gehen. Denke ich mal.
[edit] High liefert immer das höchste Element zurück. Wenn das Array leer ist bekommst du -1. Du müsstest anstelle des
High ein
Length nehmen. Also
SetLength(ALsText, Length(ALsText) + 1).
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.