Frage

Ich habe ein POPUP-Menü mit 3 Elementen mit den folgenden Eigenschaften eingerichtet.

AutoCheck = True
RadioItem = True

und für den ersten Menüpunkt stelle ich die ein Checked eigentum zu True außerdem wird das Menü, in dem mindestens 1 Element ausgewählt ist, zunächst angezeigt.Das ist alles gut und gut, aber wenn ich auf das aktuell ausgewählte Element klicke, verschwindet das Häkchen (Punkt) und ich möchte es so gestalten, dass immer mindestens 1 Element im Popup ausgewählt ist.Wie mache ich das?

War es hilfreich?

Lösung

Die Elemente in der Gruppe sollten auch denselben Wert ungleich Null haben GroupIndex.Dies zusammen mit RadioItem sollte dafür sorgen, dass sich die Elemente wie eine Funkgruppe verhalten.

Es scheint jedoch, dass AutoCheck respektiert nicht GroupIndex und RadioItem eigenschaften, da die Prüfung gelöscht wird, wenn Sie auf ein aktuell überprüftes Element klicken.(Dies könnte wohl als Fehler in der VCL angesehen werden.)

Hier ist eine Problemumgehung:

Setzen AutoCheck zu False, weisen Sie allen Elementen den gleichen Wert ungleich Null zu GroupIndex und eine gemeinsame OnClick handler, um das angeklickte Element wie folgt zu überprüfen:

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

Oder verwenden Sie Aktionen, mit ihnen scheint dies wie erwartet zu funktionieren.

Andere Tipps

Sie können den folgenden OnClick-Handler auf alle Ihre Menüpunkte für Radiogruppen einstellen:

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top