进度条问题,想了一晚上搞不定
本帖最后由 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我是菜鸟,不知道除了上面那样写,还有没有更点单的代码! 例子:相信看得到变量的意思 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是一个无聊的变量,请无视之(其实就是说明) 谢谢楼上的,搞定了.设置1个变量.为1到选中软件总数 :face (33): 没人帮我下吗? 为了分顶你一下 走人 神奇~~~~~~~~~~ 代码里面2个FOR TONEXT是一样 ,用起来一个是固定,另外一个是递增,不明白怎么回事。。有没有高手指点一下 本帖最后由 水木子 于 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 :face (29)::face (29): 本帖最后由 水木子 于 2009-11-12 13:33 编辑
楼上的,纯表情可能遭扣分哦!
有啥意见请多指教。:face (20): 多谢水木子的帮忙,晚上回去试下。其实我发的代码是可以的,只是不明白2个FOR一样得出的结果却不同 问题解决了吗?我这里抽空做了一个,不知道是不是你要的?
时间比较匆忙写得比较乱,也没有检查有没有错误还望见谅,希望能帮上忙!#include
#include
#include
#include
$Form1 = GUICreate("进度条",...
水木子 发表于 2009-11-12 12:22 http://www.autoitx.com/images/common/back.gif
很不错.没什么问题了..感谢你百忙之中抽空帮忙. 呵呵!没什么,问题解决了就好。 没仔细看,想应该不难,不就个1/8么,我的进度条是按下载的字节数递增的...已经成功了...
累积个分.....期望成为VIP 学习一下!
页:
[1]
2