Der Sinn: z.B. Hat man zuerst 10 Einträge gibt es noch keine Scrollbar. Werden es mehr taucht die Scrollbar auf und die letzte Spalte wird etwas verdeckt. Wer das Abfragen will, hier der Code mit Demo dafür.
Sollte eigentlich auch mit anderen Gadgets, die eine Scrollbar haben funktionieren, habs aber nicht getestet.
Wenn eine Scrollbar vorhanden ist, steht dies in sbi\rgstate[0] und die Breite steht in sbi\dxyLineButton. Wenn keine vorhanden ist, steht da meist irgendein Mist. weitere Infos siehe MSDN
Code: Alles auswählen
;nicht in PB 4.2 definiert
#OBJID_HSCROLL = $FFFFFFFA
#OBJID_VSCROLL = $FFFFFFFB
Structure SCROLLBARINFO
cbSize.i
rcScrollBar.RECT
dxyLineButton.i
xyThumbTop.i
xyThumbBottom.i
reserved.i
rgstate.i[6]
EndStructure
Procedure getScrollBarV(idnr)
;ermittelt ob ScrollBar vorhanden und die Breite
sbi.SCROLLBARINFO
sbi\cbSize = SizeOf(SCROLLBARINFO)
GetScrollBarInfo_(idnr,#OBJID_VSCROLL,sbi)
If sbi\rgstate[0]
scrollbar = 0
scrollbar_br = 0
Else
scrollbar = 1
scrollbar_br = sbi\dxyLineButton ;wenn > null = Höhe des Schiebereglers
EndIf
ProcedureReturn scrollbar_br
EndProcedure
Procedure getScrollBarH(idnr)
;ermittelt ob ScrollBar vorhanden und die Breite
sbi.SCROLLBARINFO
sbi\cbSize = SizeOf(SCROLLBARINFO)
GetScrollBarInfo_(idnr,#OBJID_HSCROLL,sbi)
If sbi\rgstate[0]
scrollbar = 0
scrollbar_br = 0
Else
scrollbar = 1
scrollbar_br = sbi\dxyLineButton ;wenn > null = Höhe des Schiebereglers
EndIf
ProcedureReturn scrollbar_br
EndProcedure
;==============================
Enumeration
#win1
#but1
#but2
#but3
#lvg1
EndEnumeration
hwnd = OpenWindow(#win1,0,0,640,480,"ListIcon Gadget",#PB_Window_SystemMenu|1)
CreateGadgetList(hwnd)
ButtonGadget(#but1,10,420,80,25,"Start")
ButtonGadget(#but2,110,420,80,25,"mehr Zeilen")
ButtonGadget(#but3,210,420,80,25,"mehr Spalten")
idnr = ListIconGadget(#lvg1,10,12,300,400,"",0,#PB_ListIcon_GridLines)
AddGadgetColumn(#lvg1,0,"Spalte 0",150)
AddGadgetColumn(#lvg1,1,"Spalte 1",55)
;AddGadgetColumn(#lvg1,2,"Spalte 2",155)
For i = 1 To 20
nr$ = LSet(Str(i),3," ")
txt$ = "Text in Zeile "+nr$+" in Spalte 1"+#LF$+"Spalte 2"+#LF$+"Spalte 3"
AddGadgetItem(#lvg1, -1, txt$)
Next
;=====================================================
Repeat
event = WaitWindowEvent()
If Event = #PB_Event_Gadget Or Event = #PB_Event_Menu
welcherButton = EventGadget()
Select welcherButton
Case #but1:
Debug "=Vert============================"
Debug getScrollBarV(idnr)
Debug "=Horz============================"
Debug getScrollBarH(idnr)
Case #but2: For i = 1 To 50
nr$ = LSet(Str(i),3," ")
txt$ = "Text in Zeile "+nr$+" in Spalte 1"+#LF$+"Spalte 2"+#LF$+"Spalte 3"
AddGadgetItem(#lvg1, -1, txt$)
Next
Case #but3: AddGadgetColumn(#lvg1,2,"Spalte",155)
EndSelect
EndIf
Until event = #PB_Event_CloseWindow
End