' 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