Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Komponenten während der Laufzeit erstellen und löschen

  Alt 18. Apr 2019, 11:41
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;
Peter Below
  Mit Zitat antworten Zitat