#include <GUIConstantsEx.au3> #include <GUIListView.au3> #include <ButtonConstants.au3> #include <WindowsConstants.au3> Opt('MustDeclareVars', 1) Global $hGUI, $idLV, $idDummy, $idChBx, $idBtnOK, $iSelectedItem = -1, $aAccelKeys[1][2] = [['{Enter}']] Global $sTabDir = @ScriptDir & '\TabFiles' $hGUI = GUICreate('TabList', 240, 360) $idChBx = GUICtrlCreateCheckbox('OpenTabs', 10, 15, 100, 20) $idBtnOK = GUICtrlCreateButton('OK', 120, 10, 100, 30) $idLV = GUICtrlCreateListView('*.tab files', 10, 50, 220, 300, BitOR($GUI_SS_DEFAULT_LISTVIEW, $LVS_NOCOLUMNHEADER), BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT)) For $i = 0 To 9 _GUICtrlListView_AddItem($idLV, $i & '_Tab_File.tab') Next GUICtrlSendMsg($idLV, $LVM_SETCOLUMNWIDTH, 0, 210) $idDummy = GUICtrlCreateDummy() $aAccelKeys[0][1] = $idDummy GUISetAccelerators($aAccelKeys) GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY') GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $idDummy, $idBtnOK If $iSelectedItem = -1 Then ContinueLoop ConsoleWrite('_Tabs_Open_Append(): ' & _Tabs_Open_Append() & @LF) EndSwitch WEnd Func _Tabs_Open_Append() Local Const $as_Tabs[2] = ['em_AppendTabs ', 'em_OpenTabs '] Local $s_Str, $s_FileName $s_FileName = _GUICtrlListView_GetItemText($idLV, $iSelectedItem) If Not $s_FileName Then Return 0 ;~ If Not FileExists($sTabDir & '\' & $s_FileName) Then Return 0; MsgBox(16, 'Error', 'No file!', 0, $hGUI) $s_Str = $as_Tabs[GUICtrlSendMsg($idChBx, $BM_GETCHECK, 0, 0)] & '"' & $sTabDir & '\' & $s_FileName & '"' MsgBox(64, 'Info', $s_Str, 0, $hGUI) Return 1 EndFunc ;==>_Tabs_Open_Append Func _WM_NOTIFY($h_Wnd, $i_Msg, $i_wParam, $i_lParam) Local $t_LV $t_LV = DllStructCreate($tagNMLISTVIEW, $i_lParam) ;~ Switch $h_Wnd ;~ Case $hGUI ;~ Switch DllStructGetData($t_LV, 'IDFrom') ;~ Case $idLV Switch DllStructGetData($t_LV, 'Code') Case $LVN_ITEMCHANGED If BitAND(DllStructGetData($t_LV, 'OldState'), $LVIS_SELECTED) Then $iSelectedItem = -1 If BitAND(DllStructGetData($t_LV, 'NewState'), $LVIS_SELECTED) Then $iSelectedItem = DllStructGetData($t_LV, 'Item') Case $NM_DBLCLK GUICtrlSendToDummy($idDummy) EndSwitch ;~ EndSwitch ;~ EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>_WM_NOTIFY |