Hallo,
ist es in VO 2.8 möglich, die Breite der Columns eines ListViews, der anhand eines CSV Files gefüllt wird, so anzupassen, dass alle Werte komplett angezeigt und nicht abgeschnitten werden?
LG Franz
ListView Spaltenbreite anpassen
Moderator: wriedmann
ListView Spaltenbreite anpassen
Hallo Franz,
klar geht das:
HTH
Wolfgang
klar geht das:
Code: Select all
method AutoSize() as void pascal class EnhListView
local nI as dword
self:SuspendUpdate()
for nI := self:ColumnCount downto 1
self:ColumnAutoSize( self:GetColumn( nI ):NameSym )
next
self:RestoreUpdate()
return
Code: Select all
method ColumnAutoSize( symColumn as symbol ) as void pascal class EnhListView
local nIndex as int
local nWidth as int
nIndex := Int( self:__GetColumnIndexFromSymbol( symColumn ) ) - 1
ListView_SetColumnWidth( self:handle(), int(nIndex), shortint( _cast, LVSCW_AUTOSIZE ) )
nWidth := ListView_GetColumnWidth( self:Handle(), nIndex )
ListView_SetColumnWidth( self:handle(), int(nIndex), shortint( _cast, LVSCW_AUTOSIZE_USEHEADER ) )
if nWidth > ListView_GetColumnWidth( self:Handle(), nIndex )
ListView_SetColumnWidth( self:handle(), nIndex, shortint( _cast, LVSCW_AUTOSIZE ) )
endif
return
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
ListView Spaltenbreite anpassen
Hallo Wolfgang,
wie wird der EnhListView verwendet? Ich muss im Prog normalerweise den LV vorab mit seinen Spalten und einer geschätzen Größe anlegen:
Wenn ich dann die Daten einlese, können 2 Fälle vorkommen:
- die Werte sind viel zu klein für die definierte Größe, Platz wird verschwendet
- die Werte sind zu groß und werden nicht komplett angezeigt
In beiden Fällen sollen die Spaltenbreiten angepaßt werden, sodaß einerseits kein Platz verschwendet wird, aber trotzdem alle Werte komplett angezeigt werden (wie in Calc/Excel die Funktion "Optimale Spaltenbreite").
Wird nach Einlesen der Daten die Methode AutoSize() aufgerufen, damit sich die Breite der Spalten den darin enthaltenen Werten anpaßt?
wie wird der EnhListView verwendet? Ich muss im Prog normalerweise den LV vorab mit seinen Spalten und einer geschätzen Größe anlegen:
Code: Select all
LOCAL oCol AS ListViewColumn
oCol := ListViewColumn{5, #SPALTE}
oCol:Caption := "Spalte"
SELF:oDClvwData:AddColumn(oCol)
- die Werte sind viel zu klein für die definierte Größe, Platz wird verschwendet
- die Werte sind zu groß und werden nicht komplett angezeigt
In beiden Fällen sollen die Spaltenbreiten angepaßt werden, sodaß einerseits kein Platz verschwendet wird, aber trotzdem alle Werte komplett angezeigt werden (wie in Calc/Excel die Funktion "Optimale Spaltenbreite").
Wird nach Einlesen der Daten die Methode AutoSize() aufgerufen, damit sich die Breite der Spalten den darin enthaltenen Werten anpaßt?
ListView Spaltenbreite anpassen
Hallo Franz,
ich verwende (wie für fast alle meine Controls) eine eigene Klasse, in diesem Fall die Klasse EnhListView.
Und nach dem Einlesen aller Daten führe ich die Methode AutoSize() aus.
Wolfgang
ich verwende (wie für fast alle meine Controls) eine eigene Klasse, in diesem Fall die Klasse EnhListView.
Und nach dem Einlesen aller Daten führe ich die Methode AutoSize() aus.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
ListView Spaltenbreite anpassen
Hallo Wolfgang,
genau das habe ich gemeint: Nach dem Einlesen die Methode AutoSize() aufrufen. Die bei der Definition der Columns festgelegten Größen spielen dann eigentlich keine Rolle.
Ich habs eingebaut und es funktioniert, danke!
LG Franz
genau das habe ich gemeint: Nach dem Einlesen die Methode AutoSize() aufrufen. Die bei der Definition der Columns festgelegten Größen spielen dann eigentlich keine Rolle.
Ich habs eingebaut und es funktioniert, danke!
LG Franz
ListView Spaltenbreite anpassen
Hallo Franz,
genau, die Größen spielen keine Rolle mehr.
Normalerweise baue ich bei diesen ListViews dann als letzte Spalte eine leere Spalte mit Breite 1 und einem Leerzeichen als Caption ein, damit wirklich jede Spalte den PLatz belegt, den sie braucht.
Dieses AutoSize funktioniert sehr gut bei bestimmten Ausgaben (mache ich ganz viel, um das Kopieren der Daten nach Excel zu erlauben), aber für "normale" Anzeigen ist das eigentlich nicht sehr benutzerfreundlich - da ist es besser, beim Schließen die Spaltenbreiten zu speichern und beim Öffnen wiederherzustellen, denn manche Spalten sollen gar nicht in voller Breite angezeigt werden.
Wolfgang
genau, die Größen spielen keine Rolle mehr.
Normalerweise baue ich bei diesen ListViews dann als letzte Spalte eine leere Spalte mit Breite 1 und einem Leerzeichen als Caption ein, damit wirklich jede Spalte den PLatz belegt, den sie braucht.
Dieses AutoSize funktioniert sehr gut bei bestimmten Ausgaben (mache ich ganz viel, um das Kopieren der Daten nach Excel zu erlauben), aber für "normale" Anzeigen ist das eigentlich nicht sehr benutzerfreundlich - da ist es besser, beim Schließen die Spaltenbreiten zu speichern und beim Öffnen wiederherzustellen, denn manche Spalten sollen gar nicht in voller Breite angezeigt werden.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
ListView Spaltenbreite anpassen
Ich baue damit einen Importdialog für den Import von Artikel- und Lieferscheindaten (wie der Textimport Dialog in Excel/Calc). Die Lieferanten meiner Kunden schaffen es nämlich nicht, immer ein definiertes Standardformat zu liefern, sodaß ich oft meine Importvorlagen fürs Programm abändern muss.
In diesem Dialog öffnen meine Kunden diese Daten ihrer Lieferanten und können dann interaktiv durch Änderungen (Zeichensatz, Spaltentrennzeichen, Texttrenner, etc) schauen, welche Einstellungen sie brauchen, um diese Datei zu importieren.
Für diesen Fall ist die autom. Spaltenbreite optimal.
In diesem Dialog öffnen meine Kunden diese Daten ihrer Lieferanten und können dann interaktiv durch Änderungen (Zeichensatz, Spaltentrennzeichen, Texttrenner, etc) schauen, welche Einstellungen sie brauchen, um diese Datei zu importieren.
Für diesen Fall ist die autom. Spaltenbreite optimal.