登录注册
上海交通大学论坛 > 数据库 > 浏览当前帖子 手机版 关闭左侧栏
谈谈Visual Foxpro中的OLE (MS Graph为重点)
返回本版】  【发表帖子】  【回复帖子 浏览量  5935      回帖数 0
我爱偷情    等级  

楼主 发表于  2012/4/28 10:57:13    编 辑   


来自Joe, E-mailJoes@ynmail.com 
关键字Foxpro,VFP,OLE 2.0,MS Graph 
目录  一.关于OLE 
        二.在Foxpro中编程操作MS Graph 

一.关于OLE 
   1) OLE服务器的概念:它应能使由他创建的对象成为OLE用户程序的可用对象。 
   2) 在Visual Foxpro中,对于Excel及Word之OLE对象可支持连接与嵌入,而 
对Microsoft Graph则只支持嵌入。 
    设现有一个OLETable表,希望在其字段中存入Word文档,则有: 

     SELECT OLETable 
     nFile=ADIR(aWordFile,"*.Doc")  &&aWordFile是一个二维数组 
     FOR I=1 to nFile 
         APPEND BLANK 
         REPLACE OLETable.name WITH aWordFile(I,1)  
               &&从aWrodFile(I,1)中获得当前Word文档名,这一句不重要 
         REPLACE OLETable.OLEtype WITH "MSWORD" 
               &&置OLE对象类型 
         APPEND GENERAL WordDoc FROM aWordFile(I,1) 
               &&数据:文件->库 
               &&如果文件扩展名不是默认值,还需在APPEND GENERAL 后加子 
               &&句 CLASS "Word.Docment.6" 
     END FOR  

   3)  Microsoft 常见软件可提供如下自动化对象: 
   ━━━━━━━━━━━━┯━━━━━━━━━━━━━ 
       Microsoft Word 6.0     │  Word.Basic (VBA) 
    ────────────┼─────────────  
      Miscosoft Excel       │  Excel.Application 
                             │  Excel.Sheet 
                             │  Excel.Chart 
   ────────────┼───────────── 
       Miscosoft Project      │  Project.Applition 
                              │  Project.Project 
   ────────────┼───────────── 
       MicroSoft Graph       │  Graph.Chart 
   ━━━━━━━━━━━━┷━━━━━━━━━━━━━ 
      你可以像这样编程
      OLEApp = Creat Object("Word.Basic")        &&创建Object 
        OLEApp.FileNewDefault                    &&创建新文件  
        OLEApp.Insert("我最亲爱的...")           &&向新文件中写串 
        OLEApp.FileSaveAs("一封情书.Doc")        &&存盘 
        OLEApp.AppClose                          &&退出 
       && 以上四句调用了Word.Basic的方法来对Word文档进行操作  

二.在Foxpro中编程操作MS Graph     
     要在程序中操作 MS Graph,实际是向Graph对象传递一个格式复杂的控制 
串。如要显示如下的图,则其控制串如右:      
   ↑                                  DataString=     
   │                        40        ""+TAB+"微机"+TAB+"打印机"+; 
   │           35┌┐       "电源"+CRLF+; 
   │  33    30    ┌┤│      "一季度"+TAb+"11"+TAB+"22"+; 
   │ 22┌┐   ┌┐ 20│││         TAB+"33"+CRLF+; 
   │11┌┤│  15││ ┌┤││       "二季度"+TAb+"10"+TAB+"15"+; 
   │┌┤││ 10┌┤│ ││││         TAB+"30"+CRLF+; 
   │││││ ┌┤││ ││││       "三季度"+TAb+"20"+TAB+"35"+; 
   │││││ ││││ ││││         TAB+"40"+CRLF 
   └┴┴┴┴─┴┴┴┴─┴┴┴┴─→    && TAB=CHR(9) 
         微机      打印机     电源           && CRLF=chr(13)+chr(10)  

     诸君可分析其规律,这里不再展开[注]。 
     实际使用中,可在表单(Form)中创建一个OLE绑定型控件(OLEBoundControl),   
在程序中执行: 
     "THISForm.OLEBoundControl1.ControlSourse='Gen' &&字段名", 
或在设计期填入属性表中,该控件初始化后,OLEBoundControl1就具有了MS Graph 
的各项属性,此时可对如下属性编程: 
      OLEBoundControl1.HasLegend=.T.|.F.      &&有无图例 
      OLEBoundControl1.AutoFormat(GraphType,1) 
          && GraphType=-4099   --横向条形图 
          && GraphType=-4100   --纵向条形图 
          && GraphType=-4102   --饼图 
      OLEBoundControl1.HasTitle =.T.|.F.      &&有无标题 
      OLEBoundControl1.ChartTitle.Caption=Astring &&标题内容 

      若需得到更多的可控属性及其它请: 
      1)找到一张内容完整的 Office 97中文专业版CD; 
      2)进入valuePack\Morehelp目录 
      3)打开Vbagrp8.hlp,大部分的VBA方法及属性在OLEBoundControl中可 
         同名同意调用。 
      由于VFP3.0中使用的是Graph5,你也可以找到对应的帮助文件作参考。 

----- [注]欢迎同我联系! E-mailjoes@ynmail.com ------- 





     
1
表情
所有内容均为会员自愿发表,并不代表本站立场.
论坛帮助 会员认证删帖申请 联系我们