T팝업 메뉴에서 최소 1개의 항목이 항상 선택되어 있는지 확인
-
12-12-2019 - |
문제
다음 속성을 가진 3개 항목이 설정된 TPOPup 메뉴가 있습니다.
AutoCheck = True
RadioItem = True
첫 번째 메뉴 항목에 대해 Checked
재산 True
또한 메뉴에는 처음에 표시되는 항목이 하나 이상 선택되어 있습니다.다 좋은데 현재 선택된 항목을 클릭하면 체크(점)이 사라지고 팝업에 있는 항목이 항상 1개 이상 선택되도록 만들고 싶습니다.어떻게 해야 합니까?
해결책
그룹의 항목도 0이 아닌 동일한 항목을 가져야 합니다. GroupIndex
.이와 함께 RadioItem
항목이 라디오 그룹처럼 작동하도록 해야 합니다.
그러나 AutoCheck
존중하지 않는다 GroupIndex
그리고 RadioItem
현재 선택된 항목을 클릭하면 확인이 지워지기 때문입니다.(아마도 이는 VCL의 버그로 간주될 수 있습니다.)
해결 방법은 다음과 같습니다.
세트 AutoCheck
에게 False
, 모든 항목에 0이 아닌 동일한 항목을 할당합니다. GroupIndex
그리고 일반적인 OnClick
클릭한 항목을 확인하는 핸들러는 다음과 같습니다.
procedure TForm1.ItemClick(Sender: TObject);
begin
(Sender as TMenuItem).Checked := True;
end;
또는 사용 행위, 그들에게는 예상대로 작동하는 것 같습니다.
다른 팁
다음과 같은 모든 라디오 그룹 메뉴 항목에 대한 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;
. 제휴하지 않습니다 StackOverflow