我现在有一个窗体类派生了很多窗体,现在我想加入一个判断,如果Enter不可用,则对其发送Edit.SetFocus事件时不响应。是否要捕获OnEnter事件?此事在消息中是WM_ENTER????要如何写????谢谢大家
解决方案 »
- 关于用DELPHI运行一个DOS命令
- 如何将数据库表中的数据导出到EXCEL?而且需自动倒出?
- 请问用FindFirst搜索*.jpg时,*.jpg,比较多,程序好象死了一样,如何解决呢。提点建义。
- 江湖救急!!!OpenGL的问题,麻烦各位大侠路过时千万进来一看!100分
- 求购管理软件(关于批发市场管理的)
- 关于李维的《SOAP/WEB SERVICE程序设计》第三章例子无法实现的问题,请高手解答
- 高分請教各位,Delphi中Ado相關問題?
- 该如何设置shelltreeview为只读?
- 变量调用问题
- 请问一个有关IAppServer接口的AS_ApplyUpdates方法调用的问题的问题?
- 写了函数或过程,转到下面写代码的框架该使用哪个快捷键?
- 一个关于数据查询的问题请高手指教
tde=class(TEdit)
protected
procedure wndproc(var message:Tmessage);override;
end;procedure tde.wndproc(var message:tmessage);
begin
if message.msg=wm_setfocus then
begin
showmessage('no focus');
exit;
end;
inherited wndproc(message);
end;procedure TForm1.BitBtn7Click(Sender: TObject);
var
e:tde;
begin
e:=tde.Create(form1);
e.Top:=10;
e.Left:=10;
e.Parent:=form1;
e.Show;
end;
不用,你可以在onenter中选这个过程。
for i:=0 to list.count-1 do
begin
if not list[i].enabled then continue;
//////
end;
这个函数的加入位置,可以考虑放到form的mousedown消息(处理通过鼠标来setfocus)和keydown消息(处理通过tab键来setfocus)中。
我没试过,只是想想,你可以自己试试。
我现在不想写
if edtName.Enabled then
edtName.SetFocus
因为窗体已经做好,并派生了许多的子类。改起来太麻烦。只想在基类中加一个函数或捕获这个SetFocus(WM_SETFOCUS)消息,让它不执行下去。
你不要光看这个。主要是有的问题我问完了也没有人回答。不知道是不是问题太简单了。我没办法结贴
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SetFOCUS;
在你认为不执行的时候abort就可以了,但比较严厉。
procedure TFrmRecTemplet.WMSetFocus(var Message: TWMSetFocus); message WM_SetFOCUS;
begin
if ... then //怎么当前是哪个控件发送的WM_SETFOCUS事件???通过Message的FocusedWnd属
//性吗???怎么才能通过FocusedWnd找到相应控件呢?
abort;
end;