Einzelnen Beitrag anzeigen

Pytroxis

Registriert seit: 12. Apr 2019
46 Beiträge
 
#7

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

  Alt 18. Apr 2019, 22:11
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;
So ähnlich habe ich es auch gelöst, werde aber morgen mal deinen Ansatz probieren, da mir dieser besser erscheint


Das Problem ist also, soweit gelöst, allerdings habe ich eine weitere Frage:
Ich arbeite mit der Funktion Canvas und den Labels.
Das Zeichnen lasse ich in OnPaint (+ Canvas.Refresh) und OnResize stattfinden (sofern es eine bessere Möglichkeit gibt, bin ich gerne offen für Vorschläge).
Scheinbar werden nun aber andauernd die Labels erstellt (sie flackern) und teilweise, sind die Labels an Positionen wo sie nicht sein sollten.
Gibt es eine effektive Methode um zu verhindern, dass ganz viele Labels übereinander, an der gleichen Position erstellt werden?


Delphi-Quellcode:
procedure TForm2.FormPaint(Sender: TObject);
begin
  zeichnen(self, 1);
  Canvas.Refresh;
end;

procedure TForm2.FormResize(Sender: TObject);
begin
  DestroyLabel;
  Button1.Left := Round(ClientWidth * 0.0482954545454545);
  Button1.Top := Round(ClientHeight * 0.8140589569160998);
  Button1.Width := Round(ClientWidth * 0.9034090909090909);

  Canvas.Brush.Color := clMenu;
  Canvas.FillRect(Rect(0,0, Width, Height));
  zeichnen(self, 1);
end;
Stehe momentan ziemlich auf dem Schlauch
  Mit Zitat antworten Zitat