在oelcontainer中嵌入一个excel表,执行后让客户编辑
1:如何仅仅把改动保存到olecontainer中的ole对象中,而不是要另存为一个文件。
2:对于olecontainer中ole对象的激活和冻结应该如何处理,当我进行保存操作并对excel表中的一些数据进行检查的时候总是会出现需要点击两下按钮才能实现的问题。各位大虾不吝赐教啊
谢谢

解决方案 »

  1.   

    1:如何仅仅把改动保存到olecontainer中的ole对象中,而不是要另存为一个文件。
    OleContainer1.SaveAsStream(stream);
    2:对于olecontainer中ole对象的激活和冻结应该如何处理,当我进行保存操作并对excel表中的一些数据进行检查的时候总是会出现需要点击两下按钮才能实现的问题。
    在Show事件或保存事件中  OleContainer1.DoVerb(1);
    procedure TPropertyPage1.PropertyPageShow(Sender: TObject);
    var
    ms:Tmemorystream;
    SQL_TEMP:string;
    begin
    ADOConnection1.Close;
    ADOConnection1.ConnectionString:=SQL_LINK;
    ADOConnection1.Open;
    ms:=Tmemorystream.Create;
    SQL_TEMP:=' select * from test where test_id='+WORD_ID;
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear ;
    ADOQuery1.SQL.Add(SQL_TEMP);
    ADOQuery1.open();
    ADOQuery1.First;
    Tblobfield(ADOQuery1.FieldByName('test_text')).savetostream(ms);
    try
    ms.SaveToFile('c:\temp.doc');
    OleContainer1.CreateObjectFromFile('c:\temp.doc', true);
    except
    end;
    OleContainer1.DoVerb(1);
    end;
      

  2.   

    1:我没找到SaveAsStream这个方法,只有SaveToStream,用SaveToStream不行,还是要另存为一个Stream,再次运行的时候还是找不回改动。用SaveAsStream需要什么特别的use吗?