행위

"SQLKey"의 두 판 사이의 차이

DB CAFE

(_EditKeyList)
1번째 줄: 1번째 줄:
 
+
== SQLKey ==
  
 
=== _EditKeyList ===
 
=== _EditKeyList ===
41번째 줄: 41번째 줄:
 
         GUIDelete()
 
         GUIDelete()
 
EndFunc  ;==>Example
 
EndFunc  ;==>Example
 +
</source>
 +
 +
=== Sqlite-Keylist===
 +
#include <Array.au3>
 +
#include <SQLite.au3>
 +
#include <SQLite.dll.au3>
 +
#include <Extras\WM_NOTIFY.au3>
 +
#include <GUIConstantsEx.au3>
 +
#include <GuiImageList.au3>
 +
#include <GuiListView.au3>
 +
#include <GuiStatusBar.au3>
 +
#include <WindowsConstants.au3>
 +
#include <Extras\WM_NOTIFY.au3>
 +
#include <GuiButton.au3>
 +
 +
 +
;~ _SQLite_Startup(@ScriptDir & "\sqlite3_x64.dll", False, 1)
 +
_SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1)
 +
 +
;~ _SQLite_Startup() ; Load the DLL
 +
If @error Then Exit MsgBox(0, "Error", "Unable to start SQLite, Please verify your DLL")
 +
 +
Global $iTimer,$g_idListView, $g_hStatusBar, $g_iIndex = -1
 +
Global $sDatabase = @ScriptDir & '\SqlminusDBtest.db'
 +
Global $hDatabase = _SQLite_Open($sDatabase) ; Create the database file and get the handle for the database
 +
Global $aResult, $iRows, $iColumns ; $iRows and $iColuums are useless but they cannot be omitted from the function call so we declare them
 +
 +
 +
 +
$iRval = _SQLite_GetTable2d($hDatabase, 'SELECT KEY_NO, (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC  FROM TB_KEY;', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult
 +
 +
;~ _ArrayDisplay($aResult, "Results from the query")
 +
KeyList($aResult)
 +
 +
Func KeyList($aResult)
 +
 +
Local $hGUI = GUICreate("ListView Hit Test (v" & @AutoItVersion & ")", 800, 500,-1,-1,BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))
 +
 +
$g_idListView = GUICtrlCreateListView("", 2, 30, 800, 446,-1,-1)
 +
$g_hStatusBar = _GUICtrlStatusBar_Create($hGUI, -1, "")
 +
 +
$g_hBtn_Add = _GUICtrlButton_Create($hGUI, "+", 700, 5, 20, 20)
 +
;~ GUICtrlSetFont($g_hBtn_Add, 16, 400, 0, "Courier New")
 +
$g_hBtn_Del = _GUICtrlButton_Create($hGUI, "-", 730, 5, 20, 20)
 +
;~ GUICtrlSetFont($g_hBtn_Del, 16, 400, 0, "Courier New")
 +
 +
 +
 +
 +
    $iTimer = TimerInit()
 +
$g_idListView = GUICtrlGetHandle($g_idListView) ; get the handle for use in the notify events
 +
 +
_GUICtrlListView_AddColumn($g_idListView,$aResult[0][0], 50)
 +
_GUICtrlListView_AddColumn($g_idListView,$aResult[0][1], 100)
 +
_GUICtrlListView_AddColumn($g_idListView,$aResult[0][2], 100)
 +
_GUICtrlListView_AddColumn($g_idListView,$aResult[0][3], 400)
 +
_GUICtrlListView_AddColumn($g_idListView,$aResult[0][4], 200)
 +
 +
_WM_NOTIFY_Register()
 +
 +
_ArrayDelete($aResult, 0)
 +
_GUICtrlListView_SetItemCount($g_idListView, UBound($aResult) - 1)
 +
_GUICtrlListView_AddArray($g_idListView,$aResult)
 +
 +
_DebugPrint("Information", "Load time: " & TimerDiff($iTimer) / 1000 & " seconds")
 +
 +
