![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Проблема с функцией для отметки всех галочек |
|
[решено] Проблема с функцией для отметки всех галочек
|
Старожил Сообщения: 247 |
Есть скрипт отображающий кол-во программ в системе, сделал кнопку "Отметить все", по идеи при нажатии на нее должны отметиться все чекбоксы но не тут то было, он ничего не отмечает. Помогите разобраться и поправить скрипт. Ини файл необходимый для работы скрипта прикреплен к теме. СПАСИБО!
#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 |
|
Отправлено: 16:02, 08-09-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Заголовок в таком случае должен звучать так:
Цитата:
Скрипт (в какой раз) нерабочий. В архиве мог бы прикрепить всё что необходимо для его работы, иначе пропадает желание рыться в коде и на угад пыттаться выявить проблему. Во-первых, 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 |
|
------- Отправлено: 16:54, 08-09-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 247
|
ругаеться на функцию _GUIScrollbars_Generate т.е. на ее отсутствие... Хм проблема в том что он видет всего один элемент из ини файла, хотя их там 3
|
Последний раз редактировалось Centrinar, 08-09-2010 в 17:17. Отправлено: 17:07, 08-09-2010 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Centrinar:
Цитата Creat0R:
Цитата Centrinar:
|
|||
------- Отправлено: 17:26, 08-09-2010 | #4 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Centrinar, посмотрю, а что с заголовком?
|
|
------- Отправлено: 19:20, 08-09-2010 | #5 |
Старожил Сообщения: 247
|
Исправил)))
|
Отправлено: 19:30, 08-09-2010 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать 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 ![]() Цитата Centrinar:
![]() Цитата Centrinar:
|
||
------- Отправлено: 19:36, 08-09-2010 | #7 |
Старожил Сообщения: 247
|
Цитата:
|
|
Отправлено: 20:48, 08-09-2010 | #8 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Centrinar:
![]() Зачем там в цикле создаётся столько GUI сколько записей в ini? Цитата Centrinar:
![]() И для чего нужен первый параметр в 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 main=<2> из ini нужно убрать. |
||
------- Отправлено: 21:30, 08-09-2010 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Помогите разобраться | Felixcat | Видеокарты | 1 | 27-09-2009 13:15 | |
помогите разобраться! | Guest | Общий по Linux | 7 | 16-03-2004 21:45 | |
Помогите разобраться | igr | Вебмастеру | 5 | 18-09-2003 21:00 | |
Помогите разобраться | sturmfogel | Программирование и базы данных | 1 | 27-01-2003 13:53 |
|