| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1287 人关注过本帖
标题:VFP9.0 进度条的问题
取消只看楼主 加入收藏
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
结帖率:91.67%
收藏
已结贴  问题点数:12 回复次数:11 
VFP9.0 进度条的问题
今天刚安装使用VFp9.0,原来在6.0中编的程序基本能用,而且界面也更漂亮了,但有个问题还没弄明白,原来在6.0中设置的进度长滚动方式和赋予最大值的语句变成错误的了
THISFORM.oleProgressBar.AddProperty("Scrolling",1)
THISFORM.oleProgressBar.AddProperty("Max",100)
这两句在9.0中不能运行,是错误的。不知9.0中设置的进度长滚动方式和赋予最大值的语句怎么写。
请大师教我

搜索更多相关主题的帖子: 最大值 而且 漂亮 
2013-12-29 14:45
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
没有9.0的帮助文件啊
2013-12-29 16:36
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
程序自带英文版的,看不懂
2013-12-29 16:37
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
多谢两位的帮助和指点。我学了20多年的FOXPRO了,可突然觉得自己于FOXPRO是那么无知。唉...
2013-12-29 18:05
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
呵呵,厉害不厉害不知道,只是,我编的程序怎么总感觉和你们编的不一样呢
我做了一个管理员工信息的程序,主程序和子程序加起来有10000多行了,全是用代码做的,一直在6.0下运行,今天换了9.0,有些地方还需要修改,9.0还要学习一阵子。
现在正做个进度条,用的是6楼的方法,很不错啊
2013-12-29 20:49
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
sdta版主的话我没有理解啊,用VFP编程,我们用的大多数不是VFP自带的控件吗,比如:textbox、combobox、shape等等,怎么说最好不用啊
2013-12-29 21:44
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
呵呵,这下理解了,以后尽量不用了
2013-12-29 22:29
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
版主帮我看一下这段过程代码:
***********************************************************************
*                    将DBF数据导出到指定EXCEL文件中                   *
***********************************************************************
PROCEDURE EXPORTTOXLS
  DIMENSION  PidArr(5000)
  LOCAL oExcel,DrtPhoto,RecordNum,nDataTotal1,nDataTotal2,mm,nn
  SET DATE YMD
  STORE "" TO PidArr
  frmEi.oleStatusBar.Visible = .F.
  frmEi.lblProgressBar.Caption = "正在导出数据,请稍候..."
  frmEi.shpProgressBar1.Left = LEN(frmEi.lblProgressBar.Caption)*120*_rateV/22
  frmEi.shpProgressBar2.Left = LEN(frmEi.lblProgressBar.Caption)*120*_rateV/22
  frmEi.lblProgressBar.Visible = .T.
  frmEi.shpProgressBar1.Visible = .T.
  frmEi.shpProgressBar2.Visible = .T.  
  
  oExcel=CREATEOBJECT('Excel.Application')
  IF NOT TYPE("oExcel") = "O"
    =MESSAGEBOX("Excel对象创建失败,程序将中止!", 16, "错误")
    RETURN
  ENDIF
  cExcelFile=GETFILE("MicroSoft Office Excel 工作薄:xls")
  IF .NOT. SUBSTR(SUBSTR(cExcelFile,RAT("\",cExcelFile)+1),1,AT(".",SUBSTR(cExcelFile,RAT("\",cExcelFile)+1))-1)=="员工基本信息采集表—生成数据库"
    =MESSAGEBOX("请打开“员工基本信息采集表—生成数据库!”工作薄",64,"系统提示")
    RETURN
  ENDIF

  oExcel.Workbooks.Open("&cExcelFile")
  oExcel.Visible=.F.
  oExcel.Worksheets("生成数据库").Activate
  oExcel.ActiveSheet.UnProtect('711205')
  oExcel.Application.ScreenUpdating = .F.
  FOR I=4 TO 5000
    IF EMPTY(oExcel.Worksheets("生成数据库").Cells(I,1).Value)
    nDataTotal1=I
    EXIT
  ENDIF
  PidArr(I-3)=oExcel.Worksheets("生成数据库").Cells(I,3).Value
  ENDFOR
  oExcel.Worksheets("员工照片").Activate
  oExcel.ActiveSheet.UnProtect('711205')
  FOR I=2 TO 5000
    IF EMPTY(oExcel.Worksheets("员工照片").Cells(I,1).Value)
      nDataTotal2=I
      EXIT
    ENDIF
  ENDFOR
  nFldCount =AFIELDS(aFldList,"Ei")
  J=0
  P=0
  SCAN FOR &ExportCondition
    J=J+1
    frmEi.shpProgressBar1.Width = J*200*_rateV/(ExportReccount+nFldCount-1)
    SCATTER MEMVAR MEMO
    PersonnelName=TRIM(Ei.姓名)
    PersonnelIdcard=TRIM(Ei.身份证号)
    IF ASCAN(PidArr,PersonnelIdcard)<>0
      IF MESSAGEBOX("身份证号为“"+PersonnelIdcard+"”("+PersonnelName+")的员工信息已存在,"+CHR(10)+CHR(10)+"现在更新吗?",36,"系统询问")=6
        P=P+1
        mm=ASCAN(PidArr,PersonnelIdcard)+3
        nn=ASCAN(PidArr,PersonnelIdcard)+1
      ELSE
        LOOP
      ENDIF
    ELSE
      P=P+1
      mm=nDataTotal1
      nn=nDataTotal2
      nDataTotal1=nDataTotal1+1
      nDataTotal2=nDataTotal2+1
    ENDIF
    oExcel.Worksheets("员工照片").Activate
   
    RecordNum=oExcel.ActiveSheet.Cells(nn-1,1).Value
    IF TYPE("RecordNum")="N"
      oExcel.ActiveSheet.Cells(nn,1).Value=RecordNum+1
    ELSE
      oExcel.ActiveSheet.Cells(nn,1).Value=1
    ENDIF
    dValue=TRIM(Ei.姓名)
    IF NOT ISNULL(dValue)
      oExcel.ActiveSheet.Cells(nn,2).Value=dValue
    ENDIF
    dValue=TRIM(Ei.身份证号)
    IF NOT ISNULL(dValue)
      oExcel.ActiveSheet.Cells(nn,3).Value=dValue
    ENDIF
    IF oExcel.ActiveSheet.Rows(nn).RowHeight=108
      FOR EACH DrtPhoto IN oExcel.ActiveSheet.DrawingObjects
        IF !ISNULL(oExcel.Intersect(DrtPhoto.TopLeftCell,oExcel.ActiveSheet.Cells(nn, 4)))
          DrtPhoto.Delete
        ENDIF
      ENDFOR
    ENDIF
    IF !EMPTY(Ei.照片)
      COPY TO temp FIELDS Ei.照片 NEXT 1
      handlein=FOPEN("temp.fpt")
      lcFile=DefaultPath+"test.bmp"
      handleout=FCREATE(lcFile)
      gnEnd=FSEEK(handlein,0,2)
      gnTop=FSEEK(handlein,0)
      str1=FREAD(handlein,gnEnd)
      str2=RIGHT(str1,LEN(str1)-599)
      n=FWRITE(handleout,str2)
      =FCLOSE(handlein)
      =FCLOSE(handleout)
      ERASE temp.*
      oExcel.ActiveSheet.Cells(nn,4).Select
      IF FILE("&lcFile")
        oExcel.Selection.RowHeight=108
        oExcel.ActiveSheet.Pictures.Insert(lcFile).Select
        oExcel.Selection.ShapeRange.LockAspectRatio=.F.
        oExcel.Selection.ShapeRange.Height=107.25
        oExcel.Selection.ShapeRange.Width=82.5
        oExcel.Selection.ShapeRange.Top=oExcel.ActiveSheet.Cells(nn,4).Top + 0.75
        oExcel.Selection.ShapeRange.Left=oExcel.ActiveSheet.Cells(nn,4).Left + 0.75
        oExcel.Selection.Placement = 2
        ERASE &lcFile
      ELSE
        oExcel.ActiveSheet.Cells(nn,4).RowHeight=14.25
      ENDIF
    ELSE
      oExcel.ActiveSheet.Cells(nn,4).RowHeight=14.25
    ENDIF
    oExcel.ActiveSheet.Cells(nn,1).Select
    oExcel.Worksheets("生成数据库").Activate
    RecordNum=oExcel.ActiveSheet.Cells(mm-1,1).Value
    IF TYPE("RecordNum")="N"
      oExcel.ActiveSheet.Cells(mm,1).Value=RecordNum+1
    ELSE
      oExcel.ActiveSheet.Cells(mm,1).Value=1
    ENDIF
    FOR J=2 TO nFldCount-14
      mmm=ALLTRIM(STR(mm))
      oExcel.ActiveSheet.Range("A"+mmm+":BU"+mmm).VerticalAlignment =1
      dValue = .NULL.
      IF AT(aFldList[J,2],"CDLMNFIBYT")=0
        LOOP
      ENDIF
      cFieldName=aFldList[J,1]
      dValue = EVALUATE(cFieldName)
      DO CASE
        CASE aFldList[J,2]="C"
          dValue=TRIM(dValue)
        CASE aFldList[J,2]="D"
          dValue=IIF(!EMPTY(dValue),DTOC(dValue),"")
        CASE aFldList[J,2]="T"
          dValue=IIF(!EMPTY(dValue),TTOC(dValue),"")
        CASE INLIST(aFldList[J,2],"N","F","I","B","Y")
        CASE aFldList[J,2]="L"
          IF dValue
            dValue=IIF(J=30 .OR. J=34,"是","有")
          ELSE
            dValue=IIF(J=30 .OR. J=34,"否","无")
          ENDIF      
          IF J=34 .AND. dValue="否"
            oExcel.Worksheets("生成数据库").Cells(mm,J-1).Value="无"
          ENDIF
        CASE aFldList[J,2]="M"
        OTHERWISE
          dValue=.NULL.
      ENDCASE
      IF VARTYPE(dValue)="C" .AND. EMPTY(dValue)
        LOOP
      ENDIF
      IF NOT ISNULL(dValue)
        DO CASE
          CASE J<30
            oExcel.Worksheets("生成数据库").Cells(mm,J).Value=dValue
          CASE J>30 .AND.J<34
            oExcel.Worksheets("生成数据库").Cells(mm,J-1).Value=dValue
          CASE J>34
            oExcel.Worksheets("生成数据库").Cells(mm,J-2).Value=dValue
        ENDCASE
      ENDIF
    ENDFOR
    oExcel.ActiveSheet.Cells(mm,1).Select
  ENDSCAN
  cChrStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  FOR J=2 TO nFldCount-1
    frmEi.shpProgressBar1.Width = (ExportReccount+J)*200*_rateV/(ExportReccount+nFldCount-1)
    IF aFldList[J, 2]="M"
      cColumn=SUBSTR(cChrStr,INT((J-1)/26),1)+SUBSTR(cChrStr,IIF(MOD(J,26)=0,26,MOD(J, 26)),1)
      oExcel.Worksheets("生成数据库").Columns(cColumn+":"+cColumn).WrapText=.T.
    ENDIF
  ENDFOR
  oExcel.Worksheets("员工照片").Activate
  oExcel.ActiveSheet.Protect('711205',.T.,.T.,.T.)
  oExcel.Worksheets("生成数据库").Activate
  oExcel.ActiveSheet.Protect('711205',.T.,.T.,.T.)
  oExcel.Application.ScreenUpdating = .T.
  oExcel.ActiveWorkbook.Save
  =MESSAGEBOX("成功导出"+ALLTRIM(STR(P))+"名员工的数据记录!", 64, "系统提示")
  oExcel.Visible=.T.
  frmEi.lblProgressBar.Caption = ""
  frmEi.shpProgressBar1.Width = 0
  frmEi.oleStatusBar.Visible = .T.
  frmEi.lblProgressBar.Visible = .F.
  frmEi.shpProgressBar1.Visible = .F.
  frmEi.shpProgressBar2.Visible = .F.
  oExcel=.NULL.
ENDPROC
***********************************************************************

这段代码在6.0中一点问题也没有,可在9.0中运行时,首先说
nDataTotal1=nDataTotal1+1  这句是数据类型不匹配

我在前面加一一句:
STORE 0 TO RecordNum,nDataTotal1,nDataTotal2,mm,nn

又说
RecordNum=oExcel.ActiveSheet.Cells(nn-1,1).Value  这句Cells不是一个对象,搞得我很晕
2013-12-29 22:39
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
有人可能会说了,干什么这么费劲,用COPY命令导入Excel很简单。不是这样的,我的DBF里还有备注型字段,存放员工家庭成员信息、学习教育信息、工作经历信息和获取奖励信息,还有通用字段,存放员工的照片,这些用COPY命令是导不到Excel中的,用这段代码却能把DBF中的数据全部导入到Excel中。
2013-12-29 22:49
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
因为只有存在通用字段,程序运行时才能显示员工完整信息。
图片附件: 游客没有浏览图片的权限,请 登录注册
2013-12-29 23:47
快速回复:VFP9.0 进度条的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027291 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved