Delphi + Word = 数据库 + 公文处理

delphi擅长作数据库类的mis开发,但对于oa就有点力不从心了。不过随着microsoft的com技术逐渐成熟,如今普通windows应用已经能够和office 97无缝结合了,尤为是在delphi 5中提供了一组servers组件,更是简化了程序开发。  最近接触了一个用户的案例,用delphi控制word作一个合同管理程序。办公人员先根据业务须要,写好合同的文字,但在用户名称、产品名称等变化的位置填写指定的标记字符串,而后经过delphi把数据库中的实际数据替换掉word中的文字,最后让word打印出合同。  delphi自带了一个简单的word例题,但功能太简单。经过查找vba的说明,再对照delphi的vcl,编写了以下代码,实现了基本的公文管理功能。  启动word时用以下代码:  begin try  wordapplication.connect;  except  messagedlg('word may not be installed', mterror, [mbok], 0);  abort;  end;  wordapplication.visible := true;  wordapplication.caption := 'delphi automation';  end;  关闭word用以下代码。若是想保存doc文件,请修改savechanges变量的内容:  var  savechanges, originalformat, routedocument: olevariant;  begin  savechanges := wddonotsavechanges;  originalformat := unassigned;  routedocument := unassigned;  try  wordapplication.quit(savechanges, originalformat, routedocument);  wordapplication.disconnect;  except  on e: exception do  begin  showmessage(e.message);  wordapplication.disconnect;  end;  end;  end;  让word打开一个指定的文件,须要先放置opendialog,而后调用wordapplication.documents.open:  var  itemindex :olevariant;  filename, confirmconversions, readonly, addtorecentfiles,  passworddocument, passwordtemplate, revert,  writepassworddocument, writepasswordtemplate, format: olevariant;  begin  if not dlgopen.execute then  exit;  {open document}  filename := dlgopen.filename;  confirmconversions := false;  readonly := false;  addtorecentfiles := false;  passworddocument := '';  passwordtemplate := '';  revert := true;  writepassworddocument := '';  writepasswordtemplate := '';  format := wdopenformatdocument;  wordapplication.documents.open( filename, confirmconversions,  readonly, addtorecentfiles, passworddocument, passwordtemplate,  revert, writepassworddocument, writepasswordtemplate, format );  {assign worddocument component}  itemindex := 1;  worddocument.connectto(wordapplication.documents.item(itemindex));  {turn spell checking of because it takes a long time if enabled and slows down winword}  wordapplication.options.checkspellingasyoutype := false;  wordapplication.options.checkgrammarasyoutype := false;  end;  让word替换标记字符串要使用worddocument.range.find.execute,这里用delphi替换了< #name> :  var  findtext, matchcase, matchwholeword, matchwildcards, matchsoundslike,  matchallwordforms, forward, wrap, format, replacewith, replace: olevariant;  begin  findtext := '< #name> ';  matchcase := false;  matchwholeword := true;  matchwildcards := false;  matchsoundslike := false;  matchallwordforms := false;  forward := true;  wrap := wdfindcontinue;  format := false;  replacewith := 'delphi';  replace := true;  worddocument.range.find.execute( findtext, matchcase, matchwholeword,  matchwildcards, matchsoundslike, matchallwordforms, forward,  wrap, format, replacewith, replace );  end;  上面这4段代码完成了公文管理的基本功能,再把它和数据库结合起来,就能够开发一个与lotus notes相似的产品了。 
相关文章
相关标签/搜索