8

質問履歴でわかるように、私はオープンソースのeBookマネージャーを開発しており、約10日でリリースしTRadioGroupますが、ご覧のとおり、次のようになります
。TRadioGroup Used On My Form http: //img85.imageshack.us/img85/1830/radiogroup.png

Integerそして、これに「リンク」される変数(である必要があります)に何かを格納したいと思いますTRadioGroup

if私はこのような機能を実行する必要があります:

TRadioButtonのキャプション->変数に格納する必要のある数値

2x幅に合わせる-デフォルト->
02x高さに合わせる->1
幅に合わせる->2
高さに合わせる->3

しかし、20回以上使用したC#とは異なりTRadioGroup、 1回だけ使用しました。TRadioButton次に、if関数に何を設定する必要があるかを知りたいのです。なぜなら、それが何をするのか、私はすでにその方法を知っているからです。

var
  num: Integer;

begin
  if(TRadioButton1 checked?)
  begin
    num := 0;
  end;
end.

関数の角かっこ内に何を入れる必要がありifますか?

PS:この小さなプロジェクトで私を助けてくれた人々のためにプログラムにクレジットを付けるつもりです。

4

2 に答える 2

10

TRadioButtonにはCheckedプロパティがあります。ただし、TRadioGroupにはItemIndexプロパティがあります。

TRadioGroupのアイテムは、TStringsを使用して保存されます。したがって、オブジェクトを各オプションに関連付けたり、整数をTObjectにキャストして保存したりできます。

例:

// fill the radiogroup
radiogroup.Items.AddObject('Fit 2xWidth', TObject(0));
radiogroup.Items.AddObject('Fit 2xHeight', TObject(1));
radiogroup.Items.AddObject('Fit Width', TObject(2));
radiogroup.Items.AddObject('Fit Height', TObject(3));
radiogroup.ItemIndex := 0;

現在の設定を読み取るには:

value := radiogroup.ItemIndex;

または、関連する整数を取得するには:

index := radiogroup.ItemIndex;
Assert(index>=0); // Sanity check
value := Integer(radiogroup.Items.Objects[index]);

あなたの場合、値は0から3なので、ItemIndexを使用できます。

注意として、ifは関数ではありません。関数は、入力パラメーターに基づいて値を返すコードの一部です。Ifは、実行可能なコマンドであるステートメントです。ifステートメントは、if条件に基づいて異なるステートメントを実行できるため、特別です。

于 2009-12-31T17:28:06.370 に答える
6

ほんの少しのヒント:設定.ItemIndexはキーボードフォーカスをラジオアイテムに送信しません、私はそれを修正する方法を知っています、先読みしてください。

設定してRadioGroupのラジオをコードで選択する代わりに.ItemIndex、ラジオアイテムにフォーカスを送信して選択する方がはるかに優れています。非常に明確にするために、つまり、ラジオグループ全体ではなく、ラジオアイテムだけにフォーカスを送信することを意味します。

それ以外の:radiogroup.itemindex:=TheIndex;

このようにしてください:TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;

選択するラジオアイテムを作成し、キーボードフォーカスを送信するため、ユーザーがクリックしたかのように、その周りに点線の長方形が表示されます。

.ItemIndex注1:動作を確認するには、キーボードのカーソルキーを使用して、フォーカスを設定してラジオアイテムに送信する動作を比較します。

注2:を使用する場合TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;は、設定する必要は全くなく、設定.ItemIndexも行います。

コードで設定する必要がある場合、たとえば、最後のラジオアイテムが選択され、キーボードの右カーソルが押されたときに最後のラジオアイテムに留まるようにするために、コードで設定する必要がある場合に、私と同じ問題を抱えている人に役立つことを願っています、最初は同じです。

于 2013-01-29T12:26:18.960 に答える