Показать полную графическую версию : [решено] Проблема с функцией для отметки всех галочек
Centrinar
08-09-2010, 16:02
Есть скрипт отображающий кол-во программ в системе, сделал кнопку "Отметить все", по идеи при нажатии на нее должны отметиться все чекбоксы но не тут то было, он ничего не отмечает. Помогите разобраться и поправить скрипт. Ини файл необходимый для работы скрипта прикреплен к теме. СПАСИБО!
#RequireAdmin
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <GUIScrollbars_Ex.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Global $params = StringRegExp(IniRead("conf.ini","Params","main",0),"<(.*?)>",3)
Global $anCheckBoxes1[$params[0] + 1]
Global $aCheckedIcons1[$params[0] + 1]
Global $aUnCheckedIcons1[$params[0] + 1]
Global $aCompleteIcons1[$params[0] + 1]
Global $aInstalledIcons1[$params[0] + 1]
$hGUI = GUICreate("My GUI Tab", 852, 650)
GUISetBkColor(0xc64444)
Global $progs[$params[0]+1]
$progs[0]=$params[0]
For $i=1 To $progs[0] Step 1
$parse = StringRegExp(IniRead("conf.ini","Params","prog"&$i,"<de.exe><INI file ?><0>"),"<(.*?)>",3)
$hChild_Ctrls1 = _SetProgrs_Proc("images", $parse[1], $anCheckBoxes1, $aCheckedIcons1, $aUnCheckedIcons1, $aInstalledIcons1, $aCompleteIcons1)
Next
GUICtrlCreateTabItem("")
$nStart = GUICtrlCreateButton("Выполнить", 640, 560, 150, 30)
$btn1 = GUICtrlCreateButton ("отметить все", 260, 50, 130, 30)
GUISetState(@SW_SHOW, $hGUI)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btn1
For $i=1 To $params[0]
$aArray = $anCheckBoxes1[$i]
GUICtrlSetState ($aArray[1],$GUI_CHECKED)
Next
Case $nStart
EndSwitch
WEnd
Func _SetProgrs_Proc($sIconsPath, $aProgs, ByRef $anCheckBoxes, ByRef $aCheckedIcons, ByRef $aUnCheckedIcons, ByRef $aInstalledIcons, ByRef $aCompleteIcons)
Local $iTop = 40, $iLeft = 40, $iTop2 = 60
Local $hChild_Ctrls = GUICreate("", 760, 400, 20, 100, $WS_CHILD, -1, $hGUI)
GUISetBkColor(0xc64444)
For $i=1 To $progs[0]
$aCheckedIcons[$i] = $sIconsPath & "\01.ico"
$aUnCheckedIcons[$i] = $sIconsPath & "\01.ico"
$aInstalledIcons[$i] = $sIconsPath & "\03.ico"
$aCompleteIcons[$i] = $sIconsPath & "\02.ico"
$parse = StringRegExp(IniRead("conf.ini","Params","prog"&$i,"<de.exe><INI file ?><0>"),"<(.*?)>",3)
$anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($parse[1], '^.*=', ''), $iLeft, $iTop, -1, 15, $aUnCheckedIcons[$i])
$iTop += 80
$iTop2 += 80
Next
If $iTop > 370 Then
_GUIScrollbars_Generate($hChild_Ctrls, 0, $iTop, 0, 0, 1)
EndIf
GUISetState(@SW_SHOW, $hChild_Ctrls)
GUISwitch($hGUI)
Return $hChild_Ctrls
EndFunc
Func _CheckProgrs_Proc($hChild_Ctrls, $aProgs, $anCheckBoxes, $aCheckedIcons, $aUnCheckedIcons, $aInstalledIcons, $aCompleteIcons)
Local $aCheckBox, $iScrollPos
For $i = 1 To $aProgs[0]
$aCheckBox = $anCheckBoxes[$i]
If GUICtrlRead($aCheckBox[1]) = 1 Then
$sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
$sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aInstalledIcons[$i])
MsgBox(64, $sProgName, "zz", 3)
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aCompleteIcons[$i])
Else
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aUnCheckedIcons[$i])
EndIf
Next
EndFunc
Func _SwitchTabs_Proc($iTab, $iMode = -1)
Switch $iTab
Case 0
If $iMode = -1 Then
GUISetState(@SW_HIDE, $hChild_Ctrls2)
GUISetState(@SW_SHOW, $hChild_Ctrls1)
EndIf
ControlFocus($hChild_Ctrls1, "", "")
Case 1
If $iMode = -1 Then
GUISetState(@SW_HIDE, $hChild_Ctrls1)
GUISetState(@SW_SHOW, $hChild_Ctrls2)
EndIf
ControlFocus($hChild_Ctrls2, "", "")
EndSwitch
EndFunc
Func _GUICtrlSetImageEx($hWnd, $nCtrlID, $sFileName, $iIconName = "", $iIconType = 0)
Local $iScrollPage, $iScrollPos
$iScrollPage = _GUIScrollBars_GetScrollInfoPage($hWnd, $SB_VERT)
If $iScrollPage > 0 Then
$iScrollPos = _GUIScrollBars_GetScrollPos($hWnd, $SB_VERT)
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, 0)
GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, $iScrollPos)
Else
GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
EndIf
EndFunc
Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0)
Local $aRetArr[2]
$aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft - 20, $iTop - 1, 16, 16)
GUICtrlSetState($aRetArr[0], $GUI_DISABLE)
$aRetArr[1] = GUICtrlCreateCheckbox($sText, $iLeft, $iTop, $iWidth, $iHeight)
GUICtrlSetBkColor($aRetArr[1], 0xc64444)
Return $aRetArr
EndFunc
Заголовок в таком случае должен звучать так:
Как сделать функцию для отметки всех галочек?
На данный момент заголовок слишком общий.
[hr]
Скрипт (в какой раз) нерабочий. В архиве мог бы прикрепить всё что необходимо для его работы, иначе пропадает желание рыться в коде и на угад пыттаться выявить проблему.
Во-первых, StringRegExp возвращает массив где первое значение попадает сразу в нулевой элемент, поэтому и цикл нужно начинать сразу с 0-я а не с 1-цы.
Во-вторых, если сделать вышесказанное, то скрипт ругается на ошибку массивности переменной $aArray, и правильно делает, т.к я например не понимаю смысл в том чтобы прокручивать цикл для одного массива, а проверять другой. Это хороший рецепт к краху скрипта.
Вот так вроде должно работать, но у меня не работает, хотябы потому что нарушено создание элементов (нет иконок):
#RequireAdmin
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <GUIScrollbars.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Global $params = StringRegExp(IniRead(@DesktopDir & "\conf.ini", "Params", "main", 0), "<(.*?)>", 3)
Global $iParams = UBound($params)+1
Global $anCheckBoxes1[$iParams + 1]
Global $aCheckedIcons1[$iParams + 1]
Global $aUnCheckedIcons1[$iParams + 1]
Global $aCompleteIcons1[$iParams + 1]
Global $aInstalledIcons1[$iParams + 1]
$hGUI = GUICreate("My GUI Tab", 852, 650)
GUISetBkColor(0xc64444)
Global $progs[$iParams+1]
$progs[0] = $iParams
For $i = 1 To $progs[0] Step 1
$parse = StringRegExp(IniRead("conf.ini", "Params", "prog" & $i, "<de.exe><INI file ?><0>"), "<(.*?)>", 3)
$hChild_Ctrls1 = _SetProgrs_Proc("images", $parse[1], $anCheckBoxes1, $aCheckedIcons1, $aUnCheckedIcons1, $aInstalledIcons1, $aCompleteIcons1)
Next
GUICtrlCreateTabItem("")
$nStart = GUICtrlCreateButton("Выполнить", 640, 560, 150, 30)
$btn1 = GUICtrlCreateButton("отметить все", 260, 50, 130, 30)
GUISetState(@SW_SHOW, $hGUI)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btn1
For $i = 1 To UBound($anCheckBoxes1)-1
$aArray = $anCheckBoxes1[$i]
GUICtrlSetState($aArray[1], $GUI_CHECKED)
Next
Case $nStart
EndSwitch
WEnd
Func _CheckProgrs_Proc($hChild_Ctrls, $aProgs, $anCheckBoxes, $aCheckedIcons, $aUnCheckedIcons, $aInstalledIcons, $aCompleteIcons)
Local $aCheckBox, $iScrollPos
For $i = 1 To $aProgs[0]
$aCheckBox = $anCheckBoxes[$i]
If GUICtrlRead($aCheckBox[1]) = 1 Then
$sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
$sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aInstalledIcons[$i])
MsgBox(64, $sProgName, "zz", 3)
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aCompleteIcons[$i])
Else
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aUnCheckedIcons[$i])
EndIf
Next
EndFunc ;==>_CheckProgrs_Proc
Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile = "", $nIconIndex = 0)
Local $aRetArr[2]
$aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft - 20, $iTop - 1, 16, 16)
GUICtrlSetState($aRetArr[0], $GUI_DISABLE)
$aRetArr[1] = GUICtrlCreateCheckbox($sText, $iLeft, $iTop, $iWidth, $iHeight)
GUICtrlSetBkColor($aRetArr[1], 0xc64444)
Return $aRetArr
EndFunc ;==>_GUICtrlCreateCheckboxEx
Func _GUICtrlSetImageEx($hWnd, $nCtrlID, $sFileName, $iIconName = "", $iIconType = 0)
Local $iScrollPage, $iScrollPos
$iScrollPage = _GUIScrollBars_GetScrollInfoPage($hWnd, $SB_VERT)
If $iScrollPage > 0 Then
$iScrollPos = _GUIScrollBars_GetScrollPos($hWnd, $SB_VERT)
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, 0)
GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, $iScrollPos)
Else
GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
EndIf
EndFunc ;==>_GUICtrlSetImageEx
Func _SetProgrs_Proc($sIconsPath, $aProgs, ByRef $anCheckBoxes, ByRef $aCheckedIcons, ByRef $aUnCheckedIcons, ByRef $aInstalledIcons, ByRef $aCompleteIcons)
Local $iTop = 40, $iLeft = 40, $iTop2 = 60
Local $hChild_Ctrls = GUICreate("", 760, 400, 20, 100, $WS_CHILD, -1, $hGUI)
GUISetBkColor(0xc64444)
For $i = 1 To $progs[0]
$aCheckedIcons[$i] = $sIconsPath & "\01.ico"
$aUnCheckedIcons[$i] = $sIconsPath & "\01.ico"
$aInstalledIcons[$i] = $sIconsPath & "\03.ico"
$aCompleteIcons[$i] = $sIconsPath & "\02.ico"
$parse = StringRegExp(IniRead("conf.ini", "Params", "prog" & $i, "<de.exe><INI file ?><0>"), "<(.*?)>", 3)
$anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($parse[1], '^.*=', ''), $iLeft, $iTop, -1, 15, $aUnCheckedIcons[$i])
$iTop += 80
$iTop2 += 80
Next
If $iTop > 370 Then
_GUIScrollbars_Generate($hChild_Ctrls, 0, $iTop, 0, 0, 1)
EndIf
GUISetState(@SW_SHOW, $hChild_Ctrls)
GUISwitch($hGUI)
Return $hChild_Ctrls
EndFunc ;==>_SetProgrs_Proc
Func _SwitchTabs_Proc($iTab, $iMode = -1)
Switch $iTab
Case 0
If $iMode = -1 Then
GUISetState(@SW_HIDE, $hChild_Ctrls2)
GUISetState(@SW_SHOW, $hChild_Ctrls1)
EndIf
ControlFocus($hChild_Ctrls1, "", "")
Case 1
If $iMode = -1 Then
GUISetState(@SW_HIDE, $hChild_Ctrls1)
GUISetState(@SW_SHOW, $hChild_Ctrls2)
EndIf
ControlFocus($hChild_Ctrls2, "", "")
EndSwitch
EndFunc ;==>_SwitchTabs_Proc
Centrinar
08-09-2010, 17:07
ругаеться на функцию _GUIScrollbars_Generate т.е. на ее отсутствие... Хм проблема в том что он видет всего один элемент из ини файла, хотя их там 3
ругаеться на функцию _GUIScrollbars_Generate »
Это шутка? и у меня ругается, я же написал:
Скрипт (в какой раз) нерабочий »
мне пришлось заменить #include <GUIScrollbars_Ex.au3> на #include <GUIScrollbars.au3>.
проблема в том что он видет всего один элемент из ини файла, хотя их там 3 »
Да тут вообще обработка неправильная, зачем там RegExp когда имеется структура Ini, Ini* функций чем не угодили?
Centrinar, посмотрю, а что с заголовком?
Centrinar
08-09-2010, 19:30
Исправил)))
Centrinar,
Вобщем я не знаю какое тут назначение у скрипта, но у меня так вышло:
#RequireAdmin
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <GUIScrollbars_Ex.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Global $params = StringRegExp(IniRead("conf.ini", "Params", "main", 0), "<(.*?)>", 3)
Global $anCheckBoxes1[$params[0] + 1]
Global $aCheckedIcons1[$params[0] + 1]
Global $aUnCheckedIcons1[$params[0] + 1]
Global $aCompleteIcons1[$params[0] + 1]
Global $aInstalledIcons1[$params[0] + 1]
$hGUI = GUICreate("My GUI Tab", 852, 650)
GUISetBkColor(0xc64444)
Global $progs[$params[0] + 1]
$progs[0] = $params[0]
$hChild_Ctrls = GUICreate("", 760, 400, 20, 100, $WS_CHILD, -1, $hGUI)
GUISetBkColor(0xc64444)
Dim $iTop = 40, $iLeft = 40, $iTop2 = 60
For $i = 1 To $progs[0]
$parse = StringRegExp(IniRead("conf.ini", "Params", "prog" & $i, "<de.exe><INI file ?><0>"), "<(.*?)>", 3)
$hChild_Ctrls1 = _SetProgrs_Proc("images", $i, $parse[1], $anCheckBoxes1, $aCheckedIcons1, $aUnCheckedIcons1, $aInstalledIcons1, $aCompleteIcons1)
Next
GUICtrlCreateTabItem("")
$nStart = GUICtrlCreateButton("Выполнить", 640, 560, 150, 30)
$btn1 = GUICtrlCreateButton("отметить все", 260, 50, 130, 30)
GUISetState(@SW_SHOW, $hGUI)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btn1
For $i = 1 To $params[0]
$aArray = $anCheckBoxes1[$i]
GUICtrlSetState($aArray[1], $GUI_CHECKED)
Next
Case $nStart
EndSwitch
WEnd
Func _CheckProgrs_Proc($hChild_Ctrls, $aProgs, $anCheckBoxes, $aCheckedIcons, $aUnCheckedIcons, $aInstalledIcons, $aCompleteIcons)
Local $aCheckBox, $iScrollPos
For $i = 1 To $aProgs[0]
$aCheckBox = $anCheckBoxes[$i]
If GUICtrlRead($aCheckBox[1]) = 1 Then
$sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
$sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aInstalledIcons[$i])
MsgBox(64, $sProgName, "zz", 3)
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aCompleteIcons[$i])
Else
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aUnCheckedIcons[$i])
EndIf
Next
EndFunc ;==>_CheckProgrs_Proc
Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile = "", $nIconIndex = 0)
Local $aRetArr[2]
$aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft - 20, $iTop - 1, 16, 16)
GUICtrlSetState($aRetArr[0], $GUI_DISABLE)
$aRetArr[1] = GUICtrlCreateCheckbox($sText, $iLeft, $iTop, $iWidth, $iHeight)
GUICtrlSetBkColor($aRetArr[1], 0xc64444)
Return $aRetArr
EndFunc ;==>_GUICtrlCreateCheckboxEx
Func _GUICtrlSetImageEx($hWnd, $nCtrlID, $sFileName, $iIconName = "", $iIconType = 0)
Local $iScrollPage, $iScrollPos
$iScrollPage = _GUIScrollBars_GetScrollInfoPage($hWnd, $SB_VERT)
If $iScrollPage > 0 Then
$iScrollPos = _GUIScrollBars_GetScrollPos($hWnd, $SB_VERT)
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, 0)
GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, $iScrollPos)
Else
GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
EndIf
EndFunc ;==>_GUICtrlSetImageEx
Func _SetProgrs_Proc($sIconsPath, $iIndex, $sName, ByRef $anCheckBoxes, ByRef $aCheckedIcons, ByRef $aUnCheckedIcons, ByRef $aInstalledIcons, ByRef $aCompleteIcons)
$aCheckedIcons[$iIndex] = $sIconsPath & "\01.ico"
$aUnCheckedIcons[$iIndex] = $sIconsPath & "\01.ico"
$aInstalledIcons[$iIndex] = $sIconsPath & "\03.ico"
$aCompleteIcons[$iIndex] = $sIconsPath & "\02.ico"
$anCheckBoxes[$iIndex] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($sName, '^.*=', ''), $iLeft, $iTop, -1, 15, $aUnCheckedIcons[$i])
$iTop += 80
$iTop2 += 80
If $iTop > 370 Then
_GUIScrollbars_Generate($hChild_Ctrls, 0, $iTop, 0, 0, 1)
EndIf
GUISetState(@SW_SHOW, $hChild_Ctrls)
GUISwitch($hGUI)
Return $hChild_Ctrls
EndFunc ;==>_SetProgrs_Proc
Func _SwitchTabs_Proc($iTab, $iMode = -1)
Switch $iTab
Case 0
If $iMode = -1 Then
GUISetState(@SW_HIDE, $hChild_Ctrls2)
GUISetState(@SW_SHOW, $hChild_Ctrls1)
EndIf
ControlFocus($hChild_Ctrls1, "", "")
Case 1
If $iMode = -1 Then
GUISetState(@SW_HIDE, $hChild_Ctrls1)
GUISetState(@SW_SHOW, $hChild_Ctrls2)
EndIf
ControlFocus($hChild_Ctrls2, "", "")
EndSwitch
EndFunc ;==>_SwitchTabs_Proc
Скорее всего тут нарушилась изначальная концепция, но я же её не знаю. Поэтому либо раскажи мне что конкретно должен делать скрипт, либо сам поправляй и делай выводы :)
Исправил »
Так теперь это проблема в RegExp? :unsure:
Вот полный комплект скрипта »
А иконки?
Centrinar
08-09-2010, 20:48
Поэтому либо раскажи мне что конкретно должен делать скрипт, либо сам поправляй и делай выводы
Должен получиться список построенный по данным из ини файла. При нажатии на кнопку Отметить все должны отметиться все чекбоксы. Почти получилось, но в последнем варианте почему то список кривой получился, какие то чекбоксы выше, какие то ниже...
Должен получиться список построенный по данным из ини файла »
:) Этого мало.
Зачем там в цикле создаётся столько GUI сколько записей в ini?
какие то чекбоксы выше, какие то ниже »
Может правее/левее? :)
И для чего нужен первый параметр в ini, это типа счётчик всех ключей? можно и без него:
#RequireAdmin
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <GUIScrollbars_Ex.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
$aParams = IniReadSection("conf.ini", "Params")
Global $iTotalParams = UBound($aParams)-1
Global $anCheckBoxes1[$iTotalParams + 1]
Global $aCheckedIcons1[$iTotalParams + 1]
Global $aUnCheckedIcons1[$iTotalParams + 1]
Global $aCompleteIcons1[$iTotalParams + 1]
Global $aInstalledIcons1[$iTotalParams + 1]
$hGUI = GUICreate("My GUI Tab", 852, 650)
GUISetBkColor(0xc64444)
Global $progs[$iTotalParams + 1]
$progs[0] = $iTotalParams
$hChild_Ctrls = GUICreate("", 760, 400, 20, 100, $WS_CHILD, -1, $hGUI)
GUISetBkColor(0xc64444)
Dim $iTop = 40, $iLeft = 40, $iTop2 = 60
For $i = 1 To $progs[0]
$parse = StringRegExp(IniRead("conf.ini", "Params", "prog" & $i, "<de.exe><INI file ?><0>"), "<(.*?)>", 3)
$hChild_Ctrls1 = _SetProgrs_Proc("images", $i, $parse[1], $anCheckBoxes1, $aCheckedIcons1, $aUnCheckedIcons1, $aInstalledIcons1, $aCompleteIcons1)
Next
GUISetState(@SW_SHOW, $hChild_Ctrls)
GUISwitch($hGUI)
GUICtrlCreateTabItem("")
$nStart = GUICtrlCreateButton("Выполнить", 640, 560, 150, 30)
$btn1 = GUICtrlCreateButton("отметить все", 260, 50, 130, 30)
GUISetState(@SW_SHOW, $hGUI)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btn1
For $i = 1 To $iTotalParams
$aArray = $anCheckBoxes1[$i]
GUICtrlSetState($aArray[1], $GUI_CHECKED)
Next
Case $nStart
EndSwitch
WEnd
Func _CheckProgrs_Proc($hChild_Ctrls, $aProgs, $anCheckBoxes, $aCheckedIcons, $aUnCheckedIcons, $aInstalledIcons, $aCompleteIcons)
Local $aCheckBox, $iScrollPos
For $i = 1 To $aProgs[0]
$aCheckBox = $anCheckBoxes[$i]
If GUICtrlRead($aCheckBox[1]) = 1 Then
$sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
$sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aInstalledIcons[$i])
MsgBox(64, $sProgName, "zz", 3)
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aCompleteIcons[$i])
Else
_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aUnCheckedIcons[$i])
EndIf
Next
EndFunc ;==>_CheckProgrs_Proc
Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile = "", $nIconIndex = 0)
Local $aRetArr[2]
$aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft - 20, $iTop - 1, 16, 16)
GUICtrlSetState($aRetArr[0], $GUI_DISABLE)
$aRetArr[1] = GUICtrlCreateCheckbox($sText, $iLeft, $iTop, $iWidth, $iHeight)
GUICtrlSetBkColor($aRetArr[1], 0xc64444)
Return $aRetArr
EndFunc ;==>_GUICtrlCreateCheckboxEx
Func _GUICtrlSetImageEx($hWnd, $nCtrlID, $sFileName, $iIconName = "", $iIconType = 0)
Local $iScrollPage, $iScrollPos
$iScrollPage = _GUIScrollBars_GetScrollInfoPage($hWnd, $SB_VERT)
If $iScrollPage > 0 Then
$iScrollPos = _GUIScrollBars_GetScrollPos($hWnd, $SB_VERT)
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, 0)
GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, $iScrollPos)
Else
GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
EndIf
EndFunc ;==>_GUICtrlSetImageEx
Func _SetProgrs_Proc($sIconsPath, $iIndex, $sName, ByRef $anCheckBoxes, ByRef $aCheckedIcons, ByRef $aUnCheckedIcons, ByRef $aInstalledIcons, ByRef $aCompleteIcons)
$aCheckedIcons[$iIndex] = $sIconsPath & "\01.ico"
$aUnCheckedIcons[$iIndex] = $sIconsPath & "\01.ico"
$aInstalledIcons[$iIndex] = $sIconsPath & "\03.ico"
$aCompleteIcons[$iIndex] = $sIconsPath & "\02.ico"
$anCheckBoxes[$iIndex] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($sName, '^.*=', ''), $iLeft, $iTop, -1, 15, $aUnCheckedIcons[$i])
$iTop += 80
$iTop2 += 80
If $iTop > 370 Then
_GUIScrollbars_Generate($hChild_Ctrls, 0, $iTop, 0, 0, 1)
EndIf
Return $hChild_Ctrls
EndFunc ;==>_SetProgrs_Proc
Func _SwitchTabs_Proc($iTab, $iMode = -1)
Switch $iTab
Case 0
If $iMode = -1 Then
GUISetState(@SW_HIDE, $hChild_Ctrls2)
GUISetState(@SW_SHOW, $hChild_Ctrls1)
EndIf
ControlFocus($hChild_Ctrls1, "", "")
Case 1
If $iMode = -1 Then
GUISetState(@SW_HIDE, $hChild_Ctrls1)
GUISetState(@SW_SHOW, $hChild_Ctrls2)
EndIf
ControlFocus($hChild_Ctrls2, "", "")
EndSwitch
EndFunc ;==>_SwitchTabs_Proc
P.S
main=<2> из ini нужно убрать.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.