Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
[решено] Как узнать кол-во отмеченных чекбоксов?

Аватара для Centrinar

Старожил


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

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


Изменения
Автор: Creat0R
Дата: 07-05-2010
Без вас господа никуда Как можно посчитать кол-во чекбоксов которые были отмеченны? СПАСИБО!

Отправлено: 22:59, 22-04-2010

 

Аватара для beve

Старожил


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

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


Самое малое - двумя способами: или во время того, как отмечаете эти самые чекбоксы, или уже после того как они отмечены-неотмечены пройтись по ним... Может еще кто способов добавит... но поможет ли это вам? Если нет, то объясните продробнее, что вы делаете и пример вашего скрипта.

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.

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

Отправлено: 23:12, 22-04-2010 | #2



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

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


Аватара для Centrinar

Старожил


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

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


Можно на этом продемонстрировать
Код: Выделить весь код
#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


Аватара для beve

Старожил


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

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


Аватара для Centrinar

Старожил


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

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


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


Аватара для Creat0R

Must AutoIt


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

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


Цитата Centrinar:
н категорически не хочет выполнять дилние т.е. не может разделить 100/$k »
Ну почему, деление как раз происходит, если к примеру отметить две птички, то $iProgr будет равна 150, т.к первый раз мы делим 100 на 1 (один отмечены чекбокс) и получаем естественно 100, а второй раз мы уже делим 100 на 2 и получаем 50, отсюда и результат: 100 + 50 = 150

А вообще прогресс строится не так, нужно получить шаг прогресса методом деления 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

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

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

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

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

Отправлено: 14:30, 23-04-2010 | #6


Аватара для kaster

Старожил


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

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


Centrinar, а зачем тебе второй счетчик $k? используй тот, что входит в цикл - $i - вместо него
а твоя ошибка в том, что он ($k) у тебя изначально не проинициализирован. А ты хочешь к нему автоинкремент прмименить

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 14:30, 23-04-2010 | #7


Аватара для Creat0R

Must AutoIt


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

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


Цитата kaster:
зачем тебе второй счетчик $k? используй тот, что входит в цикл - $i - вместо него »
$i это общий счётчик, он отобразит не количество отмеченных чекбоксов, а всех перечисленных в цикле.

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

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

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


Отправлено: 14:44, 23-04-2010 | #8


Аватара для Centrinar

Старожил


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

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


Сделал как в образце, но он прибовляет сразу 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


Аватара для Creat0R

Must AutoIt


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

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


Цитата Centrinar:
Сделал как в образце, но он прибовляет сразу 100 »
Потому что в цикле вместо $iProgress используется $iProgr. И ещё, а зачем тогда нужен счётчик отмеченных чекбоксов?

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

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

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

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

Отправлено: 15:11, 23-04-2010 | #10



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

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

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




 
Переход