**** ActionList!!! ( 积分: 150 )

  • 主题发起人 主题发起人 vvyang
  • 开始时间 开始时间
V

vvyang

Unregistered / Unconfirmed
GUEST, unregistred user!
愤怒中!
我真想不通这个被一些人津津乐道的狗屁 ActionList,能不能少一点 Bug!
大家可以随便做个例子,用 TEditDelete 监视一个 TEdit 的文本,你会发现在普通文本框中可以使用的 Delete 键失灵了,用 Delete 根本删除不了字符,除非你把他们选中。
看了一下 TEditDelete 的代码,其中有一句:SendMessage(Handle, WM_CLEAR, 0, 0),怪不得不好使。
大家可以试一下,凡是加了 TEditDelete 的 Form,上面的所有文本框一律不能用 Delete 来代替 BackSpace 删除字符。
还有,那个 TEditDelete 特别喜欢把 Edit 里的所有字符都删掉。
 
大家可以用delphi的demo——actions试一下...
 
自己写吧, 我从不用actionlist
 
TEditDelete is designed to work with an edit control (TCustomEdit descendant) as a target. [red]It automatically disables itself [/red]if the active control in a form is not an edit control or [red]if the active edit control does not have any selected text[/red].
TEditDelete 就是这么设计的,如果没有选中文本就不起作用。不是 bug。
 
楼上正解。楼主可自行写ActionListItem对象,完成自己的动作。其实ActionList是Command模式的一个VCL组件化实现,挺好用的,灵活性很高。
 
郁闷啊...
问题是 TEditDelete 设计得让人生气,加了它的界面的 TEdit 一律不能用。
 
楼主不要这么生气啊 也许是美国人和中国人的使用习惯不一样 才导致设计成这样 呵呵
 
呵呵,我用了 Delphi 的另一个 Command/Action 模式的 TActionManager,问题就解决了。
看来 Delphi 开发组也发现 TActionList 这个垃圾 bug 了...
挂两天后给哥几个结帐...
 
不是bug
只是个使用习惯问题
 
发现问题的根源主要在 TMainMenu,如果定义了子菜单的快捷键(如 Delete)它会第一时间拦截到 WM_CHAR 消息,从而使 Delete 失效;如果把 TMainMenu 放到 TToolBar 里面就不会出现问题了。
 
谢谢各位,原因我找到了,就是那个 NB 的 TMainMenu,他把 Form 的所有消息的截获了,把他放到 Toolbar 里面他就老实了。
 
后退
顶部