Domanda

Ho il menu TPOPUP con 3 elementi Setup con le seguenti proprietà.

AutoCheck = True
RadioItem = True
.

E per la prima voce di menu ho impostato anche la proprietà Checked su True, quindi il menu ha almeno 1 elemento selezionato con esso è inizialmente visualizzato.Questo è tutto buono e bene, ma se clicco sull'articolo attualmente selezionato, il controllo (punto) va via e voglio renderlo in modo che almeno 1 elemento nel popup sia selezionato in ogni momento.Come faccio a farlo?

È stato utile?

Soluzione

Gli elementi del gruppo dovrebbero anche avere lo stesso non-zero GroupIndex . Questo, insieme a RadioItem dovrebbe far funzionare gli articoli come una radio Gruppo.

Tuttavia, sembra che AutoCheck non rispetta GroupIndex e proprietà RadioItem, poiché cancellerà il controllo quando si fa clic su una voce attualmente verificata. (Probabilmente, questo potrebbe essere considerato un bug nel VCL.)

Ecco una soluzione alternativa:

Impostare AutoCheck su False, assegnare tutti gli elementi Lo stesso GroupIndexTagCode GeneracoDICODICO e un gestore di OnClick comune per verificare la voce cliccata come questa:

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

o usare Azioni , con loro questo sembra funzionare come previsto.

Altri suggerimenti

È possibile impostare il seguente gestore onClick in tutte le voci del menu Radio Group:

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;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top