Hola skara.
Sinceramente veo poco práctica esa forma de mostrar los registros, ya que si existiesen muchos, la muestra se saldría de pantalla. Hay controles de datos que realizan esa taréa sin dificultad.
Pero bueno... te pongo un ejemplo de como podes hacer lo que solicitas:
Código Delphi
[-]
...
implementation
uses Contnrs;
var
List: TObjectList;
procedure TForm1.FormCreate(Sender: TObject);
begin
List:= TObjectList.Create;
end;
procedure CreateLabels(aForm: TForm; aDataSet: TDataSet);
var
lb: TLabel;
i: Integer;
begin
aDataSet.First;
i:= 0;
while not aDataSet.Eof do
begin
lb:= TLabel.Create(nil);
List.Add(lb);
lb.Left:= 10;
lb.Top := i;
lb.Name:= 'rtLabel'+IntToStr(List.Count);
lb.Caption:= Format('%s: %s', [lb.Name, aDataSet.Fields[0].AsString]);
lb.Parent:= aForm;
Inc(i, 20);
aDataSet.Next;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CreateLabels(Form1, tuDataSet);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
List.Free;
end;
Saludos