Pergunta

Eu tenho TPopup menu com 3 itens de configuração com as seguintes propriedades.

AutoCheck = True
RadioItem = True

e para o primeiro item de menu que eu defini o Checked propriedade True bem assim, o menu tem pelo menos 1 item selecionado com que é apresentada inicialmente.Isso é tudo de bom e de bem, mas se eu clicar sobre o item que está selecionado no momento, a verificação (dot) vai embora e eu quero fazê-lo de modo que pelo menos 1 item no menu de contexto é selecionado em todos os momentos.Como posso fazer isso?

Foi útil?

Solução

Os itens do grupo também devem ter a mesma não-zero GroupIndex.Este, juntamente com RadioItem deve fazer os itens se comportam como um grupo de botões de rádio.

No entanto, parece que AutoCheck não respeita GroupIndex e RadioItem propriedades, uma vez que irá desmarcar a caixa de verificação quando você clica em uma dada item.(Sem dúvida, este poderia ser considerado um erro na VCL.)

Aqui está uma solução alternativa:

Conjunto AutoCheck para False, atribuir a todos os itens, a mesma não-zero GroupIndex e comum OnClick processador de verificar o item clicado como este:

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

Ou uso Ações, com isso parece funcionar conforme o esperado.

Outras dicas

Você pode definir as seguintes manipulador OnClick para todo o seu grupo de botões de rádio Itens de Menu:

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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top