做一个控件,继承于 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');
运行,点它,没反应。
为什么???
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');
运行,点它,没反应。
为什么???
解决方案 »
- 线程里的创建控件,控件的事件怎么触发?SPComm onreceivedate事件
- 如何设置delphi2009 toolbar 背景
- 100分 求扫描后的部份数据,放入dbgrid中。
- 过小年了,散分!!
- 用Socket连接中间件出现找不到成员的错误!但是DCOM可以!
- tjvbrowseforfolderdialog是什么控件呢?在什么地方能下载呢
- NMFTP控件使用问题
- 有什么好点的办法吗???
- 关于从服务器自动升级问题
- 请告诉我下面这句话怎样操作,谢谢!
- 软硬件结合采集数据设计问题 欢迎有设计经验的人发表见解?
- 我想在DBGrid中移動焦點到隨意的一行時,這一行的字體顏色就變成另一種顏色,且可以對這一行的字段的值進行修改。怎麼樣實現???
--------
OnEnter事件是获取焦点时触发,不是点击它时触发。
你在控件上面放一个按钮之类的控件,再点击它,就会显示af了。
那我该如何?是不是说tpanel本身不能获取焦点?但我看它有 focused属性啊
底下是panle
然后是scrollbox(上) 和edit(下);
然后scrollbox上有两个image;
根据情况,在scrollbox和edit之间可能还有个panel,panel上有两按钮和一个label。
============================
我这么做的目的是在一个界面上会有多个这样的组合,如果不做成控件,做起来很麻烦。做成控件就可以做为一个整体。里面一定要有edit和button之类的控件才能获取焦点啊,因为我每个这样的控件都挂了个popmenu,弹出的菜单要根据这个控件的属性而显示不同内容。说了这么多,你看懂了没有,呵呵,谢谢你的帮忙,继续关注我哦~~
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里抄来的,哈哈。
如果上面有panel上有其他控件比如groupbox,则还是会被屏蔽掉