d7用webbrowser做的浏览器,为什么不能进行复制操作?该如何实现?谢谢!!

解决方案 »

  1.   

    因为webbrowser是ole控件
    在主单元的最后加入如下代码
    initialization
      OleInitialize(nil);finalization
      OleUninitialize
      

  2.   

    http://blog.csdn.net/TechnoFantasy/archive/2005/06/28/405475.aspx
      

  3.   

    =================谢谢楼上的几位朋友。此问题已经解决。但还有个新问题,webbrowser所显示的网页怎么无法响应回车键。如:在一个form中输入信后点回车无法提交; 焦点在某按钮上点回车也无法执行,请问这是什么问题。再次感谢。
      

  4.   

    默认的情况下Delphi的TwebBrowser控件是不支持Enter的,这使一些多行文本框变得无法录入,解决的办法如下:unit Unit1;interfaceuses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, OleCtrls, SHDocVw_TLB, ActiveX, StdCtrls;type
    TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    Button2: TButton;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    FOleInPlaceActiveObject: IOleInPlaceActiveObject;
    procedure MsgHandler(var Msg: TMsg; var Handled: Boolean);
    public
    { Public declarations }
    end;var
    Form1: TForm1;
    implementation{$R *.dfm}procedure TForm1.FormDestroy(Sender: TObject);
    begin
    FOleInPlaceActiveObject := nil;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    Application.OnMessage := MsgHandler;
    end;procedure TForm1.MsgHandler(var Msg: TMsg; var Handled: Boolean);
    const
    DialogKeys: set of Byte = [VK_LEFT, VK_RIGHT, VK_BACK, VK_UP, VK_DOWN,
    $30..$39, $41..42, $44..$55, $57, $59..$5A];
    var
    iOIPAO: IOleInPlaceActiveObject;
    Dispatch: IDispatch;
    begin
    { exit if we don‘t get back a webbrowser object }
    if (WebBrowser1 = nil) then
    begin
    Handled := System.False;
    Exit;
    end;Handled := (IsDialogMessage(WebBrowser1.Handle, Msg) = System.True);if (Handled) and (not WebBrowser1.Busy) then
    begin
    if FOleInPlaceActiveObject = nil then
    begin
    Dispatch := WebBrowser1.Application;
    if Dispatch <> nil then
    begin
    Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
    if iOIPAO <> nil then
    FOleInPlaceActiveObject := iOIPAO;
    end;
    end;if FOleInPlaceActiveObject <> nil then
    if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
    (Msg.wParam in DialogKeys) then
    // nothing - do not pass on the DialogKeys
    else
    FOleInPlaceActiveObject.TranslateAccelerator(Msg);
    end;
    end;initialization
    OleInitialize(nil);finalization
    OleUninitialize;