Что нового

[Элементы GUI] Прогрес бар при нажатии на кнопку

AlexVong

Новичок
Сообщения
112
Репутация
1
Прошу помощи, как прикрутить к моему коду прогрес бар, при нажатии на кнопку $hWorkOut - основная форма исчезала и появлялся прогрес бар, который бы показывал процес обработки ссылок, или разместить прогрес бар на основной форме.
Код:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <Array.au3>
#include <IE.au3>

Local $exStyles = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES)

Global _
        $sLink = "http://base"

$sText = FileRead("1.txt") ;исходный код страницы

$aLink = StringRegExp($sText, "\/server\/documentview\/default\.aspx\?num=\d{3,}", 3) ;получаем список ссылок
$aLabel = StringRegExp($sText, '\s{2,}\d{1,}\.{1,}\d{1,}', 3)

;_ArrayDisplay($aLink) ; список ссылок
;_ArrayDisplay($aLabel) ; список значений полей

Dim $aInf[UBound($aLink)][3] ; новый массив для ф-ции   _GUICtrlListView_AddArray

For $i = 0 To UBound($aLink) - 1
    $aInf[$i][0] = $aLink[$i] ; копируем данные о ссылках в новый массив
Next

GUICreate("", 500, 400)

$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
_GUICtrlListView_SetExtendedListViewStyle($hListView, $exStyles) ; стиль ListView с чекбоксами

_GUICtrlListView_AddColumn($hListView, "Ссылки", 300) ; колонка "Ссылки"
_GUICtrlListView_AddArray($hListView, $aInf) ; всталяем массив данных

$hWorkOut = GUICtrlCreateButton("Показать выделенные", 340, 350, 140, 30)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $hWorkOut
            $iCount = _GUICtrlListView_GetItemCount($hListView) ; общее количество элементов
            $oIE = _IECreate("") ; открываем браузер

            For $i = 0 To $iCount ; в цикле
                If _GUICtrlListView_GetItemChecked($hListView, $i) Then ; проверяем не отмечен ли элемент, если да, то
                    $aArr = _GUICtrlListView_GetItem($hListView, $i) ; берем информацию об элементе, где [3] ячейка - текст, т.е. ссылка

                    _Print($aArr[3]) ; функция для печати
                EndIf
            Next

            _IEQuit($oIE) ; закрываем браузер
    EndSwitch
WEnd

Func _Print($_sLink)
    _IENavigate($oIE, $sLink & $_sLink)  ; переходим по ссылке
    $oQuery = _IEGetObjById($oIE, "PrintFile")  ; получаем объект по ID
    _IEAction($oQuery, "click") ; кликаем на него
    _IELoadWait($oIE) ; ждем загрузки страницы в IE
    Sleep(100)
EndFunc

Очень прошу показать это на моем примере, autoit еще учусь :stars:
заранее спасибо :beer:
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
AlexVong
http://autoit-script.ru/index.php/topic,319.msg3186.html#msg3186
здесь есть похожее.
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
Что то не получается, пожалуйста можно показать на моем примере .... :'(
И как распределить выполнение прогресс бара в зависимости от % обработки ссылок, тех напротив которых в чекбоксах стоит флажок с указанием % выполнения. :beer:
 

ArtInt

Знающий
Сообщения
135
Репутация
18
Согласен с FlatX007. С файликом было-бы проще.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
AlexVong,
Простой пример с прогрессом.
Код:
$sURL = 'http://base'
$sRead = FileRead(@ScriptDir & '\1.txt')
$aHref = StringRegExp($sRead, 'href="(.*?)"', 3)
If @error Then Exit 13
$sRead = ''
$iUb = UBound($aHref)
ProgressOn('My Title', 'Some Text', '0%')
For $i = 0 To $iUb - 1
	_MyFunc($sURL & $aHref[$i])
	$s_Percent = StringFormat('%.2f%', 100 * ($i + 1) / $iUb)
	ProgressSet(Int($s_Percent), $s_Percent)
Next
Sleep(2000)
ProgressOff()

Func _MyFunc($s_Url)
	ToolTip($s_Url, 0, 0)
	Sleep(Random(2000, 5000, 1))
EndFunc   ;==>_MyFunc
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
madmasles Спасибо. то что надо ...
Вот только не могу прикрутить его к своему примеру :'( ... опыта мало только учусь ... :smile: - нужно обрабатывать не все ссылки а только те которые отмечены флажками, поэтому без формы с чекбоксами не обойтись, пытаюсь сделать чтобы при нажатии на кнопку исчезала основная форма и запускался прогресс бар - который бы показывал процесс обработки ссылок отмеченных в предыдущей форме и после обработки всех отмеченных ссылок приложение бы закрывалось. В своем примере убрал обработку кода на страницах, оставил только открытие ссылок.....
Код:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <Array.au3>
#include <IE.au3>

Local $exStyles = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES)

Global _
        $sLink = "http://base"

$sText = FileRead("1.txt") ;исходный код страницы

$aLink = StringRegExp($sText, "\/server\/documentview\/default\.aspx\?num=\d{3,}", 3) ;получаем список ссылок

Dim $aInf[UBound($aLink)][3] ; новый массив для ф-ции   _GUICtrlListView_AddArray

For $i = 0 To UBound($aLink) - 1
    $aInf[$i][0] = $aLink[$i] ; копируем данные о ссылках в новый массив
Next

GUICreate("", 500, 400)

$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
_GUICtrlListView_SetExtendedListViewStyle($hListView, $exStyles) ; стиль ListView с чекбоксами

_GUICtrlListView_AddColumn($hListView, "Ссылки", 300) ; колонка "Ссылки"
_GUICtrlListView_AddArray($hListView, $aInf) ; всталяем массив данных

$hWorkOut = GUICtrlCreateButton("Показать выделенные", 340, 350, 140, 30)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $hWorkOut
            $iCount = _GUICtrlListView_GetItemCount($hListView) ; общее количество элементов
            $oIE = _IECreate("") ; открываем браузер

            For $i = 0 To $iCount ; в цикле
                If _GUICtrlListView_GetItemChecked($hListView, $i) Then ; проверяем не отмечен ли элемент, если да, то
                    $aArr = _GUICtrlListView_GetItem($hListView, $i) ; берем информацию об элементе, где [3] ячейка - текст, т.е. ссылка

                    _Print($aArr[3]) ; функция для печати
                EndIf
            Next

            _IEQuit($oIE) ; закрываем браузер
    EndSwitch
WEnd

Func _Print($_sLink)
    _IENavigate($oIE, $sLink & $_sLink)  ; переходим по ссылке
    _IELoadWait($oIE) ; ждем загрузки страницы в IE
    Sleep(100)
EndFunc
 
Верх