標記の件、
RadioGroupで特定の項目を(グレーなどにして)選択できない状態にするというのは可能でしょうか?
よろしくお願いします。
こんなのとか?
procedure RadioGroupButtonEnableChange(
RadioGroup: TRadioGroup; Index: Integer; Enabled: Boolean);
var
i: Integer;
caption: String;
begin
caption := RadioGroup.Items[Index];
for i := 0 to RadioGroup.ControlCount -1 do begin
if RadioGroup.Controls[i] is TRadioButton then begin
if TRadioButton(RadioGroup.Controls[i]).Caption = caption then begin
TRadioButton(RadioGroup.Controls[i]).Enabled := Enabled;
end;
end
end;
end;
例)
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
RadioGroupButtonEnableChange(RadioGroup1, 0, not SpeedButton1.Down);
end;
Delphian World にそういうコンポーネントあった気もする。
TRadioGroup の Buttons プロパティで各 RadioButton をいぢれる。
Delphi のバージョンに依存するかもしれませんが...
> TRadioGroup の Buttons プロパティで各 RadioButton をいぢれる。
D5 にはないです。
6以降かな?
回答ありがとうございます。
TRadioButton(RadioGroup.Controls[i]).Enabled
でアクセスする方法は確認できました。
Buttons プロパティはどうしてもわかりませんでした。
RadioGroup1.( ・・・・).Buttons なんでしょうね。・・・の部分がなかなかたどり着きません。
もしかしたらD6にはないのかな?
D7ではButtonsプロパティは普通にありました。
質問のことに関しては
Radiogroup1.Buttons[0].Enabled :=false;
//Radiogroup1の最初の項目を使用不可に
みたいな感じでできると思いますがどうでしょうか。
RadioGroup.Controls[*].Enabled := false;
*はItemsの番号
D5にてOKです
グループボックス内にラジオボタンを置くというじゃだめなの??むしろそっちの方がそれぞれのボタンに対してイベント処理できるので良いと思うですが・・・ ソースの量を少ないしたいのですかね??
皆さん、フォローありがとございます。
D6だとButtonsプロパティは無いような気がします。
BDS2006だと、
RadioGroup1.Buttons[0] := false;
のように記述しても
[Pascal エラー] Unit1.pas(**): E2129 読み込み専用プロパティに書き込むことはできません
と怒られコンパイルできませんでした。
D7〜8では可能なんでしょうか?
私はD6とBDS2006しかありません。
あああっ
すみません。
RadioGroup1.Buttons[0].Enabled := false;
のミスでしたっ
これでできます。
ツイート | ![]() |