Manca l'impostazione della proprietà Parent del controllo.
Il parametro AOwner che viene specificato nella creazione dell'etichetta tramite il metodo Create dovrebbe essere sostituito da Self, in modo che sia la form stessa a fungere da Owner per il controllo; l'Owner è il componente che ha la responsabilità di distruggere i controlli posseduti al momento della distruzione dell'Owner stesso.
La proprietà Parent di un controllo visuale, invece, indica il controllo al quale si riferiscono le proprietà Left e Top che servono poi a visualizzare correttamente il controllo stesso all'interno del controllo designato come contenitore.
Nel tuo codice, devi memorizzare da qualche parte il riferimento al TabSheet creato e impostarlo come Parent della Label.
Un esempio:
codice:
procedure TForm1.Button1Click(Sender: TObject);
var
TabSheet: TTabSheet;
Lbl: TLabel;
begin
TabSheet := TTabSheet.Create(Self);
TabSheet.PageControl := PageControl1;
TabSheet.Caption := 'Concessionario';
TabSheet.PageIndex := 1;
Lbl := TLabel.Create(Self);
Lbl.Parent := TabSheet;
Lbl.Left := 10;
Lbl.Top := 10;
end;
Io eviterei di attribuire dinamicamente nomi ai controlli creati, poichè la creazione di un secondo controllo analogo non andrebbe a buon fine se ad esso venisse attribuito un nome identico al precedente.
Ciao!