为什么工具按钮右侧留空会比左边多 |
尚未結案
|
circusmonkey
一般會員 發表:6 回覆:10 積分:8 註冊:2004-06-28 發送簡訊給我 |
小弟在使用工具栏(TToolbar)和工具按钮(TToolButton)的时候遇到点怪问题。 如果Toolbar.ShowCaption=False,效果如图1。
如果Toolbar.ShowCaption=True,效果如图2、图3。
问题来了,在ShowCaption=True的时候,按钮右侧留空比左侧多一点。
看了ComCtrls.pas,发现在function TToolBar.UpdateItem中有注解说到:
{ Common control requries at least a space is used when showing button
captions. If any one button's caption is empty (-1) then none of
the buttons' captions will not be displayed. }
else CaptionText := ' ';
估计这一点点多出的空,就是这行代码在作怪。 奇怪的是,我修改了这行代码(else CaptionText := ''),
然后重编译ComCtrls.pas(修改后的新档肯定可以被程序执行)
但是这多出的留空还是存在,并没有消失。 不知道各位朋友有没有遇到过相同的问题,能否指点小弟一二呢? 注:我比较Internet Explorer,发现它并没有右侧留空比左侧多的问题。 發表人 - circusmonkey 於 2004/07/07 21:59:01 發表人 - circusmonkey 於 2004/07/07 22:00:47
|
circusmonkey
一般會員 發表:6 回覆:10 積分:8 註冊:2004-06-28 發送簡訊給我 |
|
circusmonkey
一般會員 發表:6 回覆:10 積分:8 註冊:2004-06-28 發送簡訊給我 |
解决了!大致思路是:
1、在创建工具栏的时候在TToolbar.CreateWnd中修改
if GetComCtlVersion >= ComCtlVersionIE4 then
Perform(TB_SETEXTENDEDSTYLE, 0, Perform(TB_GETEXTENDEDSTYLE, 0, 0) or
TBSTYLE_EX_DRAWDDARROWS or $0008);//$0008=TBSTYLE_EX_MIXEDBUTTONS(IE5.5) 2、继承TToolbar的消息事件,在TB_INSERTBUTTON事件中加入
//当然这部分的修改是选择性的。也就是说,只有那些需要caption的button才需要做以下的事情。
var
BT: PTBButton;
begin
BT := PTBButton(Message.LParam);
if TControl(BT.dwData).InheritsFrom(TToolButton) then
Style := Style or $0040; //$0040=BTNS_SHOWTEXT(IE5.5)
end; 这样应该就可以了。我测试通过了。不过没有时间封装新的工具栏了。
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |