121044246 发表于 2009-11-11 04:08:37

进度条问题,想了一晚上搞不定

本帖最后由 121044246 于 2009-11-11 12:18 编辑

自己写了个软件安装工具,搞了个进度条,想让进度条按照按选中的软件数安装程度来走,例如.我选中了8个软件.安装完一个软件,进度条就走到12.5,安装完第二个软件就走到25%$numinstall = 0 ;$numinstall选中数量
For $i = 1 To 18
        If GUICtrlRead($checkbox[$i]) = $GUI_CHECKED Then $numinstall += 1
Next
$num = 0 ;从1到$numinstall递增
For $i = 1 To 18
        If GUICtrlRead($checkbox[$i]) = $GUI_CHECKED Then
                $num += 1
                ShellExecuteWait(IniRead("config.ini", "Shell" & $i, "Command", ""))
                GUICtrlSetData($Progress1, 100 / $numinstall * $num)
                GUICtrlSetState($checkbox[$i], $GUI_UNCHECKED)
        Else
        EndIf
Next我是菜鸟,不知道除了上面那样写,还有没有更点单的代码!

kn007 发表于 2009-11-11 07:28:12

例子:相信看得到变量的意思      ProgressOn('', '', '', -1, @DesktopHeight - 135, 1)
      For $i = 1 To $Num
            If GUICtrlRead($Listem[$i], 1) = 1 Then
                              $j+=1
                              ProgressSet($j*100/ $Numinstall, '正在安装' & $softname[$i] & '...' & @CRLF & @CRLF & $pro, '')
                              ShellExecuteWait($softpath[$i])
            EndIf
      Next
      Sleep(1000)
      ProgressOff()$pro是一个无聊的变量,请无视之(其实就是说明)

121044246 发表于 2009-11-11 12:09:16

谢谢楼上的,搞定了.设置1个变量.为1到选中软件总数 :face (33):

121044246 发表于 2009-11-11 17:43:49

没人帮我下吗?

karlpopper 发表于 2009-11-12 02:14:38

为了分顶你一下 走人

fpquenya 发表于 2009-11-12 11:11:34

神奇~~~~~~~~~~

121044246 发表于 2009-11-12 11:18:52

代码里面2个FOR TONEXT是一样 ,用起来一个是固定,另外一个是递增,不明白怎么回事。。有没有高手指点一下

水木子 发表于 2009-11-12 12:22:48

本帖最后由 水木子 于 2009-11-12 12:51 编辑

问题解决了吗?我这里抽空做了一个,不知道是不是你要的?
时间比较匆忙写得比较乱,也没有检查有没有错误还望见谅,希望能帮上忙!#include <ComboConstants.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>

$Form1 = GUICreate("进度条", 380, 200)
$Progress1 = GUICtrlCreateProgress(50, 50, 260, 30)
$Button1 = GUICtrlCreateButton("开始", 150, 150, 80, 30, $WS_GROUP)
$Button2 = GUICtrlCreateButton("退出", 240, 150, 80, 30, $WS_GROUP)
$Combo1 = GUICtrlCreateCombo("1", 210, 100, 80, 50)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|10|", "1")
$Label1 = GUICtrlCreateLabel("选择安装软件的数量:", 50, 100, 160, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("0%", 320, 53, 50, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3,$Button2
                        Exit
                Case $Button1
                        kaishi()
        EndSwitch
WEnd

Func kaishi()
        $a = GUICtrlRead($Combo1)
        $b = Int (100 / $a)
        $z = 1
        For $i = 1 To 100
                GUICtrlSetData($Progress1,$i)
                GUICtrlSetData($Label2,$i&"%")
                $c = GUICtrlRead($Progress1)
                $d = IsInt($c / $b )
                If $d = 1 Then
                        MsgBox(0,"","已经安装"&$z&"个软件")
                        $z += 1
                EndIf       
        Next       
EndFunc

qiaoyu1393 发表于 2009-11-12 13:14:03

:face (29)::face (29):

水木子 发表于 2009-11-12 13:32:47

本帖最后由 水木子 于 2009-11-12 13:33 编辑

楼上的,纯表情可能遭扣分哦!

有啥意见请多指教。:face (20):

121044246 发表于 2009-11-12 15:21:37

多谢水木子的帮忙,晚上回去试下。其实我发的代码是可以的,只是不明白2个FOR一样得出的结果却不同

121044246 发表于 2009-11-12 19:39:31

问题解决了吗?我这里抽空做了一个,不知道是不是你要的?
时间比较匆忙写得比较乱,也没有检查有没有错误还望见谅,希望能帮上忙!#include
#include
#include
#include

$Form1 = GUICreate("进度条",...
水木子 发表于 2009-11-12 12:22 http://www.autoitx.com/images/common/back.gif
很不错.没什么问题了..感谢你百忙之中抽空帮忙.

水木子 发表于 2009-11-12 21:27:14

呵呵!没什么,问题解决了就好。

wangwen916 发表于 2009-11-13 20:29:06

没仔细看,想应该不难,不就个1/8么,我的进度条是按下载的字节数递增的...已经成功了...
累积个分.....期望成为VIP

jiushizhu 发表于 2009-11-13 21:32:07

学习一下!
页: [1] 2
查看完整版本: 进度条问题,想了一晚上搞不定