Code: Alles auswählen
SendMessage_(GadgetID(MyLIG),#WM_SETREDRAW,0,0)
;...
SendMessage_(GadgetID(MyLIG),#WM_SETREDRAW,1,0)
Code: Alles auswählen
SendMessage_(GadgetID(MyLIG),#WM_SETREDRAW,0,0)
;...
SendMessage_(GadgetID(MyLIG),#WM_SETREDRAW,1,0)
Code: Alles auswählen
Procedure.l GetHScrollPos(Gadget.i)
ProcedureReturn GetScrollPos_(GadgetID(Gadget), #SB_HORZ)
EndProcedure
....
Procedure.l GetColumnWidth(Gadget,index)
ProcedureReturn SendMessage_(GadgetID(Gadget), #LVM_GETCOLUMNWIDTH, index, 0)
EndProcedure
....
Procedure _GetVisibleColumns(Gadget.i, *col_start.Integer, *col_end.Integer)
Static last_gadget.i, last_hpos.i, last_colcnt.i, last_col_start.i, last_col_end.i
Protected hpos.i = GetHScrollPos(Gadget)
Protected colcnt.i = GetColumnCount(Gadget)
Protected gadgetw.i, x_range_start.i, x_range_end.i, column.i, x_offset.i
If Gadget = last_gadget And hpos = last_hpos And colcnt = last_colcnt
; No horizontal change -> return last values
*col_start\i = last_col_start
*col_end\i = last_col_end
ProcedureReturn
Else
last_gadget = Gadget
last_hpos = hpos
last_colcnt = colcnt
EndIf
gadgetw = GadgetWidth(Gadget)
x_range_start = hpos
x_range_end = hpos + gadgetw
*col_start\i = 0
*col_end\i = colcnt - 1
For column = 0 To colcnt - 1
If x_range_start >= x_offset : *col_start\i = column : EndIf
x_offset + GetColumnWidth(Gadget, column)
If x_range_end <= x_offset : *col_end\i = column : Break : EndIf
Next
last_col_start = *col_start\i
last_col_end = *col_end\i
EndProcedure
....
Protected col_start.i, col_end.i
_GetVisibleColumns(Gadget, @col_start, @col_end)
Debug "col_start: "+Str(col_start)+", col_end: "+Str(col_end)