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

Показать сообщение отдельно

Аватара для 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