CnPack Forum


 
Subject: Delphi7 快捷键显示问题
softsword
普通灌水员
Rank: 2



Medal No.1  
UID 452
Digest Posts 0
Credits 95
Posts 95
点点分 95
Reading Access 10
Registered 2004-7-13
Location 北京
Status Offline
Post at 2005-2-24 16:45  Profile | Blog | P.M. 
Delphi7 快捷键显示问题

各位:

    大家知道,Delphi 7 由于采用了新的技术,导致刚启动 IDE 之后,主菜单的快捷键显示不出来。必须按了某个快捷键才会出来。对比截图如下:
===============================================


Image Attachment: post-1.jpg (2005-2-24 16:45, 2.7 K)



Image Attachment: post-2.jpg (2005-2-24 16:45, 2.48 K)

Top
softsword
普通灌水员
Rank: 2



Medal No.1  
UID 452
Digest Posts 0
Credits 95
Posts 95
点点分 95
Reading Access 10
Registered 2004-7-13
Location 北京
Status Offline
Post at 2005-2-24 16:53  Profile | Blog | P.M. 
因此,看 CnPack 的大哥们能不能为 Delphi 7 增加一个功能。
就是在 Delphi 7 的 IDE 启动之后,向 IDE 的主窗口发送一个特殊得快捷键。
这个快捷键的作用就是把菜单对应的快捷键字符显示出来,
而又不能把某个菜单真正打开。
小弟以为,这个键比如一个单独的 Alt 键或者 Alt + A ... 都可以。
只要不是主菜单对应的快捷键字符就行。
不知道这个建议 CnPack 是否可以考虑一下?
谢谢!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6383
Posts 3369
点点分 6383
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2005-2-24 20:07  Profile | Blog | P.M. 
奇怪。
这个是Borland官方出的中文版还是民间的汉化版?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6383
Posts 3369
点点分 6383
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2005-2-24 20:08  Profile | Blog | P.M. 
而且,英文版本的也有此问题。
Top
kendling (小冬)
高级版主
Rank: 8Rank: 8
MyvNet


Medal No.1  
UID 703
Digest Posts 5
Credits 978
Posts 580
点点分 978
Reading Access 101
Registered 2005-2-18
Location 广东
Status Offline
Post at 2005-2-24 23:58  Profile | Site | Blog | P.M.  | QQ | Yahoo!
不会吧?我有的Delphi7好像没有这个问题呀。
Top
softsword
普通灌水员
Rank: 2



Medal No.1  
UID 452
Digest Posts 0
Credits 95
Posts 95
点点分 95
Reading Access 10
Registered 2004-7-13
Location 北京
Status Offline
Post at 2005-2-25 14:29  Profile | Blog | P.M. 
To kendling:

   你的 Delphi 一定是这样,如果是 7 的话。不管你是英文版也好,还是其他版本也好,原版就是如此。只不过你没有留意罢了。
Top
softsword
普通灌水员
Rank: 2



