Hallo zusammen,
Ich habe eine virtuelle ListView mit mehreren Spalten.
Wie, um himmelswillen, kann ich die Spaltenbreiten so zur Laufzeit einstellen, das, auf jeden Fall, alles reinpasst, ohne mit "..." abgeschnitten zu werden.
ColumnTextWidth und ColumnHeaderWidt nützen mich nix, weil
ColumnTextWidt, logischerweise, nicht berechnet werden kann, die ListView weiß ja nicht, wie groß der Eintrag, der evtl. gleich kommt, ist, und ColumnHeaderWidt, bringt mir nix wirklich, weil ich nicht weiß, wieviele Leerzeichen ich in den Header schreiben müßte, damit's paßt.
Ich hab das ganze mal so versucht
Code:
procedure TbListenFormular.liEintraegeData(Sender: TObject;
Item: TListItem);
var
i, breite: integer;
begin
// liEintraege ist meine ListView
breite := liEintraege.canvas.textWidth(item.Caption);
if breite > liEintraege.columns[0].width then
liEintraege.columns[0].width := breite;
for i := 0 to item.subItems.count -1 do
begin
breite := liEintraege.canvas.textWidth(item.subItems[i]);
if breite > liEintraege.columns[i+1].width then
liEintraege.columns[i+1].width := breite;
end;
end;
Funktioniert auch so in etwa, aber trotzdem werden viele Einträge abgeschn...
Kann mir mal jemand auf die Sprünge helfen, bitte?
Herzlich grüßt
Marco