Menüeinträge deaktivieren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Mit Steuerelementen arbeiten - Index

Es ist häufig sinnvoll, Menüeinträge zu deaktivieren, ohne sie aus dem Menü zu entfernen. Ist beispielsweise in einem Texteditor kein Text ausgewählt, sind die Befehle Ausschneiden, Kopieren und Löschen nicht einsetzbar. Das Aktivieren und Deaktivieren von Menüoptionen sollte erfolgen, wenn der Benutzer das Menü auswählt. Sie können eine Menüoption deaktivieren, indem Sie seiner Eigenschaft Enabled den Wert False zuweisen.

Im folgenden Beispiel wird dem Ereignis OnClick des Menübefehls Bearbeiten, das sich in der Menüleiste eines untergeordneten Formulars befindet, eine Behandlungsroutine zugeordnet. Die Routine prüft, ob in der RTF-Komponente RichEdit1 Text markiert ist, und setzt die Eigenschaft Enabled der Befehle Ausschneiden, Kopieren und Löschen. Der Befehl Einfügen wird aktiviert, wenn sich Text in der Zwischenablage befindet.



 procedure TEditForm.Edit1Click(Sender: TObject);
 var
   HasSelection: Boolean;  { Temporäre Variable deklarieren }
 begin
   Paste1.Enabled := Clipboard.HasFormat(CF_TEXT);  {Menüoption Einfügen aktivieren / deaktivieren}
   HasSelection := Editor.SelLength > 0; { True wenn der Text gewählt ist }
   Cut1.Enabled := HasSelection;  { Befehle aktivieren, wenn HasSelection True ist }
   Copy1.Enabled := HasSelection;
   Delete1.Enabled := HasSelection;
 end;



 void __fastcall TMainForm::EditEditClick(TObject *Sender)
 {
   // Menüoption Einfügen aktivieren / deaktivieren
   Paste1->Enabled = Clipboard()->HasFormat(CF_TEXT);
   bool HasSelection = (RichEdit1->SelLength > 0);  // true wenn der Text gewählt ist
   Cut1->Enabled = HasSelection;  // Befehle aktivieren, wenn HasSelection true ist
   Copy1->Enabled = HasSelection;
   Delete1->Enabled = HasSelection;
 }



Die Methode HasFormat des Clipboard-Objekts gibt einen Booleschen Wert zurück, der angibt, ob die Zwischenablage Objekte, Text oder Grafiken in einem bestimmten Format enthält. Durch den Aufruf von HasFormat mit dem Parameter CF_TEXT können Sie feststellen, ob die Zwischenablage Text enthält. Anschließend wird der Befehl Einfügen entsprechend aktiviert oder deaktiviert.

Siehe auch