ich hab euch mal ne Demo gebastelt die mein Problem zeigt.
Ich fülle in einer Schleife Komponenten in eine TScrollbox ein. Die Scrollbox ist zu dem Zeitpunkt auf dem Formular sichtbar (siehe Beispiel). Das ganze Flackert dann wie sau und beruhigt sich erst zum Ende der Schleife.
Würde ich in eine TListbox Elemente einfügen könnte ich einfach schreiben
Code: Alles auswählen
ListBox1.Items.BeginUpdate;
for i := 0 to ganz_viel do begin
ListBox1.Items.ad('Text');
end;
ListBox1.Items.EndUpdate;

Habt ihr eine Idee, wie ich das Flackern abstellen kann ?
hier noch mein Reduzierter Code:
Code: Alles auswählen
Procedure TForm1.Button1Click(Sender: TObject);
Var
i: integer;
b: Tbitmap;
p: TScrollBox;
img: TImage;
l: TLabel;
Begin
p := ScrollBox1;
For i := p.ComponentCount - 1 Downto 0 Do Begin
If (p.Components[i] Is TLabel) Or (p.Components[i] Is TImage) Then Begin
p.Components[i].Free;
End;
End;
For i := 0 To 80 Do Begin
b := TBitmap.Create;
b.Width := 30;
b.Height := 30;
img := TImage.Create(p);
img.Parent := p;
l := TLabel.Create(p);
l.Parent := p;
img.Picture.Assign(b);
img.Width := b.Width;
img.Height := b.Height;
img.Hint := 'Hallo welt' + inttostr(i);
img.ShowHint := true;
img.Transparent := true;
b.free;
img.Left := ((p.ComponentCount Div 2) - 1) * (img.Width + 5);
img.Top := 2;
l.left := img.left;
l.top := img.top + img.Height;
l.caption := inttostr(i);
End;
End;
