在窗体中内嵌,不是在新窗口中独立打开

解决方案 »

  1.   

    先在form1上放一个scrollbox1,
    以下代码实现将Word 2000窗口放入窗体form1的scrollbox1里:use comobj,shellapi;//在formcreate事件中打开word并放入窗体
    procedure TForm1.FormCreate(Sender: TObject);
    var
      h:thandle;
      rec:trect;
      Word2000: OLEVariant;
    begin
      //连接或者打开word
      try
         Word2000 := GetActiveOleObject('Word.Application');
      except
         try
            Word2000 := CreateOleObject('Word.Application');
         except
            Exit;
        end;
      end;
      Word2000.Visible := True;  //放入scrollbox1中
      sleep(300);
      h:=findwindow(nil,'Microsoft Word'); //注意这里的标题
      GetWindowRect(h,rec);
      SetWindowPos(h,HWND_TOP,0,-5-(GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYBORDER)),ScrollBox1.Width,ScrollBox1.Height,SWP_NOSIZE or SWP_SHOWWINDOW);
      windows.SetParent(h,ScrollBox1.Handle);
      ScrollBox1.HorzScrollBar.Range :=rec.Right -rec.Left ;
      ScrollBox1.VertScrollBar.Range :=rec.Bottom -rec.Top ;
    end;
      

  2.   

    放入panel或者其他控件的原理一样。
    good luck!