Da auch die TcxListBox auf TListBox aufsetzt, "leidet" auch diese Komponente an extremen Flickern, insbesondere beim Resizen z.B. eines Formulars/Frames. Auch das Aktivieren des DoubleBufferings bringt keine Besserung (btw gibt es das Problem auch in C#).
Durch Überschreiben der Prozedur CreateParams() verschwindet dieser Effekt. Dazu ist noch nicht einmal das Ableiten in eine eigene Komponente nötig, wenn man per Interception vorgeht. Dazu wird deklariert:
Delphi-Quellcode:
TcxListBox = class(cxListBox.TcxListBox)
public
procedure CreateParams (var Params: TCreateParams); override;
end;
und implementiert:
Delphi-Quellcode:
procedure TcxListBox.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_COMPOSITED; // or WS_EX_LAYERED;
end;
Das auch manchmal vorgeschlagene Attribut WS_EX_LAYERED hat bei mir einen lustigen "Freistellungs"-Effekt der Listbox bewirkt und also nicht funktioniert.
Diesen Code kann man auch in eine separate
Unit auslagern. Dann ist darauf zu achten, dass sie in der Uses-Klausel am besten als letzte
Unit eingebunden wird. Das gilt auch, wenn man so die Standard-Listbox reparieren will.
HTH.