Delphi-Quellcode:
var spalte,col:integer;
colw : array [0..10] of integer;
begin
lv2.canvas.font:=lv2.font;
for i:=low(colw) to high(colw) do colw[i]:=100;
lv2.Columns.clear;
q.first;
while not q.eof do begin
.
. // Hier wird durch eine Tabelle gelaufen für n Elemente
.
nitem.subitems.add(q.fieldbyname(telArray[was]).asstring); telefoncol:=0;
col:=lv2.canvas.textwidth(q.fieldbyname(telArray[was]).asstring);
inc(spalte);
if col > colw[spalte] then colw[spalte]:=col;
nitem.subitems.add(q.fieldbyname(faxArray[was]).asstring); faxcol:=1;
col:=lv2.canvas.textwidth(q.fieldbyname(faxArray[was]).asstring);
inc(spalte);
if col > colw[spalte] then colw[spalte]:=col;
nitem.subitems.add(q.fieldbyname(emailArray[was]).asstring); emailcol:=2;
col:=lv2.canvas.textwidth(q.fieldbyname(emailArray[was]).asstring);
inc(spalte);
if col > colw[spalte] then colw[spalte]:=col;
q.next;
end;
.
. // usw usw. _spalte_ deshalb da die Einträge variable sind.
.
for i:=0 to lv2.Columns.count -1 do lv2.Columns[i].width:=colw[i]+20;
end;
Wirklich viel zum optimieren sehe ich dort nicht.
Oben ein Löschen, pro Eintrag 3 Zeilen für die Abfrage und unten eine Schleife für das setzen der Breite.
Sven - nun Feierabend macht ... bis morgen