문제

다음 속성을 가진 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;
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top