ziyaxian 发表于 2010-3-9 16:08:11

我想在GuiCtrlCreateEdie创建的框内创建进度条或完成百分比,能实现吗?

我想在GuiCtrlCreateEdie创建的框内创建进度条或完成百分比,能实现吗?

afan 发表于 2010-3-9 16:26:10

进度条会影响编辑框的功能,不合适。百分比是指文字吗?那当然可以

ziyaxian 发表于 2010-3-9 17:30:12

本帖最后由 ziyaxian 于 2010-3-9 17:31 编辑


我想在第几个工作表...后面加上已完成的百分比,不知道怎么写入这个老是变化的数字,主要是这个数是根据下面的一个循环得出的,怎么能写到上面来呢?

afan 发表于 2010-3-9 17:38:46

贴代码吧,自己写太累

llztt 发表于 2010-3-9 17:42:25

EDIT内容是整体写入的哈,任何变动都意味着所有内容重置,刷的太快,怕有闪动的感觉

ziyaxian 发表于 2010-3-9 22:40:26

本帖最后由 ziyaxian 于 2010-3-10 08:42 编辑

代码写的有点简单,能不能在 "正在处理第"&$i&"个工作表..."后面加上下面那个循环完成的百分比呢?或加上现在完成了多行的计算也可以#include <Excel.au3>
#include <Array.au3>
#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <ListboxConstants.au3>
#include <EditConstants.au3>
#Include <File.au3>
#include <GuiEdit.au3>
#include <ScrollBarConstants.au3>


$Form1_1 = GUICreate("", 700, 400, 195, 125)
GUICtrlSetFont($Form1_1, 20)

$Button2 = GUICtrlCreateButton("开始", 450, 350, 60, 30, 0)
$Button3 = GUICtrlCreateButton("退出", 550, 350, 60, 30, 0)
$Group1 = GUICtrlCreateGroup("", 20, 80, 340, 308)
$mylist = GUICtrlCreateEdit("", 400, 160, 280, 167,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL))
$Label4 = GUICtrlCreateLabel("详细过程:", 400, 140, 150, 17)

GUISetState(@SW_SHOW)

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                  Exit
                Case $Button2
          _Do();生成新的工作表并进行计算
        Case $Button3
                  Exit                                        
      EndSwitch
WEnd


Func _Do()
   
    $oExcel1 = _ExcelBookOpen(@ScriptDir&"\aaa.xls",0)
    $aArray = _ExcelSheetList($oExcel1)
        _GUICtrlEdit_Scroll($mylist,$SB_LINEDOWN)
           GUICtrlSetData($mylist, "此表包含"&$aArray&"个工作表"&@CRLF,1)
    For $i = $aArray To 1 Step -1
                _ExcelSheetActivate($oExcel1, $i)
                $c=_ExcelSheetNameGet($oExcel1)
               
                               _GUICtrlEdit_Scroll($mylist,$SB_LINEDOWN)
                               GUICtrlSetData($mylist, "正在处理第"&$i&"个工作表...",1)
                     
                      $hs = $oExcel1.ActiveSheet.usedrange.rows.count
            
                For $a = 2 To $hs
                $1 = _ExcelReadCell($oExcel1, $a, 1)
                $2 = _ExcelReadCell($oExcel1, $a, 2)
                        $3 = _ExcelReadCell($oExcel1, $a, 3)
                $4 = _ExcelReadCell($oExcel1, $a, 4)                       
                $5 = _ExcelReadCell($oExcel1, $a, 5)
                $6 = _ExcelReadCell($oExcel1, $a, 6)
                       
                $7 = $1 + $2 + $3 - $4 + $5 - $6
                         _ExcelWriteCell($oExcel1,$7,$a,7)
                  
                     Next
        GUICtrlSetData($mylist, "完成"&@CRLF,1)           
    Next
      _ExcelBookSave($oExcel1,0)
       _ExcelBookClose($oExcel1,0,0)
       MsgBox(0,"提示","已完成所选择工作表的计算")
EndFunc
      

afan 发表于 2010-3-9 22:51:33

我这没aaa.xls,测试不了

ziyaxian 发表于 2010-3-10 08:47:15


afan aaa.xls表我上传了,帮忙测试一下啊,原表比这个复杂多了,我只是简单弄了一个,谢谢

afan 发表于 2010-3-10 12:27:47

我这打不开,错误代码:无法创建对象。
我没装EXCEL之类的办公软件……
页: [1]
查看完整版本: 我想在GuiCtrlCreateEdie创建的框内创建进度条或完成百分比,能实现吗?