掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ComboBoxで項目毎に選択可・不可する (ID:30915)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
春子:「ヒロミくん、これ"海の日"のお客様の予約リスト、グループごとに分けて、こっちに名前 清書しておいてね」 広海:「え、"海の日"? そっか、もう夏がすぐそこに来てるンだよねぇ」 真琴:「でもぉ〜、今は毎日雨ばっかり…お客様も来ないし、梅雨なんてなければイイのにぃ〜」 海都:「マコっちゃん、梅雨がなかったら夏に水不足になるし、困る人も大勢いるよ」 真琴:「そうだけどぉ〜…」 春子:「梅雨があけたら、もう眼が回るほど大忙しだから、それもイヤじゃないの?」 真琴:「ううん、夏は大好きだから、いくら忙しくてもアタシ平気だよ、だけどぉ〜」 広海:「文句いってないで、ほら、マコトもコレ手伝えよ、ヒマなんだろ?」 真琴:「アタシたち、ヒマじゃないよ、ね、カイトさん?」 広海:「えっ、なに〜ぃ? 二人で恋の密談〜?」 真琴:「バァ〜ッカ、そんナンじゃナイって」 type TComboSelChangingEvent = procedure(Sender: TObject; var CanSelect: Boolean) of Object; TComboBox = class(StdCtrls.TComboBox) private FGroupID: Integer; FCanSelect: Boolean; FPreItemIndex: Integer; FOnSelChanging: TComboSelChangingEvent; procedure CNCommand(var Message: TWMCommand); message CN_COMMAND; published property GroupID: Integer read FGroupID write FGroupID default 0; property OnSelChanging: TComboSelChangingEvent read FOnSelChanging write FOnSelChanging; public constructor Create(AOwner: TComponent); override; end; type TForm1 = class(TForm) ComboBox1: TComboBox; ComboBox2: TComboBox; ComboBox3: TComboBox; ComboBox4: TComboBox; ComboBox5: TComboBox; ComboBox6: TComboBox; ..... procedure FormCreate(Sender: TObject); private procedure ComboBoxSelChanging(Sender: TObject; var CanSelect: Boolean); end; var Form1: TForm1; implementation {$R *.DFM} {TComboBox} constructor TComboBox.Create(AOwner: TComponent); begin inherited Create(AOwner); FPreItemIndex := -1; FGroupID := 0; end; procedure TComboBox.CNCommand(var Message: TWMCommand); begin case Message.NotifyCode of CBN_SELCHANGE: if Assigned(FOnSelChanging) then begin FCanSelect := True; FOnSelChanging(Self, FCanSelect); if not FCanSelect then begin ItemIndex := FPreItemIndex; exit; end; FPreItemIndex := ItemIndex; end; end; inherited; end; {TForm1} procedure TForm1.FormCreate(Sender: TObject); begin ComboBox1.GroupID := 1; ComboBox1.OnSelChanging := ComboBoxSelChanging; ComboBox2.GroupID := 1; ComboBox2.OnSelChanging := ComboBoxSelChanging; ComboBox3.GroupID := 1; ComboBox3.OnSelChanging := ComboBoxSelChanging; ComboBox4.GroupID := 2; ComboBox4.OnSelChanging := ComboBoxSelChanging; ComboBox5.GroupID := 2; ComboBox5.OnSelChanging := ComboBoxSelChanging; end; procedure TForm1.ComboBoxSelChanging(Sender: TObject; var CanSelect: Boolean); var i: Integer; begin for i:=0 to ComponentCount - 1 do begin if (Components[i] is TComboBox)and(Components[i] <> Sender) and(TComboBox(Sender).GroupID = TComboBox(Components[i]).GroupID) and(TComboBox(Sender).GroupID > 0) and(TComboBox(Sender).ItemIndex >= 0) then begin if(TComboBox(Components[i]).ItemIndex = TComboBox(Sender).ItemIndex) then begin CanSelect := False; Form1.Caption := '選択不可だよン!!'; //確認 break; end; end; end; end; 真琴:「カイトさん、新しいTComboBoxクラスには、GroupIDっていうのもあるのね?」 海都:「うん、それで、排他制御するものと、そうじゃないものに分けるんだ」 広海:「あの、オレもソッチのグループ入ろかなぁ〜」 春子:「ダメよ、サッサと名前書く、夕食前までに終わらせる、いいわネ」 広海:「はいはい…、ハルコちゃん、だんだん、前の社長に似てきた…」 春子:「ナンか言った?」 広海:「ああ〜っ、それもソックリぃ」
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.