Das Ereignis OnPopup behandeln

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Mit Steuerelementen arbeiten - Index

In manchen Situationen müssen die Einträge eines Popup-Menüs angepasst werden, bevor das Menü eingeblendet wird (wie beim Aktivieren oder Deaktivieren normaler Menüoptionen). Bei einem normalen Menü erreichen Sie dies mithilfe des Ereignisses OnClick des zugehörigen Hauptmenüeintrags.

Da ein Popup-Menü jedoch keine übergeordnete Menüleiste hat, muss das Ereignis in der Menükomponente selbst behandelt werden. Genau für diesen Zweck verfügt die Komponente über das Ereignis OnPopup.

So passen Sie die Optionen eines Popup-Menüs an, bevor es angezeigt wird:

  1. Wählen Sie ein Popup-Menü aus.
  2. Weisen Sie seinem Ereignis OnPopup eine Behandlungsroutine zu.
  3. In der Routine können Sie die gewünschten Menüoptionen aktivieren, deaktivieren, ausblenden oder einblenden.

Im folgenden Beispiel wird die unter Menüeinträge deaktivieren beschriebene Ereignisbehandlungsroutine Edit1Click dem Ereignis OnPopup eines Popup-Menüs zugeordnet. Für jede Menüoption kommt eine weitere Programmzeile hinzu.



 procedure TEditForm.Edit1Click(Sender: TObject);
 var
   HasSelection: Boolean;
 begin
   Paste1.Enabled := Clipboard.HasFormat(CF_TEXT);
   Paste2.Enabled := Paste1.Enabled; {Diese Zeile hinzufügen }
   HasSelection := Editor.SelLength <> 0;
   Cut1.Enabled := HasSelection;
   Cut2.Enabled := HasSelection;{Diese Zeile hinzufügen}
   Copy1.Enabled := HasSelection;
   Copy2.Enabled := HasSelection;{Diese Zeile hinzufügen }
   Delete1.Enabled := HasSelection;
 end;



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