I have just been working on the following exe as a sample listview with
gridlines. It is set for multi select, however I cannot get the FULLROWSELECT to show. Also, I would like to have the ListView to respond
to the Mouse duoble click in the callback function and would appreciate
any help.
'==============================================================================
'
' Testing listview routines
' David Morris 23/01/2000
'==============================================================================
' ** Eliminate unnecessary macros
%NOANIMATE = 1
%NODRAGLIST = 1
%NOHEADER = 1
%NOIMAGELIST = 1
'%NOLISTVIEW = 1
%NOTABCONTROL = 1
%NOTRACKBAR = 1
%NOTREEVIEW = 1
%NOUPDOWN = 1
#COMPILE EXE
#INCLUDE "WIN32API.INC"
#INCLUDE "COMMCTRL.INC"
%IDOK = 1
%IDCANCEL = 2
%IDTEXT = 100
%BS_DEFAULT = 1
%IDLISTVIEW = 101
'%LVS_EX_TRACKSELECT = &H8 'Should be in your "COMMCTRL.INC"
'%LVS_EX_GRIDLINES = &H1 'Should be in your "COMMCTRL.INC"
'------------------------------------------------------------------------------
' Global variable to recieve the user name
GLOBAL UserName AS STRING
GLOBAL hListView AS LONG
'------------------------------------------------------------------------------
SUB AppendListView (hList AS LONG, Rec() AS STRING )
DIM z AS INTEGER
DIM iStatus AS INTEGER
DIM szStr AS ASCIIZ * 300
DIM lvi AS LV_ITEM
LOCAL x AS LONG
'this will be the next record
lvi.iItem = ListView_GetItemCount(hList) '+ 1
lvi.mask = %LVIF_TEXT
lvi.stateMask = %LVIS_FOCUSED '%LVIS_SELECTED
lvi.pszText = VARPTR(szStr)
FOR z = 0 TO UBOUND(Rec)
szStr = Rec(z)
lvi.iSubItem = z
lvi.lParam = lvi.iItem
IF z = 0 THEN
lvi.mask = %LVIF_TEXT OR %LVIF_PARAM OR %LVIF_STATE
iStatus = ListView_InsertItem (hList, lvi)
ELSE
lvi.mask = %LVIF_TEXT
iStatus = ListView_SetItem (hList, lvi)
END IF
NEXT
END SUB
CALLBACK FUNCTION OkButton()
CONTROL GET TEXT CBHNDL, %IDTEXT TO UserName
DIALOG END CBHNDL, 1
END FUNCTION
CALLBACK FUNCTION CancelButton()
DIALOG END CBHNDL, 0
END FUNCTION
CALLBACK FUNCTION ListViewProcess ()
IF CBCTLMSG = %NM_DBLCLK THEN
MSGBOX "Double Click",48,"LISTVIEW 'NOT working
END IF
END FUNCTION
'------------------------------------------------------------------------------
FUNCTION PBMAIN () AS LONG
$REGISTER NONE
LOCAL hDlg AS LONG
LOCAL result AS LONG, zText AS ASCIIZ * 255
LOCAL icc AS INIT_COMMON_CONTROLSEX
LOCAL LVC AS LV_COLUMN, i AS LONG,r AS LONG, c AS LONG
%NumCols = 5:%NumRows = 10
DIM Rec(%NumCols)AS STRING
LOCAL LVI AS LV_ITEM
'%LVS_EX_TRACKSELECT = &H8
' InitCommonControls
icc.dwICC = %ICC_DATE_CLASSES OR %ICC_BAR_CLASSES OR %ICC_LISTVIEW_CLASSES
icc.dwSize = SIZEOF(icc)
InitCommonControlsEx icc
' ** Create a new dialog template
DIALOG NEW 0, "What is your name?", ,, 460, 250, 0, 0 TO hDlg
' ** Add controls to it
CONTROL ADD TEXTBOX, hDlg, %IDTEXT, "", 14, 12, 134, 12, 0
CONTROL ADD BUTTON, hDlg, %IDOK, "OK", 34, 32, 40, 14, %BS_DEFAULT CALL OkButton
CONTROL ADD BUTTON, hDlg, %IDCANCEL, "Cancel", 84, 32, 40, 14, 0 CALL CancelButton
'$WC_LISTVIEW
CONTROL ADD "SysListView32", hDlg, %IDLISTVIEW,"",0,50,300,180, _
%WS_border OR %WS_Child OR %WS_visible OR _
%LVS_Report OR %LVS_SHOWSELALWAYS, _
%WS_EX_CLIENTEDGE CALL ListViewProcess
CONTROL HANDLE hDlg,%IDLISTVIEW TO hListView
CONTROL SEND hDlg,%IDLISTVIEW,%LVM_SETEXTENDEDLISTVIEWSTYLE, _
%LVS_EX_GRIDLINES, 1
CONTROL SEND hDlg,%IDLISTVIEW,%LVM_SETEXTENDEDLISTVIEWSTYLE, _
%LVS_EX_FULLROWSELECT, 1 'NOT WORKING YET
lvC.mask = %LVCF_FMT OR %LVCF_WIDTH OR %LVCF_TEXT OR %LVCF_SUBITEM
lvC.fmt = %LVCFMT_LEFT
lvC.cx = 90
LVC.cchTextMax = 255
FOR c = 1 TO %NumCols
zText = "Column " + FORMAT$(c - 1)
LVC.pszText = VARPTR(zText)
CONTROL SEND hDlg,%IDLISTVIEW,%LVM_INSERTCOLUMN, c, VARPTR(lvc)
NEXT
FOR r = 1 TO %NumRows
FOR c = 1 TO %NumCols
rec(c-1) = "Row " + FORMAT$(r) + " Col " + FORMAT$(c-1)
NEXT c
AppendListView hListView, Rec()
NEXT r
' ** Display the dialog
DIALOG SHOW MODAL hDlg TO result
' ** Check the result
IF result THEN
MSGBOX "Hello " & UserName
END IF
END FUNCTION
gridlines. It is set for multi select, however I cannot get the FULLROWSELECT to show. Also, I would like to have the ListView to respond
to the Mouse duoble click in the callback function and would appreciate
any help.
'==============================================================================
'
' Testing listview routines
' David Morris 23/01/2000
'==============================================================================
' ** Eliminate unnecessary macros
%NOANIMATE = 1
%NODRAGLIST = 1
%NOHEADER = 1
%NOIMAGELIST = 1
'%NOLISTVIEW = 1
%NOTABCONTROL = 1
%NOTRACKBAR = 1
%NOTREEVIEW = 1
%NOUPDOWN = 1
#COMPILE EXE
#INCLUDE "WIN32API.INC"
#INCLUDE "COMMCTRL.INC"
%IDOK = 1
%IDCANCEL = 2
%IDTEXT = 100
%BS_DEFAULT = 1
%IDLISTVIEW = 101
'%LVS_EX_TRACKSELECT = &H8 'Should be in your "COMMCTRL.INC"
'%LVS_EX_GRIDLINES = &H1 'Should be in your "COMMCTRL.INC"
'------------------------------------------------------------------------------
' Global variable to recieve the user name
GLOBAL UserName AS STRING
GLOBAL hListView AS LONG
'------------------------------------------------------------------------------
SUB AppendListView (hList AS LONG, Rec() AS STRING )
DIM z AS INTEGER
DIM iStatus AS INTEGER
DIM szStr AS ASCIIZ * 300
DIM lvi AS LV_ITEM
LOCAL x AS LONG
'this will be the next record
lvi.iItem = ListView_GetItemCount(hList) '+ 1
lvi.mask = %LVIF_TEXT
lvi.stateMask = %LVIS_FOCUSED '%LVIS_SELECTED
lvi.pszText = VARPTR(szStr)
FOR z = 0 TO UBOUND(Rec)
szStr = Rec(z)
lvi.iSubItem = z
lvi.lParam = lvi.iItem
IF z = 0 THEN
lvi.mask = %LVIF_TEXT OR %LVIF_PARAM OR %LVIF_STATE
iStatus = ListView_InsertItem (hList, lvi)
ELSE
lvi.mask = %LVIF_TEXT
iStatus = ListView_SetItem (hList, lvi)
END IF
NEXT
END SUB
CALLBACK FUNCTION OkButton()
CONTROL GET TEXT CBHNDL, %IDTEXT TO UserName
DIALOG END CBHNDL, 1
END FUNCTION
CALLBACK FUNCTION CancelButton()
DIALOG END CBHNDL, 0
END FUNCTION
CALLBACK FUNCTION ListViewProcess ()
IF CBCTLMSG = %NM_DBLCLK THEN
MSGBOX "Double Click",48,"LISTVIEW 'NOT working
END IF
END FUNCTION
'------------------------------------------------------------------------------
FUNCTION PBMAIN () AS LONG
$REGISTER NONE
LOCAL hDlg AS LONG
LOCAL result AS LONG, zText AS ASCIIZ * 255
LOCAL icc AS INIT_COMMON_CONTROLSEX
LOCAL LVC AS LV_COLUMN, i AS LONG,r AS LONG, c AS LONG
%NumCols = 5:%NumRows = 10
DIM Rec(%NumCols)AS STRING
LOCAL LVI AS LV_ITEM
'%LVS_EX_TRACKSELECT = &H8
' InitCommonControls
icc.dwICC = %ICC_DATE_CLASSES OR %ICC_BAR_CLASSES OR %ICC_LISTVIEW_CLASSES
icc.dwSize = SIZEOF(icc)
InitCommonControlsEx icc
' ** Create a new dialog template
DIALOG NEW 0, "What is your name?", ,, 460, 250, 0, 0 TO hDlg
' ** Add controls to it
CONTROL ADD TEXTBOX, hDlg, %IDTEXT, "", 14, 12, 134, 12, 0
CONTROL ADD BUTTON, hDlg, %IDOK, "OK", 34, 32, 40, 14, %BS_DEFAULT CALL OkButton
CONTROL ADD BUTTON, hDlg, %IDCANCEL, "Cancel", 84, 32, 40, 14, 0 CALL CancelButton
'$WC_LISTVIEW
CONTROL ADD "SysListView32", hDlg, %IDLISTVIEW,"",0,50,300,180, _
%WS_border OR %WS_Child OR %WS_visible OR _
%LVS_Report OR %LVS_SHOWSELALWAYS, _
%WS_EX_CLIENTEDGE CALL ListViewProcess
CONTROL HANDLE hDlg,%IDLISTVIEW TO hListView
CONTROL SEND hDlg,%IDLISTVIEW,%LVM_SETEXTENDEDLISTVIEWSTYLE, _
%LVS_EX_GRIDLINES, 1
CONTROL SEND hDlg,%IDLISTVIEW,%LVM_SETEXTENDEDLISTVIEWSTYLE, _
%LVS_EX_FULLROWSELECT, 1 'NOT WORKING YET
lvC.mask = %LVCF_FMT OR %LVCF_WIDTH OR %LVCF_TEXT OR %LVCF_SUBITEM
lvC.fmt = %LVCFMT_LEFT
lvC.cx = 90
LVC.cchTextMax = 255
FOR c = 1 TO %NumCols
zText = "Column " + FORMAT$(c - 1)
LVC.pszText = VARPTR(zText)
CONTROL SEND hDlg,%IDLISTVIEW,%LVM_INSERTCOLUMN, c, VARPTR(lvc)
NEXT
FOR r = 1 TO %NumRows
FOR c = 1 TO %NumCols
rec(c-1) = "Row " + FORMAT$(r) + " Col " + FORMAT$(c-1)
NEXT c
AppendListView hListView, Rec()
NEXT r
' ** Display the dialog
DIALOG SHOW MODAL hDlg TO result
' ** Check the result
IF result THEN
MSGBOX "Hello " & UserName
END IF
END FUNCTION
Comment