掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CheckBoxの排他的選択の後続 (ID:28280)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
CheckBox1−15 で5個ずつ3グループの例を示します。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; CheckBox6: TCheckBox; CheckBox7: TCheckBox; CheckBox8: TCheckBox; CheckBox9: TCheckBox; CheckBox10: TCheckBox; CheckBox11: TCheckBox; CheckBox12: TCheckBox; CheckBox13: TCheckBox; CheckBox14: TCheckBox; CheckBox15: TCheckBox; procedure FormCreate(Sender: TObject); private cb: array[1..15] of TCheckBox; procedure CBClick(Sender: TObject); public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i: integer; ccb: TCheckBox; begin for i := 1 to 15 do begin ccb := TCheckBox(FindComponent('CheckBox'+IntToStr(i))); ccb.OnClick := CBClick; ccb.Tag := i; cb[i] := ccb; end; end; procedure TForm1.CBClick(Sender: TObject); var i, j, t: integer; begin t := TCheckBox(Sender).Tag; j := ((t - 1) div 5) * 5 + 1; for i := j to j+4 do begin cb[i].OnClick := nil; cb[i].Checked := false; end; cb[t].Checked := true; for i := j to j+4 do cb[i].OnClick := CBClick; end; end. FindComponent を毎回使うのは非効率ですから、一度だけ配列にとって おきます。40個8グループに拡張してみてください。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.