いつもお世話になっています。
初歩的な質問なのかもしれませんが…
ラジオグループで、複数列の項目を横⇒縦の順に並べたいのですが可能でしょうか?
例.Items = aaa, bbb, ccc, ddd, eee と格納されている
colums = 3
-----------------------
| ○aaa ○bbb ○ccc
| ○ddd ○eee
こんなイメージなのですが、どうでしょうか?
よろしくお願いします。
環境:WindowsXP、Delphi2007
TRadioGroupでは出来ませんので、グループボックスにTRadioButtonをならべるしかないですね。
KHE00221 です
TRadioGroup の Button は RadioGroup.Butttons で操作する事が可能ですのでボタンの座標を直接変更する事により横向きに配置する事が可能です
(*) RadioGroup の Items に追加されると元に戻ってしまいます
var
I,X,TopMargin,ButtonWidth,ButtonHeight,ButtonsPerCol : Integer;
DC : HDC;
SaveFont : HFont;
Metrics: TTextMetric;
begin
DC := GetDC(0);
SaveFont := SelectObject(DC, Font.Handle);
GetTextMetrics(DC, Metrics);
SelectObject(DC, SaveFont);
ReleaseDC(0, DC);
ButtonsPerCol := (RadioGroup1.Items.Count + RadioGroup1.Columns -1) div RadioGroup1.Columns;
ButtonWidth := (RadioGroup1.Width - 10) div RadioGroup1.Columns;
I := RadioGroup1.Height - Metrics.tmHeight - 5;
ButtonHeight := I div (ButtonsPerCol);
TopMargin := Metrics.tmHeight + 1 + (I mod ButtonsPerCol) div 2;
for I:=0 to RadioGroup1.Items.Count -1 do
begin
RadioGroup1.Buttons[I].Left := (I mod RadioGroup1.Columns) * ButtonWidth + 8;
RadioGroup1.Buttons[I].Top := (I div RadioGroup1.Columns) * ButtonHeight + TopMargin;
RadioGroup1.Buttons[I].Width := ButtonWidth;
RadioGroup1.Buttons[I].Height := ButtonHeight;
end;
end;
HOtaさん、KHE00221さん、ありがとうございます。
ボタンの座標を直接変更すると可能は可能なのですね。
今回は可読性を重視して、グループボックスを使用します。
ありがとうございました。
ツイート | ![]() |