中国程序员联盟 正在重新改版中ing 不便之处还请见谅 改版后将内容涉及java delphi .net php
 
  首页 | 数据库开发 | 网络通讯 | 多线程 | 多媒体开发 | 图像处理 | 程序人生 | 系统函数 | 控件开发 | Web服务
 
  当前位置:笨鱼delphi技术网>系统函数>文章内容

delphi 用户选择菜单事件

来源:站内 关于:bill 发布时间:2007-06-27   [收藏] [推荐]

  Delphi的TMainMenu构件没有提供很丰富的事件处理,这给程序设计带来了一些不便。例如,在一个文本编辑器程序中,可能需要随时侦测系统的剪帖板是否有数据,如果有则将主菜单的Paste条目设为Enabled,反之设为Disabled。检测剪帖板是否有内容的代码应该在用户选取菜单时立即执行,可惜Delphi并未提供相应的事件。
  当用户选取菜单时,Windows会向程序发送WM_INITMENU消息,因此可在MainForm中加入处理WM_INITMENU消息的过程,示例如下:

首先在MainForm声明的private段中加入如下声明
procedure WMInitMenu(var msg: TMessage); message WM_INITMENU;

WMInitMenu消息处理过程的代码如下:
procedure TMainForm.WMInitMenu(var msg: TMessage);
begin
  if msg.WParam=GetMenu(Handle) then begin
    EditPasteItem.Enabled := Clipboard.HasFormat(CF_OEMTEXT);
  end else inherited;
end;
 

  在上例中,当用户选取菜单时,WMInitMenu立刻获得控制权,并根据剪帖板中是否有文本内容来决定Paste菜单条目的Enabled属性值。注意,无论是在MDI程序还是在非MDI程序中,处理WM_INITMENU消息的过程都应该放在MainForm中。


[浏览: 次]   
上一篇:delphi 自动滚屏幕   下一篇:delphi 获取RichEdit当前光标位置
[收藏] [推荐] [返回顶部] [打印本页] [关闭窗口]  
    评论加载中…
google adsense热点文章
·delphi Delphi中ShellExecute的妙用
·delphi 如何快速读取文本文件
·delphi 如何判断输入值是否中文
·delphi 在应用层截获键盘消息
·delphi delphi实现服务开启与关闭
·delphi 实时记录事件日志
·delphi 使MEMO自动滚动
·delphi 如何区分键盘两个Enter键
·delphi 切换界面的方法
·delphi 汉字输入法的编程及使用
·delphi Delphi程序输入法自动切换最简
·delphi 程序缩小为任务右下角的小图标
     delphi技术网 | firefox 下载 | Avant Browser下载 | dedecms 技术网 | drupal 爱好者 | php 技术网
  Copyright@www.delphichm.com,2006-2009.All Rights Reserved.
 
程序员联盟 | delphi Java .net|QQ:707102932