在网上看见一段代码,可以打开并显示excel,如下
  EApp:=CreateOleObject('Excel.Application');
  Windows.SetParent(EApp.HWND,ScrollBox1.Handle);
  EApp.Workbooks.Open('D:\s.xls');
  EApp.Visible:=true;原来是显示在panel上,但是excel显示不全,又不能调位置,我就换成了 scrollbox
这样依旧显示不全,而且看不到滚动条,我设置autoScroll := false也不可以
这个问题该怎样解决。。

解决方案 »

  1.   

    还是放到 Panel 里面然后把 Panel 放到  ScrollBox 里面然后你的 Panel 的大小和  Excel 的窗体大小一样 ,就可以了.
      

  2.   

    procedure TForm1.btn1Click(Sender: TObject);
    var
      Eapp : OleVariant;
      rect : TRect;
    begin
      pnl1.Parent := ScrollBox1;
      pnl1.Width := 2000;           //先放大
      pnl1.Height := 2000;
      EApp:=CreateOleObject('Excel.Application');
      Windows.SetParent(EApp.HWND,pnl1.Handle);
      ShowWindow(EApp.Hwnd,SW_SHOWMAXIMIZED);   //把Excel最大化
      GetWindowRect( EApp.Hwnd , rect);         //得到Excel的长宽
      EApp.Workbooks.Open('D:\s.xls');
      EApp.Visible:=true;
      pnl1.Width := rect.Right - rect.Left ;    //设置Panel 刚好套住Excel
      pnl1.Height :=rect.Bottom - rect.Top ;
    end;大概就是这样的, 代码可能有错. 只给个思路
      

  3.   

    参考各位的方法,现在可以了,有滚动条
    但是当打开excel时,delphi 所有的控件都不能动了,按钮不能按,滚动条不能滚
      

  4.   

    如果你是按2楼的代码去做,是不会令“delphi 所有的控件都不能动”,估计是你有什么地方设置Enabled为false了;
      

  5.   


    没有设置enabled的地方,
    重新做了下,还是这样,不知是不是打开了excel的原因
      

  6.   

    不关打开了excel的事!因无法看到你如何弄,很难这样凭空猜测原因。
      

  7.   

    如果你乐意让我来分析的话,请弄个例子发来 [email protected]