Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [TListView] Spalten immer so breit machen wie erforderlich (https://www.delphipraxis.net/124204-%5Btlistview%5D-spalten-immer-so-breit-machen-wie-erforderlich.html)

xZise 16. Nov 2008 20:56


[TListView] Spalten immer so breit machen wie erforderlich
 
Hallo ihr,
wie kann ich die Spalten einer ListView so breit machen, das sie alles (inklusive der Columnheader) anzeigen können? Die Breite auf "-1" zu setzen garantiert nicht das die Columnheader vollständig angezeigt werden, während es "-2" genau andersherum macht :mrgreen:

MfG
xZise

s.h.a.r.k 16. Nov 2008 21:18

Re: [TListView] Spalten immer so breit machen wie erforderli
 
ich würde es selbst berechnen, eben über die längen (in pixel) des string in der entsprechenden spalten. problem ist halt nur, dass es eine extreme laufzeit haben kann :mrgreen:

xZise 16. Nov 2008 21:24

Re: [TListView] Spalten immer so breit machen wie erforderli
 
Naja 4 Spalten mit ... Vielleicht bis zu 10k Einträgen (wobei das EXTREMS unrealistisch ist)...

Und das heißt wie läuft die Berechnung jetzt ab?

MfG
xZise

Andreas L. 16. Nov 2008 21:53

Re: [TListView] Spalten immer so breit machen wie erforderli
 
Zitat:

Zitat von xZise
Naja 4 Spalten mit ... Vielleicht bis zu 10k Einträgen (wobei das EXTREMS unrealistisch ist)...

Und das heißt wie läuft die Berechnung jetzt ab?

MfG
xZise

Haben die Columns nicht eine Eigenschaft "AutoSize"?

jottkaerr 17. Nov 2008 06:56

Re: [TListView] Spalten immer so breit machen wie erforderli
 
Aus meiner Grabbelkiste

Delphi-Quellcode:
procedure OptimizeColumns(const ListView: TListView);
var
  Column: TListColumn;
  ColumnWidthsHeader: Integer;
  ColumnWidthsText: Integer;
  i: Integer;
begin
  for i := 0 to ListView.Columns.Count - 1 do
  begin
    Column := ListView.Column[i];

    Column.Width := ColumnHeaderWidth;
    ColumnWidthsHeader := ListView_GetColumnWidth(ListView.Handle, i);

    Column.Width := ColumnTextWidth;
    ColumnWidthsText := ListView_GetColumnWidth(ListView.Handle, i);

    if ColumnWidthsHeader > ColumnWidthsText then
      Column.Width := ColumnWidthsHeader
    else
      Column.Width := ColumnWidthsText;
  end;
end;
jkr

xZise 17. Nov 2008 19:13

Re: [TListView] Spalten immer so breit machen wie erforderli
 
Zitat:

Zitat von Andreas L.
Zitat:

Zitat von xZise
Naja 4 Spalten mit ... Vielleicht bis zu 10k Einträgen (wobei das EXTREMS unrealistisch ist)...

Und das heißt wie läuft die Berechnung jetzt ab?

MfG
xZise

Haben die Columns nicht eine Eigenschaft "AutoSize"?

Nein haben sie leider nicht. Jedenfalls nicht direkt*;) Über "-1" und "-2" gehts ja teilweise. Aber man sollte auch den "Header" lesen können.

Zitat:

Zitat von jottkaerr
Aus meiner Grabbelkiste

Delphi-Quellcode:
procedure OptimizeColumns(const ListView: TListView);
var
  Column: TListColumn;
  ColumnWidthsHeader: Integer;
  ColumnWidthsText: Integer;
  i: Integer;
begin
  for i := 0 to ListView.Columns.Count - 1 do
  begin
    Column := ListView.Column[i];

    Column.Width := ColumnHeaderWidth;
    ColumnWidthsHeader := ListView_GetColumnWidth(ListView.Handle, i);

    Column.Width := ColumnTextWidth;
    ColumnWidthsText := ListView_GetColumnWidth(ListView.Handle, i);

    if ColumnWidthsHeader > ColumnWidthsText then
      Column.Width := ColumnWidthsHeader
    else
      Column.Width := ColumnWidthsText;
  end;
end;
jkr

Ich schaue es mir mal an!

MfG
xZise

Alter Mann 17. Nov 2008 19:32

Re: [TListView] Spalten immer so breit machen wie erforderli
 
Hi,

schon mal mit LVM_SETCOLUMNWIDTH versucht?

Gruß

Andreas L. 17. Nov 2008 20:18

Re: [TListView] Spalten immer so breit machen wie erforderli
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von xZise
Zitat:

Zitat von Andreas L.
Zitat:

Zitat von xZise
Naja 4 Spalten mit ... Vielleicht bis zu 10k Einträgen (wobei das EXTREMS unrealistisch ist)...

Und das heißt wie läuft die Berechnung jetzt ab?

MfG
xZise

Haben die Columns nicht eine Eigenschaft "AutoSize"?

Nein haben sie leider nicht. Jedenfalls nicht direkt ;) Über "-1" und "-2" gehts ja teilweise. Aber man sollte auch den "Header" lesen können.

Bei mir schon, siehe Anhang.

xZise 17. Nov 2008 21:17

Re: [TListView] Spalten immer so breit machen wie erforderli
 
Oh nein :pale: Total übersehen...

MfG
xZise

deadcantdance 17. Nov 2008 23:20

Re: [TListView] Spalten immer so breit machen wie erforderli
 
Funktioniert das auch mit virtuellen Listviews?


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf