Цитата 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