Что нового

Подсчет значений, устанавливаемых в ProgressBar при копировании файлов

Scampy

Новичок
Сообщения
50
Репутация
0
CreatoR сказал(а):
k790
Какой смысл всё это подсчитывать? Ну так не выбрал пользователь несколько птичек, прогресс автоматом перейдёт к тому пункту который выполняется, с точки зрения пользователя это почти не заметно.

Но если сильно нужно, тогда вот:
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\..\Мои документы\интернет\Icon_228.ico
#AutoIt3Wrapper_Res_Language=1049
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=C:\Documents and Settings\Admin\Рабочий стол\AutoIt\opera_ac_backup\backup_opera_AC_0.4.kxf


Global $Opera_Dir = FileSelectFolder("Укажите путь к папке оперы ас", "")
Global $Backup_Dir = $Opera_Dir & "\Op_Backup"
;$initial_dir = 


$hMain_GUI = GUICreate("backup_opera_AC", 546, 366, 212, 90)
GUISetIcon($Opera_Dir & "\OperaAC.exe")
GUISetCursor(2)

$First_Checkbox = GUICtrlCreateDummy() + 1 ;Метка первого пункта
$Checkbox1 = GUICtrlCreateCheckbox("Почта", 40, 40, 81, 25)
$Checkbox2 = GUICtrlCreateCheckbox("Сессии", 40, 70, 81, 25)
$Checkbox3 = GUICtrlCreateCheckbox("Контакты", 40, 100, 81, 25)
$Checkbox4 = GUICtrlCreateCheckbox("Пароли", 40, 130, 81, 25)
$Checkbox5 = GUICtrlCreateCheckbox("Список загрузок", 40, 160, 121, 25)
$Checkbox6 = GUICtrlCreateCheckbox("Глобальная история", 40, 190, 129, 25)
$Checkbox7 = GUICtrlCreateCheckbox("Набранные адреса в адресной строчке", 40, 220, 241, 25)
$Checkbox8 = GUICtrlCreateCheckbox("Поиск", 40, 250, 73, 25)
$Last_Checkbox = GUICtrlCreateDummy() - 1 ;Метка последнего пункта (для определения количества пунктов)

$Progress1 = GUICtrlCreateProgress(32, 304, 329, 40)
GUICtrlSetColor(-1, 0x008000)
$Button1 = GUICtrlCreateButton("backup", 384, 304, 139, 40, $WS_GROUP)
$Label1 = GUICtrlCreateLabel($Opera_Dir, 40, 20, 492, 17)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            DirCreate($Backup_Dir)
            
            $iProgress = 10 ;Задаём начальный прогресс
            $iPrgrs_Step = 100 / (($Last_Checkbox - $First_Checkbox) + 1) ;Вычисляем степень прогресса (100 делим на общее число птичек)
            
            If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
                GUICtrlSetData($Progress1, $iProgress) ;Задаём прогресс
                $iProgress += $iPrgrs_Step ;Прибавляем к прогрессу вычесленную степень прогресса
                
				Sleep(3000) ;Пауза для отладки, вместо копирования
                ;DirCopy($Opera_Dir & "\profile\mail", $Backup_Dir & "\mail")
            EndIf
            
            If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then
                GUICtrlSetData($Progress1, $iProgress) ;Тут уже используется уровень прогресса в зависимости от предыдущего пункта (если тут отмечен, прогресс увеличился)
                $iProgress += $iPrgrs_Step ;Прибавляем к прогрессу вычесленную степень прогресса
                
				Sleep(3000) ;Пауза для отладки, вместо копирования
                ;DirCopy($Opera_Dir & "\profile\sessions", $Backup_Dir & "\sessions")
            EndIf
            
            If GUICtrlRead($Checkbox3) = $GUI_CHECKED Then
                GUICtrlSetData($Progress1, $iProgress) ;Тут уже используется уровень прогресса в зависимости от предыдущего пункта (если тут отмечен, прогресс увеличился)
                $iProgress += $iPrgrs_Step ;Прибавляем к прогрессу вычесленную степень прогресса
                
				Sleep(3000) ;Пауза для отладки, вместо копирования
                ;DirCopy($Opera_Dir & "\profile\", $Backup_Dir & "\")
            EndIf
            
            ;и т.д.
            
            GUICtrlSetData($Progress1, 100) ;Задаём прогресс на 100, в знак завершения резервирования
            MsgBox(64, 'Title', 'Done.', 0, $hMain_GUI) ;Выводим сообщение
            GUICtrlSetData($Progress1, 0) ;Задаём прогресс на 0, как заказывал :)
    EndSwitch
WEnd
А если таких галочек скажем 50 штук? И выделены только первые пять. Progressbar ползет все равно от общего значения галочек? От реально выделенных возможно сделать?
 
Верх