3

我需要一个关于 Delphi 5 的小例子,说明无线电组中的项目文本如何在需要时换行。

我在 Delphi 2006 中通过访问按钮属性解决了它,但在 D5 中该属性不存在。

LE:除了 SetWindowLong 之外还有其他解决方案吗?

4

2 回答 2

3

在 Delphi 5 中,您可以通过遍历Controls单选组的属性轻松获得按钮。但是你要怎么做才能让它们包裹起来呢?Delphi 5 单选按钮没有WordWrap属性。

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

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

于 2011-11-23T17:08:44.080 回答
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;
于 2011-11-23T16:59:40.240 回答