Hallo,
ich bin mir nicht zwar sicher, ob ich Dich richtig verstanden habe (Listitems werden von Dir wohl nicht gezeichnet o. ä.), aber vielleicht hilft Dir folgendes weiter:
Delphi-Quellcode:
function VisibleColCount (const Listview : TListView) : Integer;
var
cw, iw : Integer;
begin
Result := 0;
with Listview do
begin
cw := ClientWidth;
iw := Items [0].DisplayRect(drBounds).Width
end;
while Result <= cw - iw do
Inc (Result, iw);
Result := Result div iw
end;
procedure TForm1.Button1Click(Sender: TObject);
var
c, r : Integer;
begin
c := Listview1.VisibleRowCount div VisibleColCount (ListView1);
if c >= ListView1.Items.Count then
begin
c := 1;
r := ListView1.Items.Count
end
else
begin
r := c;
c := ListView1.Items.Count div c;
if c * r < ListView1.Items.Count then
Inc (c)
end;
ShowMessage (Format ('%d Spalten mit max. %d Einträgen pro Spalte', [c, r]));
end;
Gruß