2011-11-23 64 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