Entwickler-Ecke

Sonstiges (Delphi) - Fehler beim TPopupMenu Item Hinzufügen


mexx - Di 10.07.07 10:37
Titel: Fehler beim TPopupMenu Item Hinzufügen
Ich möchte ein Popup erzeugen, welches als Items die Items hat, wie ein anderes PopUp hat.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
...
var VirtualSearchPopUp: TPopupMenu;
...
VirtualSearchPopUp := TPopupMenu.Create(nil);
with VirtualSearchPopUp do begin
 for i:=1 to AppForm.SearchDataMenu.Items.Count do begin
  Items.Add(AppForm.SearchDataMenu.Items[i]);
 end;


Fehlermeldung: Menü zweimal eingefügt

Die Meldung ist ja so nicht richtig. Was mache ich falsch?


Stefan.Buchholtz - Di 10.07.07 11:04

Die Meldung ist schon genau richtig - du fügst einen Menüeintrag (TMenuItem), der schon in einem Menü ist, in ein anderes Menü ein. Ein Menüeintrag kann nicht in mehreren Menüs gleichzeitig sein. Du musst deswegen einen neuen Eintrag erzeugen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var VirtualSearchPopUp: TPopupMenu; 
            menuItem: TMenuItem; 
...  
VirtualSearchPopUp := TPopupMenu.Create(nil);  
with VirtualSearchPopUp do 
begin  
  for i:=0 to AppForm.SearchDataMenu.Items.Count - 1 do 
  begin
    menuItem := TMenuItem.Create(VirtualSearchPopup);
    menuItem.Caption := AppForm.SearchDataMenu.Items[i].Caption;
    menuItem.OnClick := AppForm.SearchDataMenu.Items[i].OnClick;
    // weitere Properties falls nötig kopieren
    Items.Add(menuItem);  
  end
end;


Stefan