找回密码
 加入
搜索
查看: 5080|回复: 21

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

  [复制链接]
发表于 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
我是菜鸟,不知道除了上面那样写,还有没有更点单的代码!
发表于 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是一个无聊的变量,请无视之(其实就是说明)
 楼主| 发表于 2009-11-11 12:09:16 | 显示全部楼层
谢谢楼上的,搞定了.设置1个变量.为1到选中软件总数
 楼主| 发表于 2009-11-11 17:43:49 | 显示全部楼层
没人帮我下吗?
发表于 2009-11-12 02:14:38 | 显示全部楼层
为了分顶你一下 走人
发表于 2009-11-12 11:11:34 | 显示全部楼层
神奇~~~~~~~~~~
 楼主| 发表于 2009-11-12 11:18:52 | 显示全部楼层
代码里面2个FOR TO  NEXT是一样 ,用起来一个是固定,另外一个是递增,不明白怎么回事。。有没有高手指点一下
发表于 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
发表于 2009-11-12 13:14:03 | 显示全部楼层
发表于 2009-11-12 13:32:47 | 显示全部楼层
本帖最后由 水木子 于 2009-11-12 13:33 编辑

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

有啥意见请多指教。
 楼主| 发表于 2009-11-12 15:21:37 | 显示全部楼层
多谢水木子的帮忙,晚上回去试下。其实我发的代码是可以的,只是不明白2个FOR一样得出的结果却不同
 楼主| 发表于 2009-11-12 19:39:31 | 显示全部楼层
问题解决了吗?我这里抽空做了一个,不知道是不是你要的?
时间比较匆忙写得比较乱,也没有检查有没有错误还望见谅,希望能帮上忙!#include
#include
#include
#include

$Form1 = GUICreate("进度条",  ...
水木子 发表于 2009-11-12 12:22

很不错.没什么问题了..感谢你百忙之中抽空帮忙.
发表于 2009-11-12 21:27:14 | 显示全部楼层
呵呵!没什么,问题解决了就好。
发表于 2009-11-13 20:29:06 | 显示全部楼层
没仔细看,想应该不难,不就个1/8么,我的进度条是按下载的字节数递增的...已经成功了...
累积个分.....期望成为VIP
发表于 2009-11-13 21:32:07 | 显示全部楼层
学习一下!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-7 00:29 , Processed in 0.080624 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表