Guten Tag,
ich erstelle während der Laufzeit Labels, der Code ist hierfür:
Delphi-Quellcode:
procedure CreateLabel (Form:TForm; Text:string; X,Y:Integer);
var
Lab : TLabel;
begin
Lab := TLabel.Create(Form);
Lab.Parent := Form;
Lab.Caption := Text;
Lab.Left := X;
Lab.Top := Y;
end;
Die Labels werden auf einem 2. Form erstellt.
Wie kann ich es am geschicktesten anstellen, dass die Label gelöscht werden, sobald Form2 geschlossen wird und neu erstellt werden, sobald Form2 wieder aufgerufen wird?
Die Frage macht nur Sinn, wenn Du ein autocreated Form verwendest, das nach Benutzung nicht zerstört sondern nur versteckt wird (voreingestelltes Verhalten von TForm). Eigentlich sollte man nur das Mainform in der autocreate-Liste belassen und alle anderen Forms nach Bedarf erzeugen und auch konsequent wieder zerstören, wenn der Benutzer sie schließt. Naja, jedem Tierchen sein Pläsierchen
Deine Labels haben alle keine Namen, dadurch sind sie leicht zu identifizieren und von Labels zu unterscheiden, die im Designer erzeugt wurden. Du könntest Dir also eine weitere Hilfsfunktion schreiben, wie
Delphi-Quellcode:
procedure ClearLabels (Form:TForm);
var
LComp: TComponent;
I : integer;
begin
for I:= Form.ComponentCount -1 downto 0 do begin
LComp := Form.Components[I];
if (LComp is TLabel) and (LComp.Name = '') then
LComp.Free;
end;
end;