GUISetState(@SW_SHOW)
 +
 +
_GUICtrlListView_SetSelectedColumn($g_idListView, 0)
 +
_GUICtrlListView_SetSelectionMark($g_idListView, 0)
 +
 +
 +
; Loop until user exits
 +
Do
 +
Until GUIGetMsg() = $GUI_EVENT_CLOSE
 +
 +
;~ _AutoScrollEdit()
 +
 +
GUIDelete()
 +
 +
 +
EndFunc
 +
 +
_SQLite_Close($hDatabase)
 +
_SQLite_Shutdown()
 +
 +
Func _SaveKey($key_no="")
 +
        Local $aHit,$aItem
 +
 +
        $aHit = _GUICtrlListView_HitTest($g_idListView)
 +
_DebugPrint($aHit[0] & "  : " & $g_iIndex )
 +
 +
        If ($aHit[0] <> -1) And ($aHit[0] <> $g_iIndex) Then
 +
                _GUICtrlStatusBar_SetText($g_hStatusBar, @TAB & StringFormat("HitTest Item: %d", $aHit[0]&":"&$aHit[1]))
 +
$aItem = _GUICtrlListView_GetItem($g_idListView, $aHit[0],0)
 +
;~ _ArrayDisplay($aItem,"")
 +
_DebugPrint("_Savekey....$aItem[3]  : " & $aItem[3] )
 +
