Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Popupmenü kopieren / mehrfach verwenden


Currywurst - Sa 18.01.03 20:51
Titel: Popupmenü kopieren / mehrfach verwenden
also ich will ein komplettes popupmenü ein zweites mal verwenden, aber als untermenü in einem anderen...

das popupmenü verändert sich aber zu laufzeit, entsprechend muss auch die kopie immer aktuell bleiben, also es sollte das menü am besten wirklich nur woanders gezeigt werden und nicht wirklich kopiert werden jedesmal

wie stell ich das am besten an?


(das gleiche hab ich übrigens auch schon hier [http://spotlight.de/zforen/dlp/m/dlp-1042831952-18390.html] gepostet)


Manfred - Sa 18.01.03 22:40

Hi!
Wie wär's, wenn Du das Menü zur Laufzeit erzeugst? Dann ist der Variablilität keine Grenze gesetzt!


Delete - Sa 18.01.03 22:51

Also mit GetMenu bzw. mit GetSubMenu kommst du schon mal an das Handle ran, wie es dann weitergeht kann ich dir im Moment auch nicht sagen. Interessant wären wohl noch die API's SetMenu, Appendmenu und ModifyMenu.

So jetzt bastel dir was draus. :mrgreen:


Currywurst - So 19.01.03 11:13
Titel: ok, hab mir jetzt was zusammengemogelt
im popupereignis des zweiten:


Quelltext
1:
2:
PopupMenu2.Items.Insert(0, PopupMenu1.Items);
PopupMenu2.Items[0].Caption:='Popupmenu1';


weil ich das nich zweimal machen darf setze ich nen tag

Quelltext
1:
  PopupMenu2.Items[0].Tag:=-1;                    

und prüfe das vor dem einfügen, und lösche es ggf.:

Quelltext
1:
2:
3:
4:
procedure TForm1.ClearPopupmenu1Copy;
begin
  if PopupMenu2.Items[0].Tag = -1 then PopupMenu2.Items.Delete(0);
end;


und das als eigene proc weils auch im form destroy aufgerufen werden muss, weil sonst wohl beide menüs versuchen die selben items freizugeben, was natürlich schief geht

meint ihr is ok so??