怎么实现带进度条的文件复制
如何实现带进度条的文件复制
我现在用的是run copy 命令,运行时显示的是MSDOS窗口,如何实现WIN系统复制粘贴的进度条样式?
------解决思路----------------------
给个演示
------解决思路----------------------
请参考:http://bbs.****.net/topics/340001733/
我现在用的是run copy 命令,运行时显示的是MSDOS窗口,如何实现WIN系统复制粘贴的进度条样式?
------解决思路----------------------
给个演示
oPB = ProgressBar("正在复制文件"+0h0D+"请稍候......")
IF !ISNULL(oPB)
** 相关函数 FOPEN()、FCREATE()、FSEEK()、FEOF()、FREAD()、FWRITE()、FCLOSE()
文件大小 = 65536
数据块大小 = 1024
* 实际用 DO WHILE !FEOF()
FOR i = 数据块大小 TO 文件大小 STEP 数据块大小
oPB.nProgress = i / 文件大小
INKEY(0.1, "H")
ENDFOR
oPB.Release
ENDIF
RETURN
FUNCTION ProgressBar(cMsg)
PRIVATE oForm
oForm = CREATEOBJECT("ProgressBarForm", cMsg)
oForm.Show(2)
RETURN oForm
ENDFUNC
DEFINE CLASS ProgressBarForm AS Form
Desktop = .T.
WindowType = 1
AutoCenter = .T.
TitleBar = 0
BorderStyle = 1
nProgress = 0
ADD OBJECT Label1 AS Label WITH Width=SYSMETRIC(1),AutoSize=.T.,WordWrap=.T.,FontSize=24
ADD OBJECT Shape1 AS Shape WITH Top=this.Height-35,Height=25,Anchor=4
ADD OBJECT Shape2 AS Shape WITH Top=this.Height-35,Height=25,Anchor=4,;
Width=0,BackColor=RGB(50,150,250),BorderStyle=0
PROCEDURE Init
LPARAMETERS cMsg
this.Label1.Caption = cMsg
ENDPROC
PROCEDURE Activate
IF !EMPTY(this.Tag)
RETURN
ENDIF
this.Tag = "1"
*INKEY(0.05)
this.AutoCenter = .T.
this.Label1.Visible = .T.
this.Height = this.Label1.Height + 65
this.Width = this.Label1.Width + 40
this.Label1.Top = INT((this.ViewPortHeight - this.Label1.Height - 45)/2)
this.Label1.Left = INT((this.ViewPortWidth - this.Label1.Width)/2)
this.Shape1.Left = this.Label1.Left
this.Shape1.Width = this.Label1.Width
this.Shape2.Left = this.Label1.Left
ENDPROC
PROCEDURE nProgress_Assign
LPARAMETERS vNewVal
IF BETWEEN(vNewVal, 0, 1)
this.Shape2.Width = this.Shape1.Width * vNewVal
ENDIF
ENDPROC
ENDDEFINE
------解决思路----------------------
请参考:http://bbs.****.net/topics/340001733/