Welcome, Guest
Username: Password: Remember me
Hier wird Deutsch gesprochen
  • Page:
  • 1

TOPIC:

ListView Spaltenbreite anpassen 15 Dec 2021 10:25 #20792

  • lagraf
  • lagraf's Avatar
  • Topic Author


  • Posts: 294
  • 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

    Please Log in or Create an account to join the conversation.

    ListView Spaltenbreite anpassen 15 Dec 2021 10:29 #20793

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3094
  • Hallo Franz,
    klar geht das:
    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
    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
    HTH
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    ListView Spaltenbreite anpassen 16 Dec 2021 07:03 #20800

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 294
  • 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:
    LOCAL oCol AS ListViewColumn
    oCol := ListViewColumn{5, #SPALTE}
    oCol:Caption := "Spalte"
    SELF:oDClvwData:AddColumn(oCol)

    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?

    Please Log in or Create an account to join the conversation.

    ListView Spaltenbreite anpassen 16 Dec 2021 07:11 #20801

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3094
  • 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
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    ListView Spaltenbreite anpassen 16 Dec 2021 08:15 #20802

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 294
  • 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

    Please Log in or Create an account to join the conversation.

    ListView Spaltenbreite anpassen 16 Dec 2021 08:39 #20804

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3094
  • 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
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    ListView Spaltenbreite anpassen 16 Dec 2021 09:56 #20806

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 294
  • 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.

    Please Log in or Create an account to join the conversation.

    • Page:
    • 1
    Moderators: wriedmann