【问题标题】:delphi - TRadioGroup with items wrapabledelphi - 带有可包装项目的 TRAdioGroup
【发布时间】:2011-11-23 16:58:41
【问题描述】:

我需要一个关于 Delphi 5 的小示例,说明如果需要,radiogroup 中的项目文本如何包装文本。

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

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

【问题讨论】:

    标签: delphi delphi-5 radio-group


    【解决方案1】:

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

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

    当然,你的答案中列出的方法也可以!

    【讨论】:

    • 顺便说一句,我写我的时候还没有看到你的答案。我正忙着探索我的旧 Delphi 版本!
    • 有关如何操作的指示非常有用。我发布了问题,然后编写了代码。不管怎样,你的速度非常快!
    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 2015-04-10
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      相关资源
      最近更新 更多