Hi Leute,
wenn er L innerhalb der Schleife wieder freigibt, dann sind ja gerade die Labels weg, die er zum anzeigen benötigt.
Die Freigabe von T an das Ende der Procedure schieben, da es sonst nach dem ersten Schleifendurchlauf weg ist. D wird nicht benötigt.
Das mit der Freigabe ist bei Delphi so ne Sache. In der Onlinehilfe steht zu Parent:
Hinweis: Die in TControl deklarierte Eigenschaft Parent ähnelt der Eigenschaft Owner von TComponent darin, daß die hier angegebenen Objekte für das Freigeben des Steuerelements zuständig sind. Jedoch ist das in Parent enthaltene Objekt immer eine fensterorientierte Komponente, die das Steuerelement visuell enthält und beim Speichern des Formulars für das Schreiben des Steuerelements in einen Stream verantwortlich ist. Owner enthält das Objekt, das beim Instantiieren des Steuerelements als Parameter an den Konstruktor übergeben wurde. Dieser Eigentümer veranlaßt das Speichern aller Objekte (einschließlich des Steuerelements und seiner übergeordneten Komponente), wenn das Formular gespeichert wird.
Soll heißen: Sobald ein Parent/Owner angegeben wird (i.d.R. eine Form, Panel,..) werden die erzeugten Komponenten bei der Freigabe des Parents ebenfalls freigegeben. Erzeugst Du also nur beim Create des Forms die Labels, Tabels,... dann musst Du diese nicht freigeben, wenn Du beim Schließen des Forms das Form FREIGIBTS (Im OnClose: Action:=caFree; oder Form.Release; im aufrufenden Code). Wenn Du aber eine Aktualisierung der Anzeige planst, bei der eine andere Anzahl von Items auftreten können, musst Du die Freigabe der Labels wieder übernehmen, d.h. Alle von Hand erzeugten Labels wieder freigeben.
Weshalb bei Dir keine Daten angezeigt werden weiß ich nicht. Wirf auf alle Fälle mal die .Frees raus, dann müssten wenigstens die 10 Lables dastehen.
Habe es gerade gesehen: Die 10 Labels stehen übereinander, weil sie die gleichen Top/Left-Werte haben. Du benutzt zwar i um den Wert zu änern, dieser wird aber in der Schleife nicht verändert!
Grüße
Lemmy