孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

unit utmyword;

(*

by 闫磊 编写 2004.09.06 email:landgis@126.com yanleigis@21cn.com

*)

interface

uses word2000, activex, variants, dialogs, sysutils;

type

    tmyword = class(tobject)

    private

    fword: twordapplication;  //word对象


    fdoc: tworddocument;      //文档对象

 

    procedure connectword();

    public

    //换行

    procedure addreturn();

    //设置字体

    procedure setfont(fontname: string; fontsize: integer;

    fontbold: boolean = false; fontunderline: boolean = false);

    //插入表格

    function addtable(col, row: integer): table;

    //设置背景色

    procedure settableback(backcolor: toleenum);

    //鼠标下移

    procedure movedown(num: integer = 1);

    //选择下移

    procedure selectdown(num: integer = 1);

    //鼠标上移

    procedure moveup();

    //鼠标右移

    procedure moveright(num: integer = 1);

    //选择右移

    procedure selectright(num: integer = 1);

    //写字

    procedure writetext(text: string);

    //按样式插入一行记录

    //如addline "备注","正文"

    //addline 'kk',"标题 1"

    procedure addline(s: string; pstyle: olevariant);

    procedure alignline(align: toleenum);

    //插入分页符

    procedure insertpage();

    //插入插入页码

    procedure insertpagenum();

    //插入日期

    procedure insertdate();

    //设置表格一列宽度

    procedure settable(ptable: table; columnidx: integer; width: integer);

    //设置表格一列高度

    procedure settableheight(ptable: table; rowidx: integer; height:

    integer);

    //插入目录

    procedure insertcontents();

    //创立书签

    procedure createbookmark(bookmarkname: string);

    //移动到标签

    procedure gotobookmark(bookmarkname: string);

    //粘贴

    procedure paste();

    //替换

    procedure replace(source, target: string);

    //保存

    procedure save(filename: string);

    //插入图片

    procedure addpicture(filename: string);

    //移到最后

    procedure moveend();

    //合并

    procedure cellsmerge();

    constructor create;

    destructor destroy; override;

end;

 

//function myword: tmyword;

implementation

//var

//    fmyword: tmyword;

{function myword: tmyword;

begin

    if fmyword = nil then

    begin

  fmyword := tmyword.create;

    end;

 

    result := fmyword;

end;

 

}

constructor tmyword.create();

begin

    inherited create;

    connectword();

    //

end;

 

procedure tmyword.connectword();

var

b: boolean;

begin

    b := false;

    if (fword = nil) then

    b := true

    else

    begin

  try

  fdoc.activate;

  except

      b := true;

  end;

 

    end;

 

    if not b then exit;

    fword := twordapplication.create(nil); //word对象

    fdoc := tworddocument.create(nil);  //文档对象

    fword.connect;

    fdoc.activate;

    fword.visible := true;

end;

 

destructor tmyword.destroy;

begin

    //

    //fdoc.saveas('c:\1.doc');

    fdoc.free;

    fword.disconnect;

    //退出一定退出word,by yl 2005.2.2

    //fword.quit;

    //fword.free;

    inherited destroy;

end;

 

procedure tmyword.addreturn();

begin

    try

    fword.selection.typeparagraph;

    except

  addreturn();

    end;

 

end;

 

procedure tmyword.setfont(fontname: string; fontsize: integer; fontbold:

boolean

= false; fontunderline: boolean = false);

begin

    try

    //connectword();

    fword.selection.font.name := fontname;

    fword.selection.font.size := fontsize;

    if fontbold then

    fword.selection.font.bold := wdtoggle;

    if fontunderline then

    fword.selection.font.underline := wdunderlinesingle;

    except

  setfont(fontname, fontsize, fontbold, fontunderline);

    end;

 

end;

 

//插入表格

function tmyword.addtable(col, row: integer): table;

var

defaulttable: olevariant;

begin

    try

    //connectword();

    defaulttable := 1;

    result := fdoc.tables.add(fword.selection.range, row, col, defaulttable,

    emptyparam);

    except

  showmessage(format('列%d,行%d', [col, row]));

  addtable(col, row);

    end;

 

end;

 

//设置背景色

