Hi,
Found some more info in msdn.microsoft.com about list view styles. Test the chaotic following code:
Code: Select all
lvc.LV_COLUMN
lvc\imask = #LVCF_FMT
Structure LVITEM ; the real LVITEM structure is larger, but we don't need the discarded members for this example
mask.l;
iItem.l;
iSubItem.l;
state.l;
stateMask.l;
EndStructure
lpl.LVITEM
lpl\mask = #LVIF_STATE
#LVM_SETEXTENDEDLISTVIEWSTYLE = #LVM_FIRST + 54
#LVM_GETEXTENDEDLISTVIEWSTYLE = #LVM_FIRST + 55
#LVS_EX_GRIDLINES = 1
#LVS_EX_FULLROWSELECT = $20
#LVS_EX_HEADERDRAGDROP = $10
#LVS_EX_ONECLICKACTIVATE = $40
#LVS_EX_UNDERLINEHOT = $800
#LVS_EX_CHECKBOXES = 4
#LVIS_STATEIMAGEMASK = $F000
lpl\stateMask = #LVIS_STATEIMAGEMASK
InitGadget(1)
If OpenWindow(1,#CW_USEDEFAULT,#CW_USEDEFAULT,#CW_USEDEFAULT,#CW_USEDEFAULT,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget,"ListIconGadget column align example")
LVWidth = WindowWidth() - 4
If CreateGadgetList(WindowID())
ListIconGadget = ListIconGadget(0, 0, 0, LVWidth, WindowHeight()-30, "This", LVWidth/4-1)
AddGadgetColumn(0, 1, "is", LVWidth/4-1)
AddGadgetColumn(0, 2, "a", LVWidth/4-1)
AddGadgetColumn(0, 3, "test", LVWidth/4-1)
EndIf
col = 1
lvc\fmt = #LVCFMT_RIGHT
SendMessage_(ListIconGadget, #LVM_SETCOLUMN, col, @lvc)
col = 2
lvc\fmt = #LVCFMT_CENTER
SendMessage_(ListIconGadget, #LVM_SETCOLUMN, col, @lvc)
col = 3
lvc\fmt = #LVCFMT_LEFT ; not really needed, left is the default
SendMessage_(ListIconGadget, #LVM_SETCOLUMN, col, @lvc)
SendMessage_(ListIconGadget, #LVM_SETEXTENDEDLISTVIEWSTYLE, #LVS_EX_GRIDLINES, -1) ; show grid lines
SendMessage_(ListIconGadget, #LVM_SETEXTENDEDLISTVIEWSTYLE, #LVS_EX_FULLROWSELECT, -1) ; the entire row is highlighted when the item is selected
SendMessage_(ListIconGadget, #LVM_SETEXTENDEDLISTVIEWSTYLE, #LVS_EX_HEADERDRAGDROP, -1) ; allows manual column reordering
SendMessage_(ListIconGadget, #LVM_SETEXTENDEDLISTVIEWSTYLE, #LVS_EX_ONECLICKACTIVATE, -1) ; the following two underline hovered items
SendMessage_(ListIconGadget, #LVM_SETEXTENDEDLISTVIEWSTYLE, #LVS_EX_UNDERLINEHOT, -1)
SendMessage_(ListIconGadget, #LVM_SETEXTENDEDLISTVIEWSTYLE, #LVS_EX_CHECKBOXES, -1) ; show checkboxes for every item
AddListIconGadgetItem(0, 0, "Column 1"+Chr(10)+"Column 2"+Chr(10)+"Column 3"+Chr(10)+"Column 4", 0)
AddListIconGadgetItem(0, 1, "The first column"+Chr(10)+"must"+Chr(10)+"always"+Chr(10)+"be", 0)
AddListIconGadgetItem(0, 2, "left aligned,"+Chr(10)+"the others"+Chr(10)+"may"+Chr(10)+"not.", 0)
Repeat
EventID.l = WaitWindowEvent()
Select EventID
Case #PB_EventGadget
row = 0 ; for example (this is just to demonstrate the use of List View checkboxes)
state = SendMessage_(ListIconGadget, #LVM_GETITEMSTATE, row, #LVIS_STATEIMAGEMASK) >> 12 ; retrieves checkbox state
MessageRequester("Row " + Str(row) +" checkbox state:", Str(state), 0)
lpl\iItem = row
lpl\state = 1 << 12 ; 0 disables the checkbox, 1 clears it, 2 sets it
SendMessage_(ListIconGadget, #LVM_SETITEMSTATE, row, @lpl) ; sets checkbox state
Case #PB_EventCloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
End
El_Choni