Medal No.1  
UID 452
Digest Posts 0
Credits 95
Posts 95
点点分 95
Reading Access 10
Registered 2004-7-13
Location 北京
Status Offline
Post at 2005-2-25 14:35  Profile | Blog | P.M. 
Borland 官方出过一个 Delphi 7 Menu 多国语言包,
紧紧针对 IDE 的主菜单,可以选择中文。
不过这个中文实在...
而且,这个预言包也存在同样的问题。
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2005-2-25 18:48  Profile | Site | Blog | P.M. 
D7的主菜单控件问题多多,快捷键不显示还不影响使用,菜单位置不会自动调整更是可恶。比如 CnWizards 的对齐子菜单经常显示不全:(

不过显示快捷键我觉得不太有必要,毕竟用鼠标还是多,要用键盘的话,按住 Alt 键就出快捷字母了。




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6383
Posts 3369
点点分 6383
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2005-2-25 19:48  Profile | Blog | P.M. 
我还真不知道得按ALT才能出来快捷键的下划线,我还以为D7的ActionMainMenubar本来就不支持快捷键显示。
Top
softsword
普通灌水员
Rank: 2



Medal No.1  
UID 452
Digest Posts 0
Credits 95
Posts 95
点点分 95
Reading Access 10
Registered 2004-7-13
Location 北京
Status Offline
Post at 2005-2-25 22:08  Profile | Blog | P.M. 


QUOTE:
Originally posted by Passion at 2005-2-24 08:07 PM:
奇怪。
这个是Borland官方出的中文版还是民间的汉化版?

汉化版(by hjinke):
[url]http://www.hanzify.org/?Go=Show:ist&ID=6700[/url]

不过上面的图片是小弟做的。
汉化了一半的 Delphi 7,因为菜单太难看而取消汉化了。
原版既是如此,没有办法。


不过 C++Builder 6.0 汉化倒是小弟做的。
[url]http://www.hanzify.org/?Go=Show:ist&ID=4685[/url]
见笑了

[ Last edited by softsword on 2005-2-25 at 22:13 ]
Top
softsword
普通灌水员
Rank: 2



Medal No.1  
UID 452
Digest Posts 0
Credits 95
Posts 95
点点分 95
Reading Access 10
Registered 2004-7-13
Location 北京
Status Offline
Post at 2005-2-25 22:12  Profile | Blog | P.M. 
yygw 说得不错,这个只是一个小问题。
但是这样也确实有点不方便。
快捷键字符出不来,菜单就会显得很丑。
小毛病,等 CnPack 有空了再顺便修改一下就好了。
谢谢!
Top
shenloqi
灌水处处长
Rank: 4



UID 34
Digest Posts 1
Credits 287
Posts 179
点点分 287
Reading Access 10
Registered 2003-3-15
Status Offline
Post at 2005-2-27 15:39  Profile | P.M. 


QUOTE:
Originally posted by Passion at 2005-2-25 07:48 PM:
我还真不知道得按ALT才能出来快捷键的下划线,我还以为D7的ActionMainMenubar本来就不支持快捷键显示。

XP有这个选项是否需要按住Alt键后才显示快捷键的,不过D7不管这个选项都是要按住Alt后才显示的。XP的这个选项在 显示属性 - 外观 - 效果 设定。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6383
Posts 3369
点点分 6383
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2005-2-27 15:51  Profile | Blog | P.M. 
对,Win2k也有。
Top
internetzs
新警察
Rank: 1



UID 529
Digest Posts 0
Credits 31
Posts 31
点点分 31
Reading Access 10
Registered 2004-9-29
Status Offline
Post at 2005-2-27 22:06  Profile | Site | Blog | P.M. 
我认为快捷提示字符没有更好。有反而不好,占位置。
而且很少用到这些快捷字符,本人就从来没用过。




Yeah, this is johnson. Johnson is a programmer.
Top
softsword
普通灌水员
Rank: 2



Medal No.1  
UID 452
Digest Posts 0
Credits 95
Posts 95
点点分 95
Reading Access 10
Registered 2004-7-13
Location 北京
Status Offline
Post at 2005-2-28 22:28  Profile | Blog | P.M. 
错!internetzs 的说法不对!
请你仔细看看到底有没有占用位置。
不要因为你很少用也就认为别人也很少用。
Top
internetzs
新警察
Rank: 1



UID 529
Digest Posts 0
Credits 31
Posts 31
点点分 31
Reading Access 10
Registered 2004-9-29
Status Offline
Post at 2005-3-2 12:39  Profile | Site | Blog | P.M. 
我只是根据你提供的中文菜单来判断是否占位置,一般中文菜单都加括号和字母的,你的图有点误导喔。
回去看英文版的确实不占位置。

如果很多人用,这个bug当然比较明显和重要的,我想就一定会反映到Borland中去,但为何Borland在补丁1中不修正?

为一点无伤大雅问题而要劳烦yygw大师,大师级人马可不是很有空的喔,要知编程看似小问题,但解决起来就不一定简单,也许半天时间,也许3、4天,也许解决不了。

也许softsword是很必须这个功能, 而本人对这功能有无都无所谓,
看了上面几位楼主好似也没看出很需要此功能,最后还是让其他用户再发表发表。

最理想就是softsword解决了,自己动手,丰衣足食嘛,然后再把代码发给站长

[ Last edited by internetzs on 2005-3-2 at 12:42 ]




Yeah, this is johnson. Johnson is a programmer.
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2005-3-2 13:23  Profile | Site | Blog | P.M. 
刚才花了几分钟查了一下,要解决这个问题其实很简单。直接给出结果对大家意义不大,我说说我是怎样分析这个问题的吧:

首先,我觉得按照产品开发的惯例,Borland 即然在 D7 中使用了这种默认不显示快捷键的菜单,应该会考虑到有不喜欢这种风格的用户。所以我猜一定有一种简单的解决办法:)

