Çàãîëîâîê â òàêîì ñëó÷àå äîëæåí çâó÷àòü òàê:
Öèòàòà:
Êàê ñäåëàòü ôóíêöèþ äëÿ îòìåòêè âñåõ ãàëî÷åê?
|
Íà äàííûé ìîìåíò çàãîëîâîê ñëèøêîì îáùèé.
Ñêðèïò (â êàêîé ðàç) íåðàáî÷èé.  àðõèâå ìîã áû ïðèêðåïèòü âñ¸ ÷òî íåîáõîäèìî äëÿ åãî ðàáîòû, èíà÷å ïðîïàäàåò æåëàíèå ðûòüñÿ â êîäå è íà óãàä ïûòòàòüñÿ âûÿâèòü ïðîáëåìó.
Âî-ïåðâûõ, 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
|