Всем доброго дня!
Подскажите, как можно создать чекбокс в виртуальном ListView.
$LVS_EX_CHECKBOXES не работает, появляется просто пустая область.
Подскажите, как можно создать чекбокс в виртуальном ListView.
$LVS_EX_CHECKBOXES не работает, появляется просто пустая область.
Код:
; Виртуальный ListView
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <GuiListView.au3>
#Include <APIConstants.au3>
#Include <WinAPIEx.au3>
Global $hGui, $hEdit, $idEditSearch, $hLV, $iItems = 100000, $aItems[$iItems][3]
; Create GUI
$hGui = GUICreate( "Virtual ListView", 300, 230 )
Local $Button1 = GUICtrlCreateButton("Button1", 10, 8, 75, 25)
; Create ListView
Local $idLV = GUICtrlCreateListView( "", 10, 40, 300-20, 200-20, BitOR($LVS_OWNERDATA,$LVS_SHOWSELALWAYS) )
_GUICtrlListView_SetExtendedListViewStyle($idLV, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES,$LVS_EX_CHECKBOXES))
$hLV = GUICtrlGetHandle( $idLV ) ; Virtual listview Reduces flicker
; Создаем столбцы
_GUICtrlListView_AddColumn( $hLV, "Items1", 100 )
_GUICtrlListView_AddColumn( $hLV, "Items2", 100 )
_GUICtrlListView_AddColumn( $hLV, "Items3", 100 )
; Создаем массив
For $i = 0 To $iItems - 1
$aItems[$i][0]='СтрокаI '&$i+1
$aItems[$i][1]='СтрокаII '&$i+1
$aItems[$i][2]='СтрокаIII '&$i+1
Next
GUIRegisterMsg( $WM_NOTIFY, "WM_NOTIFY" ) ; Заполнить структуру виртуального ListView
GUICtrlSendMsg( $idLV, $LVM_SETITEMCOUNT, $iItems, 0 ) ; Display items
GUISetState(@SW_SHOW)
; Message loop
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$hLV = GUICtrlGetHandle( $idLV )
$IndexListView=_GUICtrlListView_GetSelectedIndices($idLV) ; Индекс выделенной записи
$Name=_GUICtrlListView_GetItemText($hLV,$IndexListView,0) ; Текст
MsgBox(0,'',$Name)
EndSwitch
WEnd
Func WM_NOTIFY( $hWnd, $iMsg, $wParam, $lParam )
Local Static $tText = DllStructCreate( "wchar[1000]" ) ; Размерность данных в столбцах
Local Static $pText = DllStructGetPtr( $tText )
Local $tNMHDR, $hWndFrom, $iCode
$tNMHDR = DllStructCreate( $tagNMHDR, $lParam )
$hWndFrom = HWnd( DllStructGetData( $tNMHDR, "hWndFrom" ) )
$iCode = DllStructGetData( $tNMHDR, "Code" )
Switch $hWndFrom
Case $hLV
Switch $iCode
; Отобразить виртуальный ListView
Case $LVN_GETDISPINFOW
Local $tNMLVDISPINFO = DllStructCreate( $tagNMLVDISPINFO, $lParam )
$ColumnNumb=DllStructGetData( $tNMLVDISPINFO, "SubItem" ) ; Номер столбца, для которого ведется опрос
If BitAND( DllStructGetData( $tNMLVDISPINFO, "Mask" ), $LVIF_TEXT ) Then
Local $sItem = $aItems[DllStructGetData($tNMLVDISPINFO,"Item")][$ColumnNumb] ; Данные в столбце
DllStructSetData( $tText, 1, $sItem )
DllStructSetData( $tNMLVDISPINFO, "Text", $pText )
DllStructSetData( $tNMLVDISPINFO, "TextMax", StringLen( $sItem ) )
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc