设计思路大概是这样的:这个界面里有一个combobox控件,用来显示要查看的文件名称,一个按钮,用来添加文件,还有一个控件(我不知道用什么控件)用来放word文档。(是不是还需要一个保存文档的控件?)首先在combobox里填好文档的名称,然后当我点击那个按钮时会弹出一个标准界面让我向控件里添加已经准备好的word文档,确定以后word文档就会进入那个控件里(当然也就会自动输入到数据库里)。当我运行的时候点击combobox里的那个文件名字,在下面的相应控件里就会显示出word文档的内容。
    以上就是我的问题,不知道是否叙述清楚,请各位高人指点迷津。因小弟狂菜,所以请大侠们说的尽量详细一些,最好有源代码。小弟先拜谢了!!

解决方案 »

  1.   

    用OleContainer可以实现,可以参考Borland\Delphi6\Demos\ActiveX\OleCtnrs引用例程:
    procedure TFormSelect.Button3Click(Sender: TObject);
    var
    Temp,Temp0,MySelect:String;
    i:integer;
    FileName,FileType:olevariant;
    tempPlate,newtemplate,itemindex,DocumentType, Visible:olevariant;
    begin
    i:=ComBobox2.ItemIndex;
    if i<0 then  begin
    Showmessage('您必须选择一个项目!');
    EXIT;       end;
    MySelect:=ComBobox2.Items[i];  //取出选中条目的汉语名称
    i:=ChsString.IndexOf(MySelect);
    MySelect:=EngString[i];
    Temp0:=copy(MySelect,0,4);
    temp:='FL'+'='+QuotedStr(Temp0)+' and XZ='+Quotedstr('True');
    DataModule1.JSTKTable.Filter:=temp;
    DataModule1.JSTKTable.Filtered:=True;
    //将其存入JSZK.DB的相应字段中
    DataModule1.JSTKTable.Disablecontrols;
    /////*********
     try
     wwTable2.Edit;
     WordApplication1.Connect;
     WordApplication1.Visible:=True;  //设置为可见
     FileName:=ExtractFilePath(Application.ExeName)+'MyContent.dot';
     itemindex:=1;
     tempPlate:=Filename;
     newtemplate:=false;
     DocumentType:=wdNewBlankDocument;
     Visible:=True;
     WordApplication1.Connect;
     WordApplication1.Visible:=true;
     WordApplication1.Documents.Add(TempPlate,newtemplate,documentType,Visible);
     WordDocument1.ConnectTo(WordApplication1.Documents.Item(itemindex));
     For i:=1 to DataModule1.JSTKTable.RecordCount do begin
    //设置题号的字体为宋体、黑色、四号字
     WordApplication1.Selection.Font.Color:=wdColorAutomatic;
     WordApplication1.Selection.Font.Name:= '宋体';
     WordApplication1.Selection.Font.Size:= 14;
    //人工形成题目编号
     WordApplication1.Selection.TypeText(inttostr(i)+'. ');
    if Length(MySelect)<=4 then begin
     //从数据库中读入一条记录
     wwDBRichEdit1.CopyRichEditFromBlob(DataModule1.JSTKTable.FieldByName('TM'));
    //设置wwDBRichEdit1为全选
     wwDBRichEdit1.SelStart:=0;
     wwDBRichEdit1.SelLength:=Length(wwDBRichEdit1.Text);
    //将编辑控件内容复制至剪贴板
     wwDBRichEdit1.CopytoClipBoard; end  //选择的是题目
    else  //选择的是答案
                                begin
     //从数据库中读入一条记录
     wwDBRichEdit1.CopyRichEditFromBlob(DataModule1.JSTKTable.FieldByName('DA'));
    //设置wwDBRichEdit1为全选
     wwDBRichEdit1.SelStart:=0;
     wwDBRichEdit1.SelLength:=Length(wwDBRichEdit1.Text);
    //将编辑控件内容复制至剪贴板
     wwDBRichEdit1.CopytoClipBoard; end;  //选择的是答案//粘入WORD中
     WordApplication1.Selection.Paste;
    //在WORD中插入一分段符
     WordApplication1.Selection.TypeParagraph;
    //数据库移至下一记录
     DataModule1.JSTKTable.Next;
                       end;
    //**********此处改为存入JSZK.DB中相应字段
    FileName:=ExtractFilePath(Application.ExeName)+'编辑完成后切回原程序.RTF';
    FileType:=wdFormatRTF;
    WordDocument1.SaveAs(FileName, FileType);
    ShowMessage('请切换至WORD中编辑文件,完成后**不要关闭WORD**,然后按OK键');
    WordDocument1.Save;
     WordDocument1.Close;
    wwDBRichEdit3.Lines.LoadFromFile('编辑完成后切回原程序.RTF');
    wwDBRichEdit3.CopyRichEditToBlob(wwTable2.FieldByName(MySelect));
    wwtable2.Post; finally
     //断开连接
     WordDocument1.Disconnect;
     WordApplication1.Disconnect;// WordApplication1.Quit;
     DataModule1.JSTKTable.Filter:='';
     DataModule1.JSTKTable.Filtered:=False;
     DataModule1.JSTKTable.Enablecontrols;
       end; //finally
    end;