Hallo zusammen,
hier hatte ich ja bereits nach dem Popup gesucht und habe auch einen
entsprechenden Link gefunden, der mir weiter geholfen hat.
Ich nutze jetzt die Funktion
AddMenu() vom Interface
INTAProjectMenuCreatorNotifier, die ich per
IOTAProjectManager.AddMenuCreatorNotifier() hinzufüge. Das funktioniert auch alles bestens: Das Menü wird erzeugt, korrekt angezeigt und die OnClick-Events funktionieren bestens.
Allerdings benötigt das erzeugen des Menüs ein paar Millisekunden. Das ist beim Rehtsklick nur ein bisschen störend, allerdings wird das Menü auch beim Tastendruck erzeugt. Wenn ich also in der Dateiauswahl ein paar Tasten drücke um schnell zu einer Datei springen zu können, erzeugt Delphi bei jedem Tastendruck das Menü neu, weil immer die Funktion
AddMenu() aufgerufen wird. Als Parameter hat diese leider nur den Ident-String, ich weiß also nur auf was für einem Dateityp (Source- oder Projektdatei) der Cursor gerade steht.
Kann man irgendwie verhindern, dass das Menü dann immer erzeugt wird?
Ich habe auch versucht, das Menü nur einmalig zu erzeugen und die Variable dann beim
AddMenu() zurückzugeben, allerdings scheint Delphi irgendwann ein
.Free aufzurufen - gibt es eine Funktion mit der ich eine Deep-Copy meines Menüs erzeugen kann die dann evtl. schneller ist als das dynamische erzeugen?