Mit
ListView_SetColumnWidth(Llv.Handle, Lcol.Index, LVSCW_AUTOSIZE_USEHEADER);
spart man sich zwar die Iteration über die Spalten und die Berechnung der verbleibenden Breite, aber es führt zum selben Ergebnis wie der Code oben, mit Flackern und allem
.
Das ist dann ein Bug in deiner Delphiversion. Siehe Anhang... dort habe ich nur in Delphi 11 AutoSize auf True gesetzt.
Ich selbst verwende meistens die Virtual TreeView. Damit kann man viel mehr selbst anpassen. Allerdings läuft die aktuelle Version auch nur mit aktuellen Delphiversionen, d.h. du müsstest eine passende Version nutzen. Die alte Version im Anhang lief ab Delphi 4.