|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как узнать кол-во отмеченных чекбоксов? |
|
|
[решено] Как узнать кол-во отмеченных чекбоксов?
|
Старожил Сообщения: 247 |
Без вас господа никуда
![]() |
|
Отправлено: 22:59, 22-04-2010 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Самое малое - двумя способами: или во время того, как отмечаете эти самые чекбоксы, или уже после того как они отмечены-неотмечены пройтись по ним... Может еще кто способов добавит... но поможет ли это вам?
![]() |
------- Отправлено: 23:12, 22-04-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 247
|
Можно на этом продемонстрировать
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $sProgs = 'Setup.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5' Global Const $aProgs = StringSplit($sProgs, '|') Global $anCheckBoxes[$aProgs[0]+1] $Form1 = GUICreate("", 100, 150, -1, -1) $iTop = 10 For $i = 1 To $aProgs[0] $anCheckBoxes[$i] = GUICtrlCreateCheckbox(StringRegExpReplace($aProgs[$i], '^.*=', ''), 10, $iTop, 100, 15) $iTop += 20 Next $Button1 = GUICtrlCreateButton("Button1", 10, 110, 80, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 For $i = 1 To $aProgs[0] If GUICtrlRead($anCheckBoxes[$i]) = 1 Then $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '') $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '') MsgBox(64, $sProgName, $sProgExe) EndIf Next EndSwitch WEnd |
Отправлено: 23:48, 22-04-2010 | #3 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $k=0 ;счетчик для отмеченных чекбоксов Global $sProgs = 'Setup.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5' Global Const $aProgs = StringSplit($sProgs, '|') Global $anCheckBoxes[$aProgs[0]+1] $Form1 = GUICreate("", 100, 150, -1, -1) $iTop = 10 For $i = 1 To $aProgs[0] $anCheckBoxes[$i] = GUICtrlCreateCheckbox(StringRegExpReplace($aProgs[$i], '^.*=', ''), 10, $iTop, 100, 15) $iTop += 20 Next $Button1 = GUICtrlCreateButton("Button1", 10, 110, 80, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 For $i = 1 To $aProgs[0] If GUICtrlRead($anCheckBoxes[$i]) = 1 Then $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '') $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '') $k+=1 MsgBox(64, $sProgName, $sProgExe) EndIf Next MsgBox(0,"Количество отмеченных чекбоксов", $k) $k=0 EndSwitch WEnd |
------- Отправлено: 01:23, 23-04-2010 | #4 |
Старожил Сообщения: 247
|
Cделал прогрессбар, смысл в том что бы он прибовлаль число ($iProgr) которое равно 100/$k, $k соответственно это кол-во отмеченных чекбоксов, но он категорически не хочет выполнять дилние т.е. не может разделить 100/$k
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $k=0 ;счетчик для отмеченных чекбоксов Global $sProgs = 'Setup.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5' Global $iProgr = 0 Global Const $aProgs = StringSplit($sProgs, '|') Global $anCheckBoxes[$aProgs[0]+1] $Form1 = GUICreate("", 300, 300, -1, -1) $iTop = 10 For $i = 1 To $aProgs[0] $anCheckBoxes[$i] = GUICtrlCreateCheckbox(StringRegExpReplace($aProgs[$i], '^.*=', ''), 10, $iTop, 100, 15) $iTop += 20 Next $progressbar1 = GUICtrlCreateProgress (150,150,150,20) GUICtrlSetColor(-1,32250) $Button1 = GUICtrlCreateButton("Button1", 10, 110, 80, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 For $i = 1 To $aProgs[0] If GUICtrlRead($anCheckBoxes[$i]) = 1 Then $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '') $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '') $k+=1 $iProgr += 100/$k MsgBox(64, $sProgName, $sProgExe) EndIf Next MsgBox(0,"Количество отмеченных чекбоксов", $k) $k=0 EndSwitch WEnd |
|
Отправлено: 13:51, 23-04-2010 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Centrinar:
![]() А вообще прогресс строится не так, нужно получить шаг прогресса методом деления 100% на общее количество чекбоксов, а потом каждый раз прибавлять этот шаг в цикле: #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $sProgs = 'Setup.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5' Global Const $aProgs = StringSplit($sProgs, '|') Global $anCheckBoxes[$aProgs[0]+1] Global $iChecked_Counter = 0 ;Счетчик для отмеченных чекбоксов Global $iProgress_Step = 100 / $aProgs[0] ;Шаг прогресса Global $iProgress = 0 ;Счётчик прогресса $Form1 = GUICreate("", 300, 300, -1, -1) $iTop = 10 For $i = 1 To $aProgs[0] $anCheckBoxes[$i] = GUICtrlCreateCheckbox(StringRegExpReplace($aProgs[$i], '^.*=', ''), 10, $iTop, 100, 15) $iTop += 20 Next $ProgressBar1 = GUICtrlCreateProgress(150, 150, 150, 20) GUICtrlSetColor(-1, 32250) $Button1 = GUICtrlCreateButton("Button1", 10, 110, 80, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 For $i = 1 To $aProgs[0] $iProgress += $iProgress_Step If GUICtrlRead($anCheckBoxes[$i]) = 1 Then $iChecked_Counter += 1 $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '') $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '') MsgBox(64, $sProgName, $sProgExe) EndIf GUICtrlSetData($ProgressBar1, $iProgress) Next MsgBox(0, "Количество отмеченных чекбоксов", $iChecked_Counter) $iChecked_Counter = 0 EndSwitch WEnd |
|
------- Отправлено: 14:30, 23-04-2010 | #6 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать Centrinar, а зачем тебе второй счетчик $k? используй тот, что входит в цикл - $i - вместо него
а твоя ошибка в том, что он ($k) у тебя изначально не проинициализирован. А ты хочешь к нему автоинкремент прмименить |
------- Отправлено: 14:30, 23-04-2010 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата kaster:
|
|
------- Отправлено: 14:44, 23-04-2010 | #8 |
Старожил Сообщения: 247
|
Сделал как в образце, но он прибовляет сразу 100
#include <GUIConstantsEx.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $sProgs = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5' Global $iProgr = 0 Global Const $aProgs = StringSplit($sProgs, '|') Global $anCheckBoxes[$aProgs[0]+1] Global $aCheckedIcons[$aProgs[0]+1] Global $aUnCheckedIcons[$aProgs[0]+1] Global $iChecked_Counter = 0 ;Счетчик для отмеченных чекбоксов Global $iProgress_Step = 100 / $aProgs[0] ;Шаг прогресса Global $iProgress = 0 ;Счётчик прогресса $Form1 = GUICreate("", 600, 500, -1, -1) $iTop = 10 $iLeft = 20 For $i = 1 To $aProgs[0] $aCheckedIcons[$i] = -5 $aUnCheckedIcons[$i] = -4 $anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs[$i], '^.*=', ''), $iLeft, $iTop, -1, 15, "shell32.dll", $aUnCheckedIcons[$i]) $iTop += 20 If $iTop > 450 Then $iTop = 10 $iLeft += 100 EndIf Next $ProgressBar1 = GUICtrlCreateProgress(150, 150, 150, 20) GUICtrlSetColor(-1, 32250) $nStart = GUICtrlCreateButton("Выполнить", 10, 470, 80, 25) $nButton1 = GUICtrlCreateButton("Отметить все", 100, 470, 80, 25) $nButton2 = GUICtrlCreateButton("Отметить все", 190, 470, 80, 25) GUIStartGroup() GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $nButton1 For $i = 1 to $aProgs[0] $aArray=$anCheckBoxes[$i] GUICtrlSetState ($aArray[1],$GUI_CHECKED) Next Case $nButton2 For $i = 1 to $aProgs[0] $aArray=$anCheckBoxes[$i] GUICtrlSetState ($aArray[1],$GUI_UNCHECKED) Next Case $nStart For $i = 1 To $aProgs[0] $iProgress += $iProgress_Step $aCheckBox = $anCheckBoxes[$i] If GUICtrlRead($aCheckBox[1]) = 1 Then $iChecked_Counter += 1 GUICtrlSetImage($aCheckBox[0], "shell32.dll", $aCheckedIcons[$i]) GuiCtrlSetData($progressbar1, $iProgr) $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '') $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '') Call ("_MonitorOFF") MsgBox(64, $sProgName, "sss", 3) Else GUICtrlSetImage($aCheckBox[0], "shell32.dll", $aUnCheckedIcons[$i]) EndIf GUICtrlSetData($ProgressBar1, $iProgress) Next $iChecked_Counter = 0 EndSwitch WEnd Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0) Local $aRetArr[2] $aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft + 17, $iTop, 16, 16) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $aRetArr[1] = GUICtrlCreateCheckbox(" " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight, $WS_CLIPSIBLINGS) Return $aRetArr EndFunc |
Отправлено: 14:49, 23-04-2010 | #9 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Centrinar:
|
|
------- Отправлено: 15:11, 23-04-2010 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
нужна ваша проверка GV-N98TOC-512H | LEON787 | Видеокарты | 8 | 10-04-2010 19:38 | |
ATI 2900 XT нужна ваша помощь | Brainpitcher | Видеокарты | 6 | 29-01-2009 21:29 | |
Нужна Ваша помощь и советы!!! | вася21 | Хочу все знать | 3 | 21-12-2008 11:38 | |
Нужна снова ваша помощь в написании интересного скрипта | Magnus | Вебмастеру | 2 | 09-06-2005 20:26 |
|