`
sq1228
  • 浏览: 82022 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

delphi word技术融合

阅读更多

 

新一篇: delphi动态创建的TMSComm串口控件不起作用!

<script></script>

procedure TExprmResultDlg.PreviewExprmReport;
var
    Template, NewTemplate,DocumentType,OleVisible:oleVariant;
    strTitle_Prior,strText_Prior,strTitle_Last,strText_Last:String;
begin
    Try
        Wordapplication1.Connect;
    Except
        Application.MessageBox('您尚未安装 Word应用程序,请先安装Word2000,然后再运行本程序!',
                                '系统提示',mb_Ok +MB_ICONWARNING);
        Abort;
    End;

    Template := EmptyParam;  //表示不使用模板
    NewTemplate := False;  //表示新建新建文档的类型为文档

    Doc.ConnectTo(WordApplication1.Documents.Add(Template, NewTemplate,DocumentType,OleVisible));

    //关闭拼音查找和语法查找,以便提高程序运行的效率
    WordApplication1.Options.CheckSpellingAsYouType := False;
    WordApplication1.Options.CheckGrammarAsYouType := False;

    //添加页眉
    AddRepPageHeader(18,Edit_RepHeader.Text,alCenter);

    //添加页脚  页码设置
    AddRepPageFooder(1,alCenter);

    m_wordSesson:= WordApplication1.Selection;
    WordFont1.ConnectTo(m_wordSesson.Font);
    WordFont1.Name := '宋体';

    //输出报告信息
    AddParagraphTitle('模块信息');//添加段落标题

    strTitle_Prior:='厂站名称:';
    strText_Prior:=Edit_FactoryName.Text;

    AddParagraphContentSingle(strTitle_Prior,strText_Prior);

    strTitle_Prior:='测试人:';
    strText_Prior:=Edit_TestPeoson.Text;
    strTitle_Last:='测试时间:';
    strText_Last:=FormatDateTime('yyyy"年"mm"月"dd"日"',now);

    AddParagraphContentDouble(strTitle_Prior,strText_Prior,strTitle_Last,strText_Last);

    //输出报告内容
    AddParagraphTitle('试验结果');//添加段落标题
    WriteReportInformation;


    AddParagraphTitle('试验结论');//添加段落标题
    m_wordSesson.TypeParagraph;
    m_wordSesson.TypeParagraph;
    m_wordSesson.TypeParagraph;

    Wordapplication1.Disconnect;

end;

 


procedure TExprmResultDlg.AddRepPageHeader(const nFontSize:integer;const strText:String;Const PageFoodAlign:TPageFoodAlign);//添加页眉
var
    alTextAlign:OleVariant;
begin
    Case PageFoodAlign of
        alLeft:alTextAlign:=wdAlignParagraphLeft;
        alCenter:alTextAlign:=wdAlignParagraphCenter;
        alRight:alTextAlign:=wdAlignParagraphRight;
        alJustify:alTextAlign:=wdAlignParagraphJustify;
    end;


    WordApplication1.ActiveWindow.ActivePane.View.SeekView :=wdSeekCurrentPageHeader;
    WordApplication1.Selection.ParagraphFormat.Alignment := alTextAlign;

    WordApplication1.Selection.Font.Size:=18;
    WordApplication1.Selection.Font.Color:=ClBlack;
    WordApplication1.Selection.InsertAfter(strText);
   
end;

procedure TExprmResultDlg.AddRepPageFooder(const nFistPageNum:integer;Const PageFoodAlign:TPageFoodAlign);//添加页脚  页码设置
var
    mmm,nPageNum,aaa,alTextAlign:OleVariant;
begin
    Case PageFoodAlign of
        alLeft:alTextAlign:=wdAlignParagraphLeft;
        alCenter:alTextAlign:=wdAlignParagraphCenter;
        alRight:alTextAlign:=wdAlignParagraphRight;
        alJustify:alTextAlign:=wdAlignParagraphJustify;
    end;

    mmm:=wdLine;
    nPageNum:=nFistPageNum;
    aaa:=wdFieldPage;
    WordApplication1.ActiveWindow.ActivePane.View.SeekView :=wdSeekCurrentPageFooter;
    WordApplication1.Selection.Move(mmm,nPageNum);
    WordApplication1.Selection.ParagraphFormat.Alignment := alTextAlign;

    WordApplication1.Selection.InsertAfter('第');
    mmm:=wdCharacter;
    WordApplication1.Selection.Move(mmm,nPageNum);
    WordApplication1.Selection.Fields.Add(WordApplication1.Selection.Range,aaa,mmm,nPageNum);

    aaa:=wdFieldNumPages;
    WordApplication1.Selection.InsertAfter('页/共');
    WordApplication1.Selection.Move(mmm,nPageNum);
    WordApplication1.Selection.Fields.Add(WordApplication1.Selection.Range,aaa,mmm,nPageNum);

    WordApplication1.Selection.InsertAfter('页');
    WordApplication1.ActiveWindow.ActivePane.View.SeekView := wdSeekMainDocument;
end;

 

procedure TExprmResultDlg.PastePicToWord(Const imageName:TImage);
var
    AFormat:word;
    AData :cardinal;
    APalette : hpalette;
begin
    imageName.Picture.SaveToClipboardFormat(AFormat,AData,APalette);
    Clipboard.SetAsHandle(AFormat,AData);
    doc.Sentences.Last.Paste;
end;


procedure TExprmResultDlg.AddParagraphTitle(const strTitle:String);//添加段落标题
begin
    //加回车键,形成段落:
    ParaFmt.SpaceBefore := 30;
    ParaFmt.SpaceAfter := 30;
    //m_wordSesson.TypeParagraph;
    WordFont1.Size:=14;
    WordFont1.Bold:=1;
    m_wordSesson.TypeText(strTitle + #13);

    m_tableNum:=m_tableNum + 1;

end;

procedure TExprmResultDlg.AddParagraphContentSingle(Const strTitle,strText:String);
var
    i:integer;
    TableBehavior,AutoFitbehavior:oleVariant;
begin
    TableBehavior:=FALSE;
    AutoFitbehavior:=FALSE;
    Doc.Tables.Add(WordApplication1.Selection.Range, 1 , 4, TableBehavior,AutoFitbehavior);//创建表格

    m_tableRow:=m_tableRow + 1;

    for i:=1 to 4 do
    begin
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Font.Size := 12;
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Font.Bold:=0;

        //去掉表格边框
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Borders.item(wdBorderLeft).LineStyle := wdLineStyleNone;
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Borders.item(wdBorderRight).LineStyle := wdLineStyleNone;
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Borders.item(wdBorderTop).LineStyle := wdLineStyleNone;
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Borders.item(wdBorderBottom).LineStyle := wdLineStyleNone;
    end;


    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,2).Merge(Doc.Tables.Item(m_tableNum).Cell(m_tableRow,3));
    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,2).Merge(Doc.Tables.Item(m_tableNum).Cell(m_tableRow,3));

    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,1).Range.ParagraphFormat.Alignment:=wdAlignParagraphRight;
    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,2).Range.ParagraphFormat.Alignment:=wdAlignParagraphLeft;


    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,1).Range.Text:=strTitle;
    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,2).Range.Text:=strText;


    WordApplication1.Selection.SetRange(100 * m_tableRow,100 * m_tableRow);//设定段落范围
end;


procedure TExprmResultDlg.AddParagraphContentDouble(Const strTitle_Prior,strText_Prior,strTitle_Last,strText_Last:String);
var
    i:integer;
    TableBehavior,AutoFitbehavior:oleVariant;
begin
    TableBehavior:=FALSE;
    AutoFitbehavior:=FALSE;
    Doc.Tables.Add(WordApplication1.Selection.Range, 1 , 4, TableBehavior,AutoFitbehavior);//创建表格
    m_tableRow:=m_tableRow + 1;

    for i:=1 to 4 do
    begin
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Font.Size := 12;
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Font.Bold:=0;

        //去掉表格边框
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Borders.item(wdBorderLeft).LineStyle := wdLineStyleNone;
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Borders.item(wdBorderRight).LineStyle := wdLineStyleNone;
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Borders.item(wdBorderTop).LineStyle := wdLineStyleNone;
        Doc.Tables.Item(m_tableNum).Cell(m_tableRow,i).Range.Borders.item(wdBorderBottom).LineStyle := wdLineStyleNone;       
    end;


    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,1).Range.ParagraphFormat.Alignment:=wdAlignParagraphRight;
    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,2).Range.ParagraphFormat.Alignment:=wdAlignParagraphLeft;

    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,3).Range.ParagraphFormat.Alignment:=wdAlignParagraphRight;
    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,4).Range.ParagraphFormat.Alignment:=wdAlignParagraphLeft;
                                                            
    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,1).Range.Text:=strTitle_Prior;
    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,2).Range.Text:=strText_Prior;
    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,3).Range.Text:=strTitle_Last;
    Doc.Tables.Item(m_tableNum).Cell(m_tableRow,4).Range.Text:=strText_Last;

    WordApplication1.Selection.SetRange(100 * m_tableRow,100 * m_tableRow);//设定段落范围
end;

分享到:
评论

相关推荐

    Delphi与Word之间的融合技术

    【Delphi与Word之间的融合技术】是指在Delphi开发环境中,通过不同的技术手段与Microsoft Word进行交互,以实现更高级的文档处理功能。这通常涉及到使用Microsoft Word的VBA(Visual Basic for Applications)宏和...

    Delphi漂亮字体控件包.7z

    这个名为"Delphi漂亮字体控件包.7z"的压缩文件提供了一种实现这一目标的方法,它包含了一些定制的字体控件,能够帮助开发者创建具有透明度、渐变色效果的Label,以及模拟Word中特殊字体的视觉效果,比如淡入淡出动画...

    DELPHI 5编程实例与技巧

    本书共分三部分、16章,主要介绍Delphi 5集成开发环境,对象Pascal语言、组件、通用编程技术、动态链接库、多线程、多媒体编程、数据库编程、网络编程和Windows API编程等。 目 录 前言 第一部分 Delphi编程基础 ...

    Delphi 5编程实例与技巧

    第三部分 Delphi高级编程技术 第10章 多媒体技术 185 10.1 多媒体 185 10.1.1 概述 185 10.1.2 多媒体应用领域 186 10.1.3 多媒体软件开发工具 187 10.2 图像格式的处理 188 10.2.1 位图 189 10.2.2 JPEG文件 191 ...

    基于Word的高校办公自动化系统个案研究.docx

    1. **与Word的完全兼容**:系统与Word的深度融合不仅方便了用户的文档编辑,还提供了修订历史追踪等功能,增强了文件流转过程中的透明度。 2. **灵活的安全管理机制**:通过不同的权限等级设置,确保信息的安全流通...

    C#讲义word版本

    C# 由 Anders Hejlsberg 和 Scott Wiltamuth 主导设计,Hejlsberg 曾经是 Turbo Pascal 和 Delphi 的主要开发者。 .NET Framework 是 C# 的核心支撑,它包含了通用语言运行时(Common Language Runtime, CLR)、...

    多媒体技术与应用

    - **编程语言**:如Visual Basic、Delphi,适合专业开发者进行更复杂的多媒体应用开发。 这些软件工具为不同需求和技能水平的用户提供了解决方案。 #### 四、多媒体元素及其应用 多媒体元素主要包括文字、声音、...

    delphi 开发经验技巧宝典源码

    第1章 开发环境 1 ...0295 如何将应用程序背景与桌面融合 191 0296 如何在屏幕最前面显示滚动字幕 192 0297 制作磁性窗体 193 0298 制作浮动窗口 194 0299 制作另类提示窗口 195 0300 将窗体...

    delphi 开发经验技巧宝典源码06

    第1章 开发环境 1 ...0295 如何将应用程序背景与桌面融合 191 0296 如何在屏幕最前面显示滚动字幕 192 0297 制作磁性窗体 193 0298 制作浮动窗口 194 0299 制作另类提示窗口 195 0300 将窗体...

    18870_actionband_popup_menu_component_see_d7_patc_Indy_Word for

    标题中的“18870_actionband_popup_menu_component_see_d7_patc_Indy_Word for”似乎是指一个针对 Indy 10 的更新补丁,可能是用于修复或增强 ActionBand 弹出菜单组件的功能。ActionBand 是 Delphi 中用于创建...

    信息系统开发平台教材

    5. **Delphi与Word/Excel数据转换**:掌握如何在Delphi中读取和写入Office文档,实现数据的无缝交互。 6. **Delphi与XML**:学习XML在Delphi中的应用,包括解析、生成XML文档,以及与Web服务的集成。 #### Delphi...

    2021-2022计算机二级等级考试试题及答案No.12774.docx

    - **正确答案**:多媒体技术是指将多种媒体(如图像、音频和视频)融合在一起的技术,核心在于数字技术的应用。 ### 33. 计算机网络技术基础 - **正确答案**:计算机网络技术的核心组成部分是计算机技术和通信技术...

    NTKO文档在线编辑控件4.0.1.2

    电子签名[数字签名]功能采用标准接口,可以和企业已有的PKI系统无缝融合。 2 增强对WPS文档和金山电子表支持。增加保存PPT为HTML,支持UTF8 URL等功能 V2.5.2.3版本新增了对WPS痕迹保留的支持,并支持金山电子表。...

    综合型实验指导(DEPHILE).doc

    7. **数据保存与文档生成**:实验要求生成Word文档来保存查询结果,这涉及到文件操作和数据格式转换,学生需要了解如何在Delphi中调用外部程序(如Microsoft Word)并传递数据。 8. **界面设计**:界面设计包括菜单...

    杭州蒲菲特自来水信息化建设产品介绍.docx

    - **先进技术运用**:采用DELPHI+SQLServer开发,保证多客户端稳定高效的同时收费。 - **灵活性设计**:系统设计大量采用模块化、插件式设计,增强了灵活性,满足用户的自定义需求。 - **多层次安全性**:具备优秀、...

    某房地产信息管理数据中心网络设计与解决方案.docx

    房地产信息管理系统是由怡海科技针对中国房地产业的现状研发的,融合了LotusNotes、Delphi、PowerBuilder、Visual C++、Interdev等多种编程语言,实现了办公自动化、数据库管理、网站建设及电话查询等功能。...

    2008年上半年软考信息系统项目管理师试题分析

    信息系统项目管理师是中国计算机技术与软件专业技术资格(水平)考试的一项高级认证,旨在考核考生对信息系统项目的全面管理能力。考试分为上午的综合知识试题和下午的案例分析试题两部分,涵盖了项目管理知识体系的...

    LaTeXEE-开源

    开源的LaTeXEE不仅是一个优秀的方程编辑器,更是一个学习和实践软件开发的宝贵资源,尤其是对于想了解OLE技术和Delphi编程的人来说。 总而言之,LaTeXEE作为一个开源的Windows LaTeX方程编辑器,凭借其强大的功能和...

    华报智能报表工具

    3、适用范围 因为ReportAll报表控件/插件是标准的ActiveX控件,所以所有支持ActiveX技术的前台开发工具(如:Delphi、C++Build、VC++、VB、、VC#、PowerBuild、JavaScript、VBScrip、Excel等)都可以使用ReportAll...

Global site tag (gtag.js) - Google Analytics