TPopupメニューの少なくとも1項目が常に選択されていることを確認する

StackOverflow https://stackoverflow.com//questions/11681420

  •  12-12-2019
  •  | 
  •  

質問

次のプロパティで3項目設定を備えたTPOPUPメニューを持っています。

AutoCheck = True
RadioItem = True
.

および最初のメニュー項目の場合、CheckedプロパティをTrueに設定しても、メニューが最初に選択されている少なくとも1つの項目が表示されます。これはすべて良いものでもよく、現在選択されているアイテムをクリックすると、チェック(ドット)が消えて、ポップアップ内の少なくとも1つの項目が常に選択されるようにしたいと思います。どうやって行くのですか?

役に立ちましたか?

解決

グループ内の項目には、同じゼロ以外の GroupIndex 。これは、 RadioItem アイテムをラジオのように振る舞うようにする必要があります。グループ。

しかし、 AutoCheck 現在チェックされている項目をクリックすると、チェックをクリアするため、GroupIndexおよびRadioItemプロパティ。 (おそらく、これはVCLのバグと見なすことができます。)

これは回避策です:

AutoCheckからFalseに設定し、同じゼロ以外のGroupIndexとCommon OnClickハンドラをすべて割り当ててこのようにクリックされたアイテムをチェックします。

procedure TForm1.ItemClick(Sender: TObject);
begin
  (Sender as TMenuItem).Checked := True;
end;
.

または actions を使用すると、これは予想通り動作しているようです。 >

他のヒント

すべてのラジオグループメニュー項目に次のonClickハンドラを設定できます。

procedure TForm1.MenuItemClickHandler(Sender: TObject);
    begin
        if Sender is TMenuItem then
        begin
            if not (Sender as TMenuItem).Checked then (Sender as TMenuItem).Checked:=True;
        end;
    end;
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top