Einzelnen Beitrag anzeigen

Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#1

virtuelles TListView und Spaltenbreiten

  Alt 7. Feb 2021, 03:02
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
Marco Steinebach
  Mit Zitat antworten Zitat