;~ $iRval = _SQLite_GetTable($hDatabase, 'SELECT KEY_NO, (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC  FROM TB_KEY WHERE KEY_NO='& $aItem[3] &';', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult
 +
 +
;~ _ArrayDisplay($aResult, "Results from the query")
 +
 +
;~ $key_no = $aItem[3]
 +
 +
;~ $iRval = _SQLite_GetTable($hDatabase, 'SELECT (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC  FROM TB_KEY WHERE KEY_NO=' & $key_no &';', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult
 +
;~ _DebugPrint("$iRval : " & $iRval[0])
 +
;~ _ArrayDisplay($iRval, "Query Result")
 +
 +
;~ _SaveKey($aItem[3])
 +
;~ _GUICtrlListView_SetItem($g_idListView, "New Item 1", 1,2)
 +
 +
;~ _GUICtrlListView_SetSelectedColumn($g_idListView, $aItem[3])
 +
;~ _DebugPrint( "Selected Column: " & _GUICtrlListView_GetSelectedColumn($g_idListView))
 +
;~ $aItem = _GUICtrlListView_GetItem($idListview, $aHit[0])
 +
;~     MsgBox($MB_SYSTEMMODAL, "Information", "Selected Column: " & _GUICtrlListView_GetSelectedColumn($g_idListView))
 +
;~                _GUICtrlStatusBar_SetText($g_hStatusBar, @TAB & StringFormat("HitTest Item: %d", $aHit[0]&":"&$aHit[1]))
 +
                $g_iIndex = $aHit[0]
 +
        EndIf
 +
EndFunc
 +
 +
 +
 +
Func _ListView_Click()
 +
        Local $aHit,$aItem
 +
 +
        $aHit = _GUICtrlListView_HitTest($g_idListView)
 +
_DebugPrint($aHit[0] & "  : " & $g_iIndex )
 +
        If ($aHit[0] <> -1) And ($aHit[0] <> $g_iIndex) Then
 +
                _GUICtrlStatusBar_SetText($g_hStatusBar, @TAB & StringFormat("HitTest Item: %d", $aHit[0]&":"&$aHit[1]))
 +
$aItem = _GUICtrlListView_GetItem($g_idListView, $aHit[0],0)
 +
;~ _ArrayDisplay($aItem,"")
 +
_DebugPrint("$aItem[3]  : " & $aItem[3] )
 +
;~ $iRval = _SQLite_GetTable($hDatabase, 'SELECT KEY_NO, (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC  FROM TB_KEY WHERE KEY_NO='& $aItem[3] &';', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult
 +
 +
;~ _ArrayDisplay($aResult, "Results from the query")
 +
 +
;~ $key_no = $aItem[3]
 +
 +
;~ $iRval = _SQLite_GetTable($hDatabase, 'SELECT (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC  FROM TB_KEY WHERE KEY_NO=' & $key_no &';', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult
 +
;~ _DebugPrint("$iRval : " & $iRval[0])
 +
;~ _ArrayDisplay($iRval, "Query Result")
 +
 +
;~ _SaveKey($aItem[3])
 +
;~ _GUICtrlListView_SetItem($g_idListView, "New Item 1", 1,2)
 +
 +
;~ _GUICtrlListView_SetSelectedColumn($g_idListView, $aItem[3])
 +
;~ _DebugPrint( "Selected Column: " & _GUICtrlListView_GetSelectedColumn($g_idListView))
 +
;~ $aItem = _GUICtrlListView_GetItem($idListview, $aHit[0])
 +
;~     MsgBox($MB_SYSTEMMODAL, "Information", "Selected Column: " & _GUICtrlListView_GetSelectedColumn($g_idListView))
 +
;~                _GUICtrlStatusBar_SetText($g_hStatusBar, @TAB & StringFormat("HitTest Item: %d", $aHit[0]&":"&$aHit[1]))
 +
                $g_iIndex = $aHit[0]
 +
        EndIf
 +
EndFunc  ;==>_ListView_Click
 +
 +
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
 +
        #forceref $hWnd, $iMsg, $wParam
 +
        Local $hWndListView = $g_idListView
 +
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView2, $hWndListView3, $tInfo
 +
 +
        If Not IsHWnd($g_idListView) Then $hWndListView = GUICtrlGetHandle($g_idListView)
 +
 +
        Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
 +
        Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
 +
    local $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
 +
        Local $iCode = DllStructGetData($tNMHDR, "Code")
 +
Local $aRET[3]
 +
 +
        Switch $hWndFrom
 +
                Case $hWndListView
 +
                        Switch $iCode
 +
                                Case $LVN_COLUMNCLICK ; A column was clicked
 +
                                        _WM_NOTIFY_DebugEvent("$LVN_COLUMNCLICK", $tagNMLISTVIEW, $lParam, "IDFrom,,Item,SubItem,NewState,OldState,Changed,ActionX,ActionY,Param")
 +
                                        ; No return value
 +
_DebugPrint("$LVN_COLUMNCLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
 +
"-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
 +
"-->Code:" & @TAB & $iCode & @CRLF & _
 +
"-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @CRLF & _
 +
"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _
 +
"-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _
 +
"-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _
 +
"-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _
 +
"-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _
 +
"-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _
 +
"-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
 +
                                Case $LVN_KEYDOWN ; A key has been pressed
 +
                                        _WM_NOTIFY_DebugEvent("$LVN_KEYDOWN", $tagNMLVKEYDOWN, $lParam, "IDFrom,,VKey,Flags")
 +
                                        ; No return value
 +
Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
 +
;~ $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
 +
                                        _WM_NOTIFY_DebugEvent("$NM_CLICK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
 +
 +
    $aInfo = _GUICtrlListView_GetColumn($hWndListView, 0)
 +
MsgBox($MB_SYSTEMMODAL, "Information", "Column 0 Width: " & $aInfo[4])
 +
 +
_DebugPrint("$NM_CLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
 +
"-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
 +
"-->Code:" & @TAB & $iCode & @CRLF & _
 +
"-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @CRLF & _
 +
"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _
 +
"-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _
 +
"-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _
 +
"-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _
 +
"-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _
 +
"-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _
 +
"-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @CRLF & _
 +
"-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
 +
 +
MsgBox($MB_SYSTEMMODAL, "Information", "Item Text: " & _GUICtrlListView_GetItemText($hWndListView,DllStructGetData($tInfo, "Item") ,2))
 +
 +
;~                                        _ListView_Click()
 +
                                        ; No return value
 +
                                Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
 +
                                        _WM_NOTIFY_DebugEvent("$NM_DBLCLK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
 +
;~ $aRET[0] = $tNMHDR.IDFrom
 +
 +
;~ $aTMP = _GUICtrlListView_SubItemHitTest(GUICtrlGetHandle($aRET[0]))
 +
;~ $aRET[1] = $aTMP[0]
 +
;~ $aRET[2] = $aTMP[1]
 +
 +
_DebugPrint("$NM_DBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
 +
"-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
 +
"-->Code:" & @TAB & $iCode & @CRLF & _
 +
"-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @CRLF & _
 +
"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _
 +
"-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _
 +
"-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _
 +
"-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _
 +
"-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _
 +
"-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _
 +
"-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @CRLF & _
 +
"-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
 +
;~ MsgBox($MB_SYSTEMMODAL, "Information", "Item Text: " & _GUICtrlListView_GetItemText($hWndListView, DllStructGetData($tInfo, "Index"),DllStructGetData($tInfo, "SubItem")))
 +
 +
;~ $aItem = _GUICtrlListView_GetItemTextArray($hWndListView, -1)
 +
;~ For $i = 1 To $aItem[0]
 +
;~ $sText &= StringFormat("Column[%2d] %s", $i, $aItem[$i]) & @CRLF
 +
;~ Next
 +
 +
;~ MsgBox($MB_SYSTEMMODAL, "Information", "Item 2 (All Columns) Text: " & @CRLF & @CRLF & $sText)
 +
 +
 +
 +
;~ _SaveKey()
 +
                                        ; No return value
 +
                                Case $NM_KILLFOCUS ; The control has lost the input focus
 +
                                        _WM_NOTIFY_DebugEvent("$NM_KILLFOCUS", $tagNMHDR, $lParam, "hWndFrom,IDFrom")
 +
                                        ; No return value
 +
                                Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
 +
                                        _WM_NOTIFY_DebugEvent("$NM_RCLICK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
 +
                                        ;Return 1 ; not to allow the default processing
 +
                                        Return 0 ; allow the default processing
 +
;~                                Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
 +
;~                                        _WM_NOTIFY_DebugEvent("$NM_RDBLCLK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
 +
;~                                        ; No return value
 +
Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
 +
;~ $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
 +
                                    _WM_NOTIFY_DebugEvent("$NM_RDBLCLK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
 +
_GUICtrlListView_DeleteItem($hWndListView, DllStructGetData($tInfo, "Index"))
 +
 +
;~ _FileWriteToLine ( @ScriptDir&"\Log.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
 +
;~ _FileWriteToLine ( @ScriptDir&"\Data\Log02.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
 +
;~ _FileWriteToLine ( @ScriptDir&"\Data\Log002.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
 +
;~ _FileWriteToLine ( @ScriptDir&"\Log.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
 +
;~ _FileWriteToLine ( @ScriptDir&"\Data\Log02.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
 +
;~ _FileWriteToLine ( @ScriptDir&"\Data\Log002.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
 +
;~ _FileWriteToLine ( @ScriptDir&"\Log.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
 +
;~ _FileWriteToLine ( @ScriptDir&"\Data\Log02.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
 +
;~ _FileWriteToLine ( @ScriptDir&"\Data\Log002.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
 +
 +
_DebugPrint("$NM_RDBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
 +
"-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
 +
"-->Code:" & @TAB & $iCode & @CRLF & _
 +
"-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @CRLF & _
 +
"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _
 +
"-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _
 +
"-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _
 +
"-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _
 +
"-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _
 +
"-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _
 +
"-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @CRLF & _
 +
"-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
 +
;~                          FileClose ($File2)
 +
;~                          FileClose ($File02)
 +
;~                          FileClose ($File002)
 +
; No return value
 +
 +
  $aInfo = _GUICtrlListView_GetColumn($hWndListView, DllStructGetData($tInfo, "Index") )
 +
;~ _ArrayDisplay($aInfo)
 +
MsgBox($MB_SYSTEMMODAL, "Information", "Column 0 Width: " & $aInfo)
 +
 +
                                Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
 +
                                        _WM_NOTIFY_DebugEvent("$NM_RETURN", $tagNMHDR, $lParam, "hWndFrom,IDFrom")
 +
                                        ; No return value
 +
                                Case $NM_SETFOCUS ; The control has received the input focus
 +
                                        _WM_NOTIFY_DebugEvent("$NM_SETFOCUS", $tagNMHDR, $lParam, "hWndFrom,IDFrom")
 +
                                        ; No return value
 +
                        EndSwitch
 +
        EndSwitch
 +
        Return $GUI_RUNDEFMSG
 +
EndFunc  ;==>WM_NOTIFY
 +
 +
 +
Func _DebugPrint($s_text, $line = @ScriptLineNumber)
 +
ConsoleWrite( _
 +
"!===========================================================" & @LF & _
 +
"+======================================================" & @LF & _
 +
"-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
 +
"+======================================================" & @LF)
 +
EndFunc  ;==>_DebugPrint
 
</source>
 
</source>

2024년 6월 16일 (일) 01:53 판

thumb_up 추천메뉴 바로가기


1 SQLKey[편집]

1.1 _EditKeyList[편집]

  • notpad.exe 실행
Func _EditKeyList()
	_DebugPrint("notepad.exe " & $sKeyListFile)
	Run("notepad.exe " & $sKeyListFile)
EndFunc

1.2 _WinAPI_AddFontResourceEx[편집]

  • 폰트 첨부 함수
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
        GUICreate("ListView Get/Set Selection Mark (v" & @AutoItVersion & ")", 400, 300)
        Local $idListview = GUICtrlCreateListView("", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
        GUISetState(@SW_SHOW)

        ; Add columns
        _GUICtrlListView_AddColumn($idListview, "Column 0", 100)

        ; Add items
        _GUICtrlListView_AddItem($idListview, "Item 0")
        _GUICtrlListView_AddItem($idListview, "Item 1")
        _GUICtrlListView_AddItem($idListview, "Item 2")

        ; Select item 1
        _GUICtrlListView_SetSelectionMark($idListview, 1)
        MsgBox($MB_SYSTEMMODAL, "Information", "Selected Mark: " & _GUICtrlListView_GetSelectionMark($idListview))

        ; Loop until the user exits.
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
        GUIDelete()
EndFunc   ;==>Example

1.3 Sqlite-Keylist[편집]

  1. include <Array.au3>
  2. include <SQLite.au3>
  3. include <SQLite.dll.au3>
  4. include <Extras\WM_NOTIFY.au3>
  5. include <GUIConstantsEx.au3>
  6. include <GuiImageList.au3>
  7. include <GuiListView.au3>
  8. include <GuiStatusBar.au3>
  9. include <WindowsConstants.au3>
  10. include <Extras\WM_NOTIFY.au3>
  11. include <GuiButton.au3>


~ _SQLite_Startup(@ScriptDir & "\sqlite3_x64.dll", False, 1)

_SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1)

~ _SQLite_Startup() ; Load the DLL

If @error Then Exit MsgBox(0, "Error", "Unable to start SQLite, Please verify your DLL")

Global $iTimer,$g_idListView, $g_hStatusBar, $g_iIndex = -1 Global $sDatabase = @ScriptDir & '\SqlminusDBtest.db' Global $hDatabase = _SQLite_Open($sDatabase) ; Create the database file and get the handle for the database Global $aResult, $iRows, $iColumns ; $iRows and $iColuums are useless but they cannot be omitted from the function call so we declare them


$iRval = _SQLite_GetTable2d($hDatabase, 'SELECT KEY_NO, (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC FROM TB_KEY;', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult

~ _ArrayDisplay($aResult, "Results from the query")

KeyList($aResult)

Func KeyList($aResult)

Local $hGUI = GUICreate("ListView Hit Test (v" & @AutoItVersion & ")", 800, 500,-1,-1,BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))

$g_idListView = GUICtrlCreateListView("", 2, 30, 800, 446,-1,-1) $g_hStatusBar = _GUICtrlStatusBar_Create($hGUI, -1, "")

$g_hBtn_Add = _GUICtrlButton_Create($hGUI, "+", 700, 5, 20, 20)

~ GUICtrlSetFont($g_hBtn_Add, 16, 400, 0, "Courier New")

$g_hBtn_Del = _GUICtrlButton_Create($hGUI, "-", 730, 5, 20, 20)

~ GUICtrlSetFont($g_hBtn_Del, 16, 400, 0, "Courier New")



   $iTimer = TimerInit()

$g_idListView = GUICtrlGetHandle($g_idListView) ; get the handle for use in the notify events

_GUICtrlListView_AddColumn($g_idListView,$aResult[0][0], 50) _GUICtrlListView_AddColumn($g_idListView,$aResult[0][1], 100) _GUICtrlListView_AddColumn($g_idListView,$aResult[0][2], 100) _GUICtrlListView_AddColumn($g_idListView,$aResult[0][3], 400) _GUICtrlListView_AddColumn($g_idListView,$aResult[0][4], 200)

_WM_NOTIFY_Register()

_ArrayDelete($aResult, 0) _GUICtrlListView_SetItemCount($g_idListView, UBound($aResult) - 1) _GUICtrlListView_AddArray($g_idListView,$aResult)

_DebugPrint("Information", "Load time: " & TimerDiff($iTimer) / 1000 & " seconds")

GUISetState(@SW_SHOW)

_GUICtrlListView_SetSelectedColumn($g_idListView, 0) _GUICtrlListView_SetSelectionMark($g_idListView, 0)


; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE

~ _AutoScrollEdit()

GUIDelete()


EndFunc

_SQLite_Close($hDatabase) _SQLite_Shutdown()

Func _SaveKey($key_no="")

       Local $aHit,$aItem
       $aHit = _GUICtrlListView_HitTest($g_idListView)

_DebugPrint($aHit[0] & "  : " & $g_iIndex )

       If ($aHit[0] <> -1) And ($aHit[0] <> $g_iIndex) Then
               _GUICtrlStatusBar_SetText($g_hStatusBar, @TAB & StringFormat("HitTest Item: %d", $aHit[0]&":"&$aHit[1]))

$aItem = _GUICtrlListView_GetItem($g_idListView, $aHit[0],0)

~ _ArrayDisplay($aItem,"")

_DebugPrint("_Savekey....$aItem[3]  : " & $aItem[3] )

~ $iRval = _SQLite_GetTable($hDatabase, 'SELECT KEY_NO, (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC FROM TB_KEY WHERE KEY_NO='& $aItem[3] &';', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult
~ _ArrayDisplay($aResult, "Results from the query")
~ $key_no = $aItem[3]
~ $iRval = _SQLite_GetTable($hDatabase, 'SELECT (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC FROM TB_KEY WHERE KEY_NO=' & $key_no &';', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult
~ _DebugPrint("$iRval 
" & $iRval[0])
~ _ArrayDisplay($iRval, "Query Result")
~ _SaveKey($aItem[3])
~ _GUICtrlListView_SetItem($g_idListView, "New Item 1", 1,2)
~ _GUICtrlListView_SetSelectedColumn($g_idListView, $aItem[3])
~ _DebugPrint( "Selected Column
" & _GUICtrlListView_GetSelectedColumn($g_idListView))
~ $aItem = _GUICtrlListView_GetItem($idListview, $aHit[0])
~ MsgBox($MB_SYSTEMMODAL, "Information", "Selected Column
" & _GUICtrlListView_GetSelectedColumn($g_idListView))
~ _GUICtrlStatusBar_SetText($g_hStatusBar, @TAB & StringFormat("HitTest Item
 %d", $aHit[0]&":"&$aHit[1]))
               $g_iIndex = $aHit[0]
       EndIf

EndFunc


Func _ListView_Click()

       Local $aHit,$aItem
       $aHit = _GUICtrlListView_HitTest($g_idListView)

_DebugPrint($aHit[0] & "  : " & $g_iIndex )

       If ($aHit[0] <> -1) And ($aHit[0] <> $g_iIndex) Then
               _GUICtrlStatusBar_SetText($g_hStatusBar, @TAB & StringFormat("HitTest Item: %d", $aHit[0]&":"&$aHit[1]))

$aItem = _GUICtrlListView_GetItem($g_idListView, $aHit[0],0)

~ _ArrayDisplay($aItem,"")

_DebugPrint("$aItem[3]  : " & $aItem[3] )

~ $iRval = _SQLite_GetTable($hDatabase, 'SELECT KEY_NO, (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC FROM TB_KEY WHERE KEY_NO='& $aItem[3] &';', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult
~ _ArrayDisplay($aResult, "Results from the query")
~ $key_no = $aItem[3]
~ $iRval = _SQLite_GetTable($hDatabase, 'SELECT (SELECT GRP_NM FROM TB_GRP WHERE GRP_NO=GRP_NO) GRP_NM, KEY_NM, KEY_CMD ,KEY_DESC FROM TB_KEY WHERE KEY_NO=' & $key_no &';', $aResult, $iRows, $iColumns) ; SELECT everything FROM "People" TABLE and get the $aResult
~ _DebugPrint("$iRval 
" & $iRval[0])
~ _ArrayDisplay($iRval, "Query Result")
~ _SaveKey($aItem[3])
~ _GUICtrlListView_SetItem($g_idListView, "New Item 1", 1,2)
~ _GUICtrlListView_SetSelectedColumn($g_idListView, $aItem[3])
~ _DebugPrint( "Selected Column
" & _GUICtrlListView_GetSelectedColumn($g_idListView))
~ $aItem = _GUICtrlListView_GetItem($idListview, $aHit[0])
~ MsgBox($MB_SYSTEMMODAL, "Information", "Selected Column
" & _GUICtrlListView_GetSelectedColumn($g_idListView))
~ _GUICtrlStatusBar_SetText($g_hStatusBar, @TAB & StringFormat("HitTest Item
 %d", $aHit[0]&":"&$aHit[1]))
               $g_iIndex = $aHit[0]
       EndIf

EndFunc  ;==>_ListView_Click

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)

       #forceref $hWnd, $iMsg, $wParam
       Local $hWndListView = $g_idListView

Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView2, $hWndListView3, $tInfo

       If Not IsHWnd($g_idListView) Then $hWndListView = GUICtrlGetHandle($g_idListView)
       Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
       Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))

local $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")

       Local $iCode = DllStructGetData($tNMHDR, "Code")

Local $aRET[3]

       Switch $hWndFrom
               Case $hWndListView
                       Switch $iCode
                               Case $LVN_COLUMNCLICK ; A column was clicked
                                       _WM_NOTIFY_DebugEvent("$LVN_COLUMNCLICK", $tagNMLISTVIEW, $lParam, "IDFrom,,Item,SubItem,NewState,OldState,Changed,ActionX,ActionY,Param")
                                       ; No return value

_DebugPrint("$LVN_COLUMNCLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode & @CRLF & _ "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @CRLF & _ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _ "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))

                               Case $LVN_KEYDOWN ; A key has been pressed
                                       _WM_NOTIFY_DebugEvent("$LVN_KEYDOWN", $tagNMLVKEYDOWN, $lParam, "IDFrom,,VKey,Flags")
                                       ; No return value

Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button

~ $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                                       _WM_NOTIFY_DebugEvent("$NM_CLICK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")

$aInfo = _GUICtrlListView_GetColumn($hWndListView, 0) MsgBox($MB_SYSTEMMODAL, "Information", "Column 0 Width: " & $aInfo[4])

_DebugPrint("$NM_CLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode & @CRLF & _ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @CRLF & _ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @CRLF & _ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))

MsgBox($MB_SYSTEMMODAL, "Information", "Item Text: " & _GUICtrlListView_GetItemText($hWndListView,DllStructGetData($tInfo, "Item") ,2))

~ _ListView_Click()
                                       ; No return value
                               Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
                                       _WM_NOTIFY_DebugEvent("$NM_DBLCLK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
~ $aRET[0] = $tNMHDR.IDFrom
~ $aTMP = _GUICtrlListView_SubItemHitTest(GUICtrlGetHandle($aRET[0]))
~ $aRET[1] = $aTMP[0]
~ $aRET[2] = $aTMP[1]

_DebugPrint("$NM_DBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode & @CRLF & _ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @CRLF & _ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @CRLF & _ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))

~ MsgBox($MB_SYSTEMMODAL, "Information", "Item Text
" & _GUICtrlListView_GetItemText($hWndListView, DllStructGetData($tInfo, "Index"),DllStructGetData($tInfo, "SubItem")))
~ $aItem = _GUICtrlListView_GetItemTextArray($hWndListView, -1)
~ For $i = 1 To $aItem[0]
~ $sText &= StringFormat("Column[%2d] %s", $i, $aItem[$i]) & @CRLF
~ Next
~ MsgBox($MB_SYSTEMMODAL, "Information", "Item 2 (All Columns) Text
" & @CRLF & @CRLF & $sText)


~ _SaveKey()
                                       ; No return value
                               Case $NM_KILLFOCUS ; The control has lost the input focus
                                       _WM_NOTIFY_DebugEvent("$NM_KILLFOCUS", $tagNMHDR, $lParam, "hWndFrom,IDFrom")
                                       ; No return value
                               Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
                                       _WM_NOTIFY_DebugEvent("$NM_RCLICK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
                                       ;Return 1 ; not to allow the default processing
                                       Return 0 ; allow the default processing
~ Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
~ _WM_NOTIFY_DebugEvent("$NM_RDBLCLK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
~  ; No return value

Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button

~ $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                                    _WM_NOTIFY_DebugEvent("$NM_RDBLCLK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")

_GUICtrlListView_DeleteItem($hWndListView, DllStructGetData($tInfo, "Index"))

~ _FileWriteToLine ( @ScriptDir&"\Log.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
~ _FileWriteToLine ( @ScriptDir&"\Data\Log02.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
~ _FileWriteToLine ( @ScriptDir&"\Data\Log002.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
~ _FileWriteToLine ( @ScriptDir&"\Log.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
~ _FileWriteToLine ( @ScriptDir&"\Data\Log02.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
~ _FileWriteToLine ( @ScriptDir&"\Data\Log002.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
~ _FileWriteToLine ( @ScriptDir&"\Log.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
~ _FileWriteToLine ( @ScriptDir&"\Data\Log02.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )
~ _FileWriteToLine ( @ScriptDir&"\Data\Log002.txt" , DllStructGetData($tInfo, "Index") , "" , True , True )

_DebugPrint("$NM_RDBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode & @CRLF & _ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @CRLF & _ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @CRLF & _ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags")) ;~ FileClose ($File2) ;~ FileClose ($File02) ;~ FileClose ($File002) ; No return value

$aInfo = _GUICtrlListView_GetColumn($hWndListView, DllStructGetData($tInfo, "Index") )

~ _ArrayDisplay($aInfo)

MsgBox($MB_SYSTEMMODAL, "Information", "Column 0 Width: " & $aInfo)

                               Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
                                       _WM_NOTIFY_DebugEvent("$NM_RETURN", $tagNMHDR, $lParam, "hWndFrom,IDFrom")
                                       ; No return value
                               Case $NM_SETFOCUS ; The control has received the input focus
                                       _WM_NOTIFY_DebugEvent("$NM_SETFOCUS", $tagNMHDR, $lParam, "hWndFrom,IDFrom")
                                       ; No return value
                       EndSwitch
       EndSwitch
       Return $GUI_RUNDEFMSG

EndFunc  ;==>WM_NOTIFY


Func _DebugPrint($s_text, $line = @ScriptLineNumber) ConsoleWrite( _ "!===========================================================" & @LF & _ "+======================================================" & @LF & _ "-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _ "+======================================================" & @LF) EndFunc  ;==>_DebugPrint </source>