通常有两种办法可以找到答案:一种查手册,一种查 VCL 源码。作为 VCL 代码爱好者,我选择了后者。

第一步,我们知道 D7 的新主菜单工具栏用的是 TActionMainMenuBar,于是我建新工程拖一个控件上去。然后我发现在单元 uses 部分增加了几个文件,其中 ActnMenus 看起来最符合搜索的条件。

第二步,打开 ActnMenus 单元。我记得以前用过一个函数 StripHotkey 用来把标题中的热键去掉。基于代码重用的原理,Borland 的工程师应该也会想到,于是在这个单元中搜索该函数。找到这个:
procedure TCustomMenuItem.CMTextchanged(var Message: TMessage);
begin
  inherited;
  FNoPrefix := StripHotkey(Caption);
end;
OK,我们知道原来这个菜单组件在标题变更时内部保存了一份无热键的文本。

第三步,全文件搜索 FNoPrefix,找到两处与标题绘制相关的调用,分别是:
TCustomMenuItem.DrawShadowedText 和 TCustomMenuItem.DrawText,在里面进行了判断
  if Parent is TCustomActionBar then
    if not ActionBar.PersistentHotkeys then
      Text := FNoPrefix;
于是我知道 TActionBar.PersistentHotkeys 就是我要找的东西。

第四步,打开帮助查找该属性的说明,验证结论。从打开 D7 到现在,一共用了不到五分钟,结束。




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2005-3-2 13:35  Profile | Site | Blog | P.M. 
To softsword:
如果您觉得有必要始终显示热键的话,可考虑自己解决。最简单的就是写一个单元,在 Register 过程里头找到 IDE 的主菜单,把 PersistentHotkeys 属性改成 True,再把这个单元加到随便一个包里。如果确实有需要,CnWizards 也可增加一个选项。

To internetzs:
大师这个称呼愧不敢当,请不要再用了:)




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
softsword
普通灌水员
Rank: 2



Medal No.1  
UID 452
Digest Posts 0
Credits 95
Posts 95
点点分 95
Reading Access 10
Registered 2004-7-13
Location 北京
Status Offline
Post at 2005-3-2 13:44  Profile | Blog | P.M. 
To internetzs:

    1。技术方面:
    按照你的意思,Borland 不在 7.1 升级包里面加上 TActionMainMenuBar 补丁就是不重要了??!为什么 Borland 又在 Delphi 2005 里面修正这个问题呢??!

    2。人品方面:
    “为一点无伤大雅问题而要劳烦yygw大师,大师级人马可不是很有空的喔”,不错, yygw 是不错、能力强,大家都明白,但是用不着你在这里阿谀奉承、溜须拍马!也不怕肉麻??!

    3。论坛方面:
    设立这个板块就是大家来提出自己的问题、见解,有话好好说。需要不需要解决由 CnPack 来决定,不需要旁人来骚扰打击。 “最理想就是softsword解决了,自己动手,丰衣足食嘛,然后再把代码发给站长”??! 如果照你这样说,设立这个论坛让大家来提建议、意见有什么用??!反正都是要自己解决!

    4。到此为止:
    我是不懂就问,因为我确实对 Delphi IDE 不熟悉。
    不象某人,唧唧歪歪半天还是不能解决问题!
    从此以后,这个问题我不会再回复你,随便你去骂好了。
    我是写程序的,不屑于与你做口舌之争!

[ Last edited by softsword on 2005-3-2 at 14:09 ]
Top
softsword
普通灌水员
Rank: 2



Medal No.1  
UID 452
Digest Posts 0
Credits 95
Posts 95
点点分 95
Reading Access 10
Registered 2004-7-13
Location 北京
Status Offline
Post at 2005-3-2 13:50  Profile | Blog | P.M. 
To yygw:
    感谢您的指点,我会自己解决这个问题。
    这个对我不仅是个问题,更是个启发。
    再次感谢!
Top
 




All times are GMT++8, the time now is 2017-8-23 23:27

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.032720 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP