Spalten von ListIconGadget automatisch anpassen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Spalten von ListIconGadget automatisch anpassen

Beitrag von gekkonier »

Hi!
Gibt es eine Möglichkeit die Spalten eines ListIconGadget nachdem man es mit Daten gefüllt hat automatisch von der Breite her dem Inhalt anzupassen?

Ich weiss, dass es die Möglichkeit gibt mit SetGadgetItemAttribute() und #PB_ListIcon_ColumnWidth die Möglichkeit das irgendwie manuell zu machen. Wäre hier der richtige Weg da anzusetzen?

Vielen Dank!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Spalten von ListIconGadget automatisch anpassen

Beitrag von Kiffi »

Code: Alles auswählen

SendMessage_(GadgetID(#DeinListIconGadget), #LVM_SETCOLUMNWIDTH, DeineColumnNummer, #LVSCW_AUTOSIZE)
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: Spalten von ListIconGadget automatisch anpassen

Beitrag von gekkonier »

Dankeschön
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Spalten von ListIconGadget automatisch anpassen

Beitrag von Kiffi »

gekkonier hat geschrieben:Dankeschön
gern!

Hier vielleicht noch ne kleine Verbesserung:

Wenn man Spaltenbreiten nach Inhalt anpasst, kann es vorkommen,
dass die Spaltennamen nicht mehr lesbar sind (bei kurzem Spalteninhalt
und langem Spaltenname). Aus diesem Grund führe ich zwei Breiten-
änderungen durch und nehme dann den längeren Wert. Somit ist
gewährleistet, dass der Anwender alle Informationen sieht.

Code: Alles auswählen

SendMessage_(hWnd, #LVM_SETCOLUMNWIDTH, ColCounter, #LVSCW_AUTOSIZE)
W1 = SendMessage_(hWnd, #LVM_GETCOLUMNWIDTH, ColCounter, 0) 

SendMessage_(hWnd, #LVM_SETCOLUMNWIDTH, ColCounter, #LVSCW_AUTOSIZE_USEHEADER)
W2 = SendMessage_(hWnd, #LVM_GETCOLUMNWIDTH, ColCounter, 0) 

If W1 > W2
  ColWidth = W1
Else
  ColWidth = W2
EndIf 

SendMessage_(hWnd, #LVM_SETCOLUMNWIDTH, ColCounter, ColWidth + 10)
Grüße ... Kiffi
a²+b²=mc²
Antworten