AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [TListView] Spalten immer so breit machen wie erforderlich

[TListView] Spalten immer so breit machen wie erforderlich

Ein Thema von xZise · begonnen am 16. Nov 2008 · letzter Beitrag vom 17. Nov 2008
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

[TListView] Spalten immer so breit machen wie erforderlich

  Alt 16. Nov 2008, 20:56
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

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

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

  Alt 16. Nov 2008, 21:18
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
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

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

  Alt 16. Nov 2008, 21:24
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#4

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

  Alt 16. Nov 2008, 21:53
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"?
  Mit Zitat antworten Zitat
jottkaerr

Registriert seit: 2. Jul 2007
Ort: Tuttlingen
80 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

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

  Alt 17. Nov 2008, 06:56
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
Jürgen Krämer
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#6

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

  Alt 17. Nov 2008, 19:13
Zitat von Andreas L.:
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 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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
877 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

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

  Alt 17. Nov 2008, 19:32
Hi,

schon mal mit LVM_SETCOLUMNWIDTH versucht?

Gruß
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#8

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

  Alt 17. Nov 2008, 20:18
Zitat von xZise:
Zitat von Andreas L.:
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.
Miniaturansicht angehängter Grafiken
listview_col_autosize_269.png  
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#9

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

  Alt 17. Nov 2008, 21:17
Oh nein Total übersehen...

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
deadcantdance

Registriert seit: 25. Feb 2008
81 Beiträge
 
Delphi 2007 Professional
 
#10

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

  Alt 17. Nov 2008, 23:20
Funktioniert das auch mit virtuellen Listviews?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:16 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