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