@mk-soft,
Danke schön für das schöne Beispiel. Leider funktioniert LVM_GETCOLUMNWIDTH nur mit ListIcon-Gadgets und nicht mit ListView-Gadgets aka ListBoxes. Es geht aber viel einfacher mit PureBASIC-Mitteln:
GadgetWidth(#ListView) liefert die aktuelle Breite des ListView-Gadgets.
@Kurzer,
hier ein Code-Beispiel, um einen Scroll-Balken ein- und auszuschalten und die tatsächliche Breite und die Breite innerhalb des Scroll-Bereichs eines ListView-Gadgets zu ermitteln:
Code: Alles auswählen
EnableExplicit
#ListViewScrollableWidth = 300
#WindowHeight = 160
#WindowWidth = 210
Enumeration
#ListView
#Button
EndEnumeration
Define HorizontalScrollbarEnabled.L
Define i.L
Define ListViewWidth.L
Define WindowEvent.L
If OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, "ListView mit Scrollbalken", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
ListViewGadget(#ListView, 10, 10, #WindowWidth - 20, #WindowHeight - 50, #WS_HSCROLL)
ButtonGadget(#Button, 10, #WindowHeight - 30, #WindowWidth - 20, 20, "Horizontalen Scrollbalken einblenden")
For i = 1 To 12
AddGadgetItem (0, -1, "Eintrag " + Str(i) + " des Listview") ; definieren des Listview-Inhalts
Next
Repeat
WindowEvent = WaitWindowEvent()
If WindowEvent = #PB_Event_Gadget
If EventGadget() = #Button
If HorizontalScrollbarEnabled
SendMessage_(GadgetID(#ListView), #LB_SETHORIZONTALEXTENT, ListViewWidth, 0)
SetGadgetText(#Button, "Horizontalen Scrollbalken einblenden")
HorizontalScrollbarEnabled = #False
Else
SendMessage_(GadgetID(#ListView), #LB_SETHORIZONTALEXTENT, #ListViewScrollableWidth, 0)
SetGadgetText(#Button, "Horizontalen Scrollbalken ausblenden")
HorizontalScrollbarEnabled = #True
Debug "ListView-Breite = " + Str(GadgetWidth(#ListView))
Debug "ListView-Breite innerhalb des Scrollbalkens = " + Str(SendMessage_(GadgetID(0), #LB_GETHORIZONTALEXTENT, 0, 0))
EndIf
EndIf
EndIf
Until WindowEvent = #PB_Event_CloseWindow
EndIf
Und hier ein Beispiel, um die Breite des ListView-Gadgets an die Breite eines Eintrags anzupassen:
Code: Alles auswählen
EnableExplicit
#ListViewWidth = 300
#WindowHeight = 160
#WindowWidth = 210
Enumeration
#ListView
#Button
EndEnumeration
Define EntryWidth.L
Define FontID.L
Define WindowEvent.L
If OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, "ListView", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
ListViewGadget(#ListView, 10, 10, #WindowWidth - 20, #WindowHeight - 50)
ButtonGadget(#Button, 10, #WindowHeight - 30, #WindowWidth - 20, 20, "ListView-Breite an Eintrag anpassen")
AddGadgetItem (0, -1, "Test-Eintrag im Listview")
If StartDrawing(WindowOutput(0))
FontID = GetGadgetFont(0)
DrawingFont(FontID)
EntryWidth = TextWidth(GetGadgetItemText(#ListView, 0, 0)) + 10
StopDrawing()
EndIf
Repeat
WindowEvent = WaitWindowEvent()
If WindowEvent = #PB_Event_Gadget
If EventGadget() = #Button
ResizeGadget(#ListView, 10, 10, EntryWidth, #WindowHeight - 50)
DisableGadget(#Button, #True)
EndIf
EndIf
Until WindowEvent = #PB_Event_CloseWindow
EndIf