2017-12-11 6 views
0

私は3つのcxRadioButtonを内部に持つdxCheckGroupBox1を持っています。 TdxCustomCheckGroupBoxCheckBoxをクリックすると、 のcxRadioButtonが有効または無効になります。それは正常な動作です。ラジオボタンのチェックを外してdxCheckGroupBoxのcase文を使用する

CheckGroupBoxを無効にすると、選択したcxRadioButtonをオフにして をチェックしないことをお勧めします。 GroupBoxCheckBoxのチェックを外した後で、最後に使用したボタンがチェックされたままになります(無効になっています)。

これは機能していないようです。

procedure TForm1.dxCheckGroupBox1Click(Sender: TObject); 
var i:integer; 
CheckGroupBox1 : TdxCheckGroupBox; 
begin 
for I := 0 to CheckGroupBox1.ComponentCount - 1 do 
if Components[0] is TcxRadioButton then 
(Components[0] as TcxRadioButton).Checked:=False;; 
end; 

もう一つの問題は、このdxCheckGroupBox1 (cxRadioButtonの選択に応じてでCASEステートメントを使用する方法です

+0

2つのアイデア:1. 'Checked'の代わりに' EditValue'を設定してください2.ラジオボタン**のどれかがチェックされていなければなりませんか? –

+2

このコードは本当ですか?CheckGroupBox1'はローカル変数であり、初期化されました。アクセス違反が予想されます。別の問題は 'CheckGroupBox1'コンポーネントを反復することですが、ループの中では' TForm1'の 'Components'配列にアクセスします。そしてあなたは固定インデックス(0)でそれを行います。私はあなたが意図したものが 'CheckGroupBox1.Components [i]'だと信じています。 – nil

+0

@nilはい、あなたは正しいです。これはAVを投げる。 – user763539

答えて

0

まあ、ない簡単な方法が存在しない場合、これはないでしょう?

procedure TForm1.Button1Click(Sender: TObject); 
begin 
if cxRadioButton1.checked then 
    begin 
    showmessage('button1'); 
    end 
else if cxRadioButton2.checked then 
    begin 
    showmessage('button2'); 
    end 
else if cxRadioButton3.checked then 
    begin 
    showmessage('button3'); 
    end 
else if cxRadioButton4.checked then 
    begin 
    showmessage('button4'); 
    end 
else showmessage('None of the above !'); 
end; 


procedure TForm1.dxCheckGroupBox1Click(Sender: TObject); 
begin 
cxRadioButton1.Checked:=false; 
cxRadioButton2.Checked:=false; 
cxRadioButton3.Checked:=false; 
cxRadioButton4.Checked:=false; 
end; 
関連する問題