' Listbox_kolom.bas
' Gebaseerd op een Public domain sample for PB/DLL 6.0 by Borje Hagsten, June 18, 2000
'
#COMPILE EXE
#INCLUDE "WIN32API.INC"
#INCLUDE "COMMCTRL.INC"
%ID_LISTVIEW = 20
GLOBAL hDlg AS LONG
GLOBAL hListView AS LONG
GLOBAL TheEnd AS LONG
TYPE BrowseInfo
hWndOwner AS LONG
pIDLRoot AS LONG
pszDisplayName AS LONG
lpszTitle AS LONG
ulFlags AS LONG
lpfnCallback AS LONG
lParam AS LONG
iImage AS LONG
END TYPE
SUB Wait(time AS LONG)
LOCAL r AS LONG
FOR r=1 TO time/25
DIALOG DOEVENTS
SLEEP(30)
IF TheEnd<>0 THEN EXIT FOR
NEXT r
END SUB
SUB EmptyListView
CALL ListView_DeleteAllItems(hListView) 'Empty ListView
END SUB
SUB RenewListView
lRes& = SendMessage(hListView, %WM_SETREDRAW, -1, 0) 'Redraw
listview
lRes& = InvalidateRect(hListView, BYVAL %NULL, 0)
UpDateWindow hListView
END SUB
SUB AddItem(kolom1 AS STRING,kolom2 AS STRING,kolom3 AS STRING,kolom4 AS STRING,kolom5 AS
STRING, kolom6 AS STRING)
LOCAL lngItem AS LONG
LOCAL lplvi AS LVITEM
lngItem = ListView_InsertItem(hListView,lplvi )
CALL ListView_SetItemText(hListView, lngItem, 0, BYVAL STRPTR(Kolom1))
CALL ListView_SetItemText(hListView, lngItem, 1, BYVAL STRPTR(Kolom2))
CALL ListView_SetItemText(hListView, lngItem, 2, BYVAL STRPTR(Kolom3))
CALL ListView_SetItemText(hListView, lngItem, 3, BYVAL STRPTR(Kolom4))
CALL ListView_SetItemText(hListView, lngItem, 4, BYVAL STRPTR(Kolom5))
CALL ListView_SetItemText(hListView, lngItem, 5, BYVAL STRPTR(Kolom6))
END SUB
CALLBACK FUNCTION Cancel
DIALOG END hDlg,0
TheEnd=1
FUNCTION=1
END FUNCTION
'いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい
' Startpunt - maak dialoog aan met de listbox
'いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい
FUNCTION PBMAIN () AS LONG
LOCAL x AS LONG, y AS LONG, w AS LONG, xx AS LONG, yy AS LONG
LOCAL Stijl AS LONG
LOCAL r AS LONG
'Create a new dialog template
Stijl=%DS_MODALFRAME OR %WS_CAPTION OR %WS_SYSMENU OR %DS_CENTER
DIALOG NEW hWndMain2&, "Demo listbox with Colomns",,,
398, 317, Stijl, 0 TO hDlg
DIALOG GET SIZE hDlg TO x, y
CONTROL ADD BUTTON,
hDlg,%IDCancel,"Cancel",300,290,50,20 CALL Cancel
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Initialize ListView control
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LOCAL iccex AS INIT_COMMON_CONTROLSEX
iccex.dwSize = SIZEOF(iccex)
iccex.dwICC = %ICC_LISTVIEW_CLASSES
CALL InitCommonControlsEx(iccex)
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Build and setup ListView control
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LOCAL Style AS LONG
Style = %WS_CHILD OR %WS_VISIBLE OR %LVS_REPORT
OR %LVS_SHAREIMAGELISTS OR _
%LVS_SORTASCENDING OR
%LVS_SHOWSELALWAYS
CONTROL ADD "SysListView32", hDlg,
%ID_LISTVIEW,"", 4, 12, x& - 12, 267, Style, _
%WS_EX_CLIENTEDGE
CONTROL HANDLE hDlg,%ID_LISTVIEW TO hListView
Style = SendMessage
(hListView,%LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
Style = Style OR %LVS_EX_FULLROWSELECT OR
%LVS_EX_INFOTIP
SendMessage hListView,
%LVM_SETEXTENDEDLISTVIEWSTYLE, 0, BYVAL Style
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Setup ListView columns
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LOCAL LVC AS LV_COLUMN
LOCAL zText AS ASCIIZ * 256
CONTROL GET SIZE hDlg, %ID_LISTVIEW TO x, y
DIALOG UNITS hDlg, x, y TO PIXELS xx, yy
'in XX en YY zitten nu de grootte van de
dialoog in pixels
LVC.mask = %LVCF_FMT OR %LVCF_TEXT OR
%LVCF_WIDTH
zText = "Item"
LVC.pszText = VARPTR(zText)
LVC.fmt = %LVCFMT_LEFT 'links uitlijnen deze
kolom
LVC.cx = xx * 0.25 'breedte maat voor deze
kolom
LVC.iOrder = 0
CONTROL SEND hDlg,%ID_LISTVIEW,
%LVM_INSERTCOLUMN, 0, VARPTR(LVC)
zText = "Kolom 2"
LVC.pszText = VARPTR(zText)
LVC.fmt = %LVCFMT_LEFT 'links uitlijnen deze
kolom
LVC.cx = xx * 0.11 'breedte maat voor deze
kolom
LVC.iOrder = 1
CONTROL SEND hDlg,%ID_LISTVIEW,
%LVM_INSERTCOLUMN, 1, VARPTR(LVC)
zText = "Kolom 3"
LVC.pszText = VARPTR(zText)
LVC.fmt = %LVCFMT_LEFT 'links uitlijnen
LVC.cx = xx * 0.11 'breedte maat voor deze
kolom
LVC.iOrder = 2
CONTROL SEND hDlg,%ID_LISTVIEW,
%LVM_INSERTCOLUMN, 2, VARPTR(LVC)
zText = "Centreer"
LVC.pszText = VARPTR(zText)
LVC.fmt = %LVCFMT_CENTER 'centreren deze kolom
LVC.cx = xx * 0.17 'breedte maat voor deze
kolom
LVC.iOrder = 3
CONTROL SEND hDlg,%ID_LISTVIEW,
%LVM_INSERTCOLUMN, 3, VARPTR(LVC)
zText = "Links"
LVC.pszText = VARPTR(zText)
LVC.fmt = %LVCFMT_LEFT 'links uitlijnen deze
kolom
LVC.cx = xx * 0.17 'breedte maat voor deze
kolom
LVC.iOrder = 4
CONTROL SEND hDlg,%ID_LISTVIEW,
%LVM_INSERTCOLUMN, 4, VARPTR(LVC)
zText = "Rechts"
LVC.pszText = VARPTR(zText)
LVC.fmt = %LVCFMT_RIGHT 'rechts uitlijnen
LVC.cx = xx * 0.17 'breedte maat voor deze
kolom
LVC.iOrder = 5
CONTROL SEND hDlg,%ID_LISTVIEW,
%LVM_INSERTCOLUMN, 5, VARPTR(LVC)
'Display the dialog
DIALOG SHOW MODELESS hDlg
FOR r=1 TO 20
AddItem "Item
"+FORMAT$(r,"##")+" - Testtekst1", _
"Testtekst2","Testtekst3","Testtekst4","Testtekst5","TestTekst6"
Wait(500) 'wait 500 ms
per item, but DO dialog doevents in the waiting time every 30 ms
NEXT r
RenewListView 'redraw and so on
MSGBOX("Number of elements in the
listview: "+STR$(ListView_GetItemCount(hListView)))
END FUNCTION