線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:941
推到 Plurk!
推到 Facebook!

为什么工具按钮右侧留空会比左边多

尚未結案
circusmonkey
一般會員


發表:6
回覆:10
積分:8
註冊:2004-06-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-07 21:54:51 IP:141.24.xxx.xxx 未訂閱
小弟在使用工具栏(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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-13 00:49:50 IP:141.24.xxx.xxx 未訂閱
没有人知道吗?
circusmonkey
一般會員


發表:6
回覆:10
積分:8
註冊:2004-06-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-14 00:14:42 IP:141.24.xxx.xxx 未訂閱
解决了!大致思路是: 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; 这样应该就可以了。我测试通过了。不过没有时间封装新的工具栏了。
系統時間:2024-05-16 7:25:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!