procedure tmyword.settableback(backcolor: toleenum);

begin

    try

    //connectword();

    fword.selection.cells.shading.backgroundpatterncolor := backcolor;

    except

  settableback(backcolor);

    end;

 

end;

 

//选择下移

procedure tmyword.selectdown(num: integer = 1);

var

unit_: olevariant;

count: olevariant;

extend: olevariant;

begin

    try

    //connectword();

    count := num;

    unit_ := wdline;

    extend := wdextend;

    fword.selection.movedown(unit_, count, extend);

    except

  movedown();

    end;

 

end;

 

//鼠标下移

procedure tmyword.movedown(num: integer = 1);

var

unit_: olevariant;

count: olevariant;

extend: olevariant;

begin

    try

    //connectword();

    count := num;

    unit_ := wdline;

    fword.selection.movedown(unit_, count, extend);

    except

  movedown();

    end;

 

end;

 

//鼠标上移

procedure tmyword.moveup();

var

unit_: olevariant;

count: olevariant;

extend: olevariant;

begin

    unit_ := wdline;

    count := 1;

    fword.selection.moveup(unit_, count, extend);

end;

 

//选择右移

procedure tmyword.selectright(num: integer = 1);

var

unit_: olevariant;

count: olevariant;

extend: olevariant;

begin

    try

    //connectword();

    unit_ := wdcharacter;

    count := num;

    extend := wdextend;

    fword.selection.moveright(unit_, count, extend);

    except

  moveright();

    end;

 

end;

 

//鼠标右移

procedure tmyword.moveright(num: integer = 1);

var

unit_: olevariant;

count: olevariant;

extend: olevariant;

begin

    try

    //connectword();

    unit_ := wdcell;

    count := num;

    fword.selection.moveright(unit_, count, extend);

    except

  moveright();

    end;

 

end;

 

//写字

procedure tmyword.writetext(text: string);

begin

    try

    //connectword();

    fword.selection.typetext(text);

    except      //防止呼叫失败

  writetext(text);

    end;

 

end;

 

//按样式插入一行记录

//如addline "备注","正文"

//addline 'kk',"标题 1"

procedure tmyword.addline(s: string; pstyle: olevariant);

procedure setstyle(pstyle: olevariant);

var

outstyle: style;

v: olevariant;

begin

    outstyle := fword.activedocument.styles.item(pstyle);

    v := outstyle;

    fword.selection.set_style(v);

end;

 

begin

    writetext(s);     //加入一行

    try

    setstyle(pstyle);

    except

  setstyle(pstyle);

    end;

 

end;

 

procedure tmyword.alignline(align: toleenum);

begin

    fword.selection.paragraphformat.alignment := align;

end;

 

//插入分页符

procedure tmyword.insertpage();

var

_type: olevariant;

begin

    _type := 7;

    fword.selection.insertbreak(_type);

end;

 

//插入日期

procedure tmyword.insertdate();

var

datetimeformat: olevariant;

insertasfield: olevariant;

insertasfullwidth: olevariant;

datelanguage: olevariant;

calendartype: olevariant;

begin

    try

    insertasfield := false;

    insertasfullwidth := false;

    datetimeformat := 'yyyy''年''m''月''d''日''';

    datelanguage := wdsimplifiedchinese;

    calendartype := wdcalendarwestern;

    fword.selection.insertdatetime(datetimeformat, insertasfield,

    insertasfullwidth, datelanguage, calendartype);

    except

  insertdate();

    end;

 

end;

 

//插入页码

procedure tmyword.insertpagenum();

var

psection: section;

pagenumberalignment: olevariant;

firstpage: olevariant;

begin

    psection := fword.selection.sections.item(1);

    pagenumberalignment := 1;     //中间

    firstpage := true;

    psection.footers.item(wdheaderfooterprimary).pagenumbers.add(pagenumberalignment, firstpage);

end;

 

//设置表格一列高度

procedure tmyword.settableheight(ptable: table; rowidx: integer; height:

integer);

var

prow: row;

begin

    prow := ptable.rows.item(rowidx);

    prow.setheight(height, wdadjustnone);

end;

 

//设置表格一列宽度

