麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

用Word做Delphi報表輸出工具

2019-11-18 18:54:15
字體:
供稿:網(wǎng)友
筆者在實際應(yīng)用中發(fā)現(xiàn),報表的內(nèi)容一般很少變動,但其字體格式及版式是經(jīng)常變動的,而且有時用戶為了某種需要,不想修改數(shù)據(jù)庫的真實內(nèi)容而又要改變報表內(nèi)容。如果用ReportSmith可以解決前者問題,但對于后者則無能為力了,且其界面是英文的,不合用戶習(xí)慣。如果用3.0中的TQReport的報表部件,則兩者都不能實時解決,必須修改原代碼后重新編譯才能使用。而使用WordExcel則完全可以克服以上不足。具體實現(xiàn)如下(以Word實現(xiàn)為例):

  首先用Word編輯報表格式,并排好版,把將要輸出的數(shù)據(jù)項用表單域代替,并取名。這里我們暫時假設(shè)有表單域Item1及Item2(均為文本型),將這個文檔存為模板文件Example.dot,然后按如下步驟進行:

  1)運行Delphi3,在Form1里加入一個System部件集里的TDdeClientCov部件,取名為DdeExample,將其ConnectMode設(shè)為ddeManual(手動方式);將DdeService設(shè)為‘(WinWord)’;將Serviceapplication設(shè)為‘WinWord’。

  2)編寫一個自定義過程,以激活Word,如下:
  PRocedure Tform1.WordActive(Cmds: TStrings);
  var
     WordPath: String;
  begin
     if(not DdeExample.OpenLink) then {判斷是否巳動態(tài)鏈接}
     begin
       if(FindWindow('OpusApp', nil)=0) then
       begin
          WordPath := 'C:msofficewinword';
          if(WordPath=') then
             ShowMessage('中文Word未安裝或未設(shè)置路徑,請安裝設(shè)置Word中文 版。')
          else begin
             DdeExample.ServiceApplication := WordPath+'Winword.exe';
             if(DdeExample.OpenLink) then {如果巳動態(tài)鏈接執(zhí)行宏命令}            
                  DdeExample.ExecuteMacroLines(Cmds,False)
              else
                  ShowMessage('無法啟動Word中文版!');
               DdeExample.ServiceApplication := 'WinWord.exe';
           end;
      end
      else begin{如果巳動態(tài)鏈接執(zhí)行宏命令}
         DdeExample.ExecuteMacroLines(Cmds,False);
      end;
    end
    else
      DdeExample.ExecuteMacroLines(Cmds,false);
  end;

  在private聲明區(qū)里加入如下:
  procedure ActiveWord(Cmds: TStrings);

  3)在Form1中加入一個按鈕Button1,在其onclick事件里寫如下代碼:
  procedure TForm1.Button1Click(Sender: TObject);
  var
     Cmds:TStringList;{創(chuàng)建Cmds}
     TempItem1,TempItem2:String;
  begin
     cmds:=TStringList.Create;
     cmds.Clear;
     TempItem1:='數(shù)據(jù)項一';
     TempItem2:='數(shù)據(jù)項二';
     with Cmds do
     begin
        Clear;
        Add('[FileNew.Template ="Example.Dot″]');{打開模板文件Example.Dot}
        Add('[AppMaximize]');{文檔最大化}
        Add('[SetFormResult"Item1″,″'+TempItem1+'″]');{將數(shù)據(jù)TempItem1傳給表單域Item1}
        Add('[SetFormResult"Item2″,″'+TempItem2+'″]);{將數(shù)據(jù)TempItem2傳給表單域Item2}
     end;
     WordActive(DdeExample,Cmds);{調(diào)用自定義過程}
     Cmds.Free;{釋放Cmds}
  end;

  運行這個程序,單擊Button1,大家可以發(fā)現(xiàn)Word被啟動了,屏幕上出現(xiàn)了:數(shù)據(jù)項一;數(shù)據(jù)項二兩個數(shù)據(jù)項。最后,大家可以任意修改本報表的格式及數(shù)據(jù),因為這時這個報表與具體的應(yīng)用程序巳沒有關(guān)系了。

  本例中用的是中文Word6或中文Word7。由于Word97的宏命令巳變?yōu)閂isual Basic語句,如大家想用Word97實現(xiàn),請將其宏命令改變?yōu)橄鄳?yīng)的代碼。

  這是個簡單的示例,大家可以利用Word的宏錄制功能,錄取更多的宏(如自動生成表格、填充文字、變動字體等宏命令),并與數(shù)據(jù)庫的各種表聯(lián)系起來,依次加入Cmds中即可實現(xiàn)您所要求的更復(fù)雜的功能。


上一篇:在DELPHI程序中使用ADO對象存取ODBC數(shù)據(jù)庫

下一篇:Delphi6的新特性[翻譯]

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 免费看搡女人无遮挡的视频 | 涩涩屋av | 久草在线播放视频 | 久久久久久麻豆 | 久久久久国产成人精品亚洲午夜 | 日本特级a一片免费观看 | 免费看成年人视频在线 | 人成免费a级毛片 | 中文日韩在线视频 | 中文字幕免费一区 | 亚洲一区二区三区视频 | 久久亚洲精品国产 | 亚洲第一色片 | 毛片在线免费播放 | 国产成人高清在线观看 | 久久草在线视频国产 | 欧美人与禽性xxxxx杂性 | 国产欧美一区二区三区免费看 | 日本一区二区在线 | 国产一级一片免费播放 | 成熟女人特级毛片www免费 | 97porn| 国产成人综合在线观看 | 天堂在线资源av | 一本到免费视频 | 欧美一级黄色免费看 | 99seav| 一区在线视频观看 | 最近日本电影hd免费观看 | 91九色视频在线播放 | 精品久久久久久久久久久久 | 久久福利在线 | 成人国产免费观看 | 本色视频aaaaaa一级网站 | 国产一国产一级毛片视频 | 欧美激情猛片xxxⅹ大3 | 国产色片在线观看 | 日本在线不卡免费 | 日本在线不卡一区二区三区 | 亚州精品国产 | 美国黄色毛片女人性生活片 |