用TOleContainer是可行的,我在很久以前用TOleContainer将WORD嵌入到
自己的程序中,跟在实际中使用WORD没什么两样,只是那个程序要找一找才
行如果你需要,可以给你发过去,留下E-mail吧!
其实我不推荐使用上述方法的,为什么不通过程序直接打开WORD呢,那样似
乎更合理一些。我有一个EXCEL的例子,提供如下(WORD也差不多):
unit Main;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, DBGrids, Db, DBTables;type
  TForm1 = class(TForm)
    Button1: TButton;
    Query1: TQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    XLApp:Variant;
    procedure InsertData;
    procedure ChangeColumns;
    procedure HandleRange;
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses Comobj;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
begin
 XLApp:=CreateOleObject('Excel.Application');
 XLApp.visible:=true;
 XLApp.workbooks.add(emptyparam);
 XLApp.Workbooks[1].worksheets[1].name:='Data';
 InsertData;
// HandleRange;
// ChangeColumns;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
 if not VarIsEmpty(XLApp) then
 begin
  XLApp.DisplayAlerts:=false;
  XLApp.quit;
 end;
end;procedure TForm1.InsertData;
var
 i:Integer;
 sheet:variant;
begin
 sheet:=xlApp.Workbooks[1].worksheets['Data'];
 query1.first;
 for i:=1 to query1.RecordCount do
 begin
  sheet.cells[i,1]:=query1.fieldbyname('档案号').asstring;
  sheet.cells[i,2]:=query1.fieldbyname('姓名').asstring;
  sheet.cells[i,3]:=query1.fieldbyname('身份证号').asstring;
  query1.next;
 end;
 edit1.text:=inttostr(query1.Recordcount);
// sheet.cells[i,1]:='=Sum(A1:A10)';
end;procedure TForm1.HandleRange;
var
 Range:variant;
begin
 Range:=XLApp.Workbooks[1].worksheets['Data'].range['C1:F25']; Range.Formula:='=RAND()';
 Range.Columns.Interior.ColorIndex:=3;
// Range.Borders.LineStyle:=xlContinuous;
end;procedure TForm1.ChangeColumns;
var
 ColumnRange:variant;
begin
 ColumnRange:=XLApp.Workbooks[1].worksheets['Data'].Columns;
 ColumnRange.Columns[1].ColumnWidth:=5;
 ColumnRange.Columns.item[1].font.bold:=true;
 ColumnRange.Columns[1].Font.color:=clBlue;
end;end.

解决方案 »

  1.   

    你也可以用server页上的控件,操作word很好用
      

  2.   

    willzjy(毛毛雨) 我的Email: [email protected] 我要Word的,谢谢. word现在可以打开,但是
    没有file菜单?? 还有,save怎么作??to:bigfox 我用server上的控件打开的word都是在后台的, 这里需要嵌入到程序中.和delphi自带的例子是不同的! 还有什么办法??
      

  3.   

    willzjy(毛毛雨)你的例子好像也新开个word的进程吧,tobato(tobato)说的是把WORD嵌套在应用程序里面,我就觉得只有TOleContainer可以实现。
      

  4.   

    在Form上放一个TMainMenu,设定AutoMerge为True,试试