我是想要得到双击pagecontrol的事件,让当前的页面关闭,比如像MYIE和傲游(maxthon)浏览器的功能一样.请问高手能做到吗???期待你的回复!!
非常感谢!!Andy peng

解决方案 »

  1.   

    procedure TfrmFcp.FormCreate(Sender: TObject);
    begin
      Application.OnMessage:=AppMessage;
    end;procedure TfrmFcp.AppMessage(var Msg: TMsg; var Handled: Boolean);
    begin
      if (Msg.message = WM_LBUTTONDBLCLK)and(Msg.hwnd=PageControlfcp.Handle) then//在pagecontrol上双击鼠标
      begin
        runFileClose(Currenteditor);//执行的操作
      end;
      Handled:=False;
    end;
      

  2.   

    关键是双击的这个事件产生的 WM_LBUTTONDBLCLK 这个消息.
    学习...
      

  3.   

    TO:senfore(来而不往非礼也!)兄弟能解释一下嘛?不太明白为什么这样可以啊。谢谢啦
      

  4.   

    其实DblClick从TControl类中产生,但是TPageControl类屏蔽了,所以不能触发双击事件!
    从TPageControl继承一个新类TMyPage来改写一下就可以了,你也可以将下面这个写成组件.
    ----------------------------------------------------------------unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure MyPageEvent(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  TMyPage = class(TPageControl)  public
        constructor Create(AOwner: TComponent);override;  published
        property OnDblClick;
        
      end;
      
    var
      Form1: TForm1;implementation{$R *.dfm}{ TMyPage }constructor TMyPage.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      ControlStyle := [csClickEvents, csDoubleClicks, csOpaque];
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      MyPage: TMyPage;
      MyTab: TTabSheet;
    begin
      MyPage := TMyPage.Create(Self);
      MyPage.Parent := Self;
      MyPage.Top := 20;
      MyPage.Left := 30;
      MyPage.OnDblClick := MyPageEvent;  MyTab := TTabSheet.Create(Self);
      MyTab.Caption := 'TabSheet1';
      MyTab.PageControl := MyPage;  MyTab := TTabSheet.Create(Self);
      MyTab.Caption := 'TabSheet2';
      MyTab.PageControl := MyPage;
    end;procedure TForm1.MyPageEvent(Sender: TObject);
    begin
      if (Sender is TMyPage) then
      begin
        ShowMessage((Sender as TMyPage).ActivePage.Caption);
        (Sender as TMyPage).ActivePage.Free;
      end;
    end;
    end.