做一个控件,继承于 tpanel,
unit myPanel;interfaceuses
  SysUtils, Classes, Controls, ExtCtrls,dialogs;type
  TmyPanel = class(TPanel)
  private
    { Private declarations }
    procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
    procedure CMExit(var Message: TCMExit); message CM_EXIT;
  protected
    { Protected declarations }  public
    { Public declarations }
  published
    { Published declarations }
  end;procedure Register;implementationprocedure Register;
begin
  RegisterComponents('Almzg', [TmyPanel]);
end;{ TmyPanel }procedure TmyPanel.CMEnter(var Message: TCMEnter);
begin
  showmessage('af');
  doEnter;
end;procedure TmyPanel.CMExit(var Message: TCMExit);
begin
  doExit;end;end.
====================
然后使用的时候,在onter里写了 showmessage('adf');
运行,点它,没反应。
为什么???

解决方案 »

  1.   

    运行,点它,没反应。
    --------
    OnEnter事件是获取焦点时触发,不是点击它时触发。
    你在控件上面放一个按钮之类的控件,再点击它,就会显示af了。
      

  2.   

    是的,我上面有edit,但大部分区域是一个srcollbox,
    那我该如何?是不是说tpanel本身不能获取焦点?但我看它有 focused属性啊
      

  3.   

    TPanel是一个容器,可以获取焦点,但不是通过点击来获取。例如可以通过Tab键切换到它里面控件时触发事件。你为什么要继承一个,在上面放SrcollBox是想要实现什么,我不是很明白。
      

  4.   

    我的控件布局是这样的:
    底下是panle
    然后是scrollbox(上) 和edit(下);
    然后scrollbox上有两个image;
    根据情况,在scrollbox和edit之间可能还有个panel,panel上有两按钮和一个label。
    ============================
    我这么做的目的是在一个界面上会有多个这样的组合,如果不做成控件,做起来很麻烦。做成控件就可以做为一个整体。里面一定要有edit和button之类的控件才能获取焦点啊,因为我每个这样的控件都挂了个popmenu,弹出的菜单要根据这个控件的属性而显示不同内容。说了这么多,你看懂了没有,呵呵,谢谢你的帮忙,继续关注我哦~~
      

  5.   

    好象解决了:我加了个 procedure WndProc(var Message: TMessage); override;
    procedure TmyPanel.WndProc(var Message: TMessage);
    begin
      case Message.Msg of
        WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
          if not (csDesigning in ComponentState) and not Focused then
          begin
            FClicksDisabled := True;
            Windows.SetFocus(Handle);
            FClicksDisabled := False;
            if not Focused then Exit;
          end;
        CN_COMMAND:
          if FClicksDisabled then Exit;
      end;
      inherited WndProc(Message);
    end;=====================
    代码是从vcl里抄来的,哈哈。
      

  6.   

    晕,还是不行,
    如果上面有panel上有其他控件比如groupbox,则还是会被屏蔽掉