procedure tmyword.settable(ptable: table; columnidx: integer; width:

integer);

begin

    ptable.columns.item(columnidx).setwidth(width, wdadjustnone);

end;

 

//插入目录

procedure tmyword.insertcontents();

var

prange: range;

useheadingstyles: olevariant;

upperheadinglevel: olevariant;

lowerheadinglevel: olevariant;

usefields: olevariant;

tableid: olevariant;

rightalignpagenumbers: olevariant;

includepagenumbers: olevariant;

addedstyles: olevariant; usehyperlinks: olevariant;

hidepagenumbersinweb: olevariant;

begin

    with fword.activedocument do

    begin

  prange := fword.selection.range;

  rightalignpagenumbers := true;

  useheadingstyles := true;

  upperheadinglevel := 1;

  lowerheadinglevel := 3;

  includepagenumbers := true;

  usehyperlinks := true;

  hidepagenumbersinweb := true;

  tablesofcontents.add(prange, useheadingstyles,

  upperheadinglevel,

  lowerheadinglevel,

  usefields,

  tableid,

  rightalignpagenumbers,

  includepagenumbers,

  addedstyles, usehyperlinks,

  hidepagenumbersinweb);

  tablesofcontents.item(1).tableader := wdtableaderdots;

  tablesofcontents.format := wdindexindent;

    end;

 

end;

 

//创立书签

procedure tmyword.createbookmark(bookmarkname: string);

var

prange: olevariant;

begin

    prange := fword.selection.range;

    with fword.activedocument.bookmarks do

    begin

  add(bookmarkname, prange);

  defaultsorting := wdsortbyname;

  showhidden := false;

    end;

 

end;

 

//移动到标签

procedure tmyword.gotobookmark(bookmarkname: string);

var

what: olevariant;

which: olevariant;

count: olevariant;

name: olevariant;

begin

    what := wdgotobookmark;

    name := 'begin';

    fword.selection.goto_(what,

    which,

    count,

    name)

end;

 

//粘贴

procedure tmyword.paste();

begin

    fword.selection.paste;

end;

 

//替换

procedure tmyword.replace(source, target: string);

var

findtext: olevariant;

pwrap: olevariant;

replacewith: olevariant;

replace: olevariant;

begin

    fword.selection.find.clearformatting;

    fword.selection.find.replacement.clearformatting;

    findtext := source;

    pwrap := wdfindcontinue;

    replacewith := target;

    replace := wdreplaceall;

    with fword.selection.find do

    begin

  {text := source;

  replacement.text := target;

  forward := true;

  wrap := wdfindcontinue;

  format := false;

  matchcase := false;

  matchwholeword := false;

  matchbyte := true;

  matchwildcards := false;

  matchsoundslike := false;

  matchallwordforms := false;

  }

  execute(findtext, emptyparam, emptyparam, emptyparam, emptyparam,

  emptyparam,

  emptyparam, pwrap, emptyparam, replacewith, replace, emptyparam,

  emptyparam, emptyparam, emptyparam);

    end;

 

end;

 

//保存

procedure tmyword.save(filename: string);

var

ofilename: olevariant;

begin

    ofilename := filename;

    fdoc.saveas(ofilename);

end;

 

//插入图片

procedure tmyword.addpicture(filename: string);

var

linktofile, savewithdocument, range: olevariant;

//index: olevariant;

begin

    //index := 0;

    //range := fdoc.bookmarks.item(index).range;

    //range:=fdoc.goto_;

    range := self.fword.selection.range;

    linktofile := false;

    savewithdocument := true;

    fword.selection.inlineshapes.addpicture(filename, linktofile,

    savewithdocument, range)

end;

 

//移到最后

procedure tmyword.moveend();

var

unit_: olevariant;

extend: olevariant;

begin

    unit_ := wdstory;

    extend := wdmove;

    fword.selection.endkey(unit_, extend);

end;

 

//合并

procedure tmyword.cellsmerge();

begin

    fword.selection.cells.merge;

end;

 

initialization

finalization

{ if fmyword <> nil then

fmyword.free;

}

end.

posted on 2011-01-10 17:01  孤独的猫  阅读(985)  评论(0)    收藏  举报