2011-11-23 96 views
2

我需要在Delphi 5上的一个小例子,如何在一个radiogroup存在项目的文本包装文本,如果需要。delphi - TRadioGroup与物品包装

我在Delphi 2006中通过访问buttons属性解决了它,但是在D5中这个属性不存在。

LE:有什么解决方案,除了SetWindowLong吗?

回答

2

完成。

procedure TForm1.Button1Click(Sender: TObject); 
var 
i: Integer; 
rbs: DWORD; 
rb: TRadioButton; 
begin 
with RadioGroup1 do 
begin 
    for i := 0 to ControlCount-1 do 
    begin 
    rb := radiogroup1.controls[i] as TRadioButton; 
    rbs := GetWindowLong(rb.Handle, GWL_STYLE); 
    rbs := rbs or BS_MULTILINE or BS_TOP; 
    SetWindowLong(rb.Handle, GWL_STYLE, rbs); 
    end ; 
    Invalidate; 
end ; 
end; 
2

在Delphi 5中,您可以通过迭代广播组的Controls属性来轻松获得按钮。但是,你打算怎么做才能让它们包裹? Delphi 5单选按钮没有WordWrap属性。

如果我是你,我会添加一堆单选按钮到一个组框,而不是使用无线电组。这使您可以控制您创建的单选按钮类型。然后派生自己的单选按钮类并实现WordWrap属性。要做到这一点,您需要在CreateParams中添加BS_MULTILINE样式,就像现代的Delphi版本一样。

当然,您的答案中概述的方法也可以!

+0

这就是我做到的。+ 1 – RBA

+0

顺便说一下,我写我的时候没有看到你的答案。我正在忙着探索我的旧版本的Delphi版本! –

+0

如何做到这一点的迹象是非常有用的。我发布了这个问题,然后编写了代码。无论如何,你非常快! – RBA