Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Проблема с функцией для отметки всех галочек

Ответить
Настройки темы
[решено] Проблема с функцией для отметки всех галочек

Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Изменения
Автор: Creat0R
Дата: 09-09-2010
Вложения
Тип файла: rar conf.rar
(173 байт, 21 просмотров)
Есть скрипт отображающий кол-во программ в системе, сделал кнопку "Отметить все", по идеи при нажатии на нее должны отметиться все чекбоксы но не тут то было, он ничего не отмечает. Помогите разобраться и поправить скрипт. Ини файл необходимый для работы скрипта прикреплен к теме. СПАСИБО!
Код: Выделить весь код
#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

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 16:54, 08-09-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


ругаеться на функцию _GUIScrollbars_Generate т.е. на ее отсутствие... Хм проблема в том что он видет всего один элемент из ини файла, хотя их там 3

Последний раз редактировалось Centrinar, 08-09-2010 в 17:17.


Отправлено: 17:07, 08-09-2010 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Centrinar:
ругаеться на функцию _GUIScrollbars_Generate »
Это шутка? и у меня ругается, я же написал:
Цитата Creat0R:
Скрипт (в какой раз) нерабочий »
мне пришлось заменить #include <GUIScrollbars_Ex.au3> на #include <GUIScrollbars.au3>.

Цитата Centrinar:
проблема в том что он видет всего один элемент из ини файла, хотя их там 3 »
Да тут вообще обработка неправильная, зачем там RegExp когда имеется структура Ini, Ini* функций чем не угодили?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 17:26, 08-09-2010 | #4


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Centrinar, посмотрю, а что с заголовком?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 19:20, 08-09-2010 | #5


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Исправил)))

Отправлено: 19:30, 08-09-2010 | #6


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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:
Исправил »
Так теперь это проблема в RegExp?

Цитата Centrinar:
Вот полный комплект скрипта »
А иконки?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:36, 08-09-2010 | #7


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Цитата:
Поэтому либо раскажи мне что конкретно должен делать скрипт, либо сам поправляй и делай выводы
Должен получиться список построенный по данным из ини файла. При нажатии на кнопку Отметить все должны отметиться все чекбоксы. Почти получилось, но в последнем варианте почему то список кривой получился, какие то чекбоксы выше, какие то ниже...

Отправлено: 20:48, 08-09-2010 | #8


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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
P.S
main=<2> из ini нужно убрать.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:30, 08-09-2010 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Проблема с функцией для отметки всех галочек

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помогите разобраться 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




 
Переход