2013-03-31 27 views
2

当德尔福XE2 VCL增长窗体应用程序,我已经放在一个TCoolBar我主要形式的顶部。我已经添加了两个TCoolBand s到这个酒吧。然后我在这两个乐队的每一个乐队中插入了一个TToolBar。每个工具栏都有几个按钮。TCoolBar带尺寸变换形式

的问题是,当我水平调整自己的状态(无论是在设计时和运行时),带长,宽,不管我在做形式或大或小的。即使把我的表格缩小,乐队也会增长,直到第二个乐队最终被推出视线。

为什么会出现这种情况?如何阻止它的发生?

+1

调整他们['MinWidth'](http://docwiki.embarcadero.com/Libraries/XE3/en/Vcl。 ComCtrls.TCoolBand.MinWidth)属性。虽然我没有得到这种行为,但它解决了您需要为工具栏设置的最小尺寸。我个人不喜欢这种控制。它们看起来并不像看起来那么酷。 – TLama

+0

@TLama,就试了一下,并没有工作:( –

+1

这不是一个解决方案(在我看来奇怪的)调整,它只是让你必须看到工具栏的最小宽度。调整大小本身是* *硬编码在'TCoolBar',你就会有没有机会没有一个子类来改变它,我会说,对不起,我很忙深究下去,现在(也许以后我可以去看看)。 – TLama

回答

3

AFAIK,唯一的解决办法(感谢Ludek一起施托伊贝尔)是修补Vcl.ComCtrls.pas。在方法结束时TCoolBar.GetCaptionSize添加两行来处理IE6和较新的:

{ The grip size in IE4 is 3 pixels narrower than IE3 } 
    if GetComCtlVersion < ComCtlVersionIE4 then 
    Inc(Result, GripSizeIE3) 
    // begin handle IE6 
    else if GetComCtlVersion >= $0006000A {ComCtlVersionIE610} then 
    Inc(Result, 4 {GripSizeIE610}) 
    // end handle IE6 
    else 
+5

这里['源'](http://qc.embarcadero.com/wc/qcmain.aspx?d=70868)此错误及其修复。 – TLama