Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Popup-Menu dynamisch an ListView's, ListView erkennen ?

  Alt 28. Jul 2009, 16:58
Hallo,

das Hochhangeln klappt bei mir nicht

Delphi-Quellcode:
{ xls }
    MenuItem:= TMenuItem(Sender);
   { Export to }
    MenuItem:= MenuItem.Parent;
   { PopupMenu }
    PopupMenu:= TPopupMenu(MenuItem.Parent);
    ListView:= TListView(PopupMenu.PopupComponent);
Das Menu besteht aus einem TMenuItem(Export to) als SubMenu
und darunter kommt das xls

Delphi-Quellcode:
  Export nach
    |- xls

Das ListView ist NIL ;(
In der Hilfe steht zu Parent

Wenn es sich bei dem Menüeintrag um einen Eintrag im Hauptmenü oder um einen übergeordneten Eintrag eines Popup-Menüs handelt, ist Parent mit den Wert der Eigenschaft Items des betreffenden Menüs identisch.

Das kapier ich überhaupt nicht !!!


#Update:#
PopupComponent habe ich jetzt beim Erzeugen des Popupmenus gesetzt.
Es klappt trotzdem nicht., ListView bleibt NIL ;(

Hier der Add-Code

Delphi-Quellcode:
procedure TForm_Base.SetExportPopMenu;
var
  iComponent : Integer;
  Component : TComponent;
  ListView : TListView;
  PopupMenu : TPopupMenu;
  ExportSubMenu : TMenuItem;
  MenuItem : TMenuItem;
  ListViewMenuItem : TListViewMenuItem;
begin
  for iComponent:= 0 to ComponentCount-1 do
  begin
    Component:= Components[iComponent];
    if Component is TListView then
    begin
      ListView:= TListView(Component);
      if ListView.PopupMenu=NIL then
      begin
        PopupMenu:= TPopupMenu.Create(ListView);
        ListView.PopupMenu:= PopupMenu;
      end;
      ListView.PopupMenu.PopupComponent:= ListView;

     { 7090, "Export nach" }
      ExportSubMenu:= TMenuItem.Create(Self);
      ExportSubMenu.Caption:= LS(7090);
      ListView.PopupMenu.Items.Add(ExportSubMenu);

     { xls }
      MenuItem:= TMenuItem.Create(Self);
      MenuItem.Caption:= LoadStr(7881);
      MenuItem.Tag:= -1;
      MenuItem.OnClick:= DoExportListViewTo_XLS;
      ExportSubMenu.Add(MenuItem);

      ListViewMenuItem:= TListViewMenuItem.Create;
      ListViewMenuItem.MenuItem:= MenuItem;
      ListViewMenuItem.ListView:= ListView;
      ListViewMenuItemList.Add(ListViewMenuItem);

     { - }
      MenuItem:= TMenuItem.Create(Self);
      MenuItem.Caption:= '-';
      ListView.PopupMenu.Items.Add(MenuItem);

     { to close }
      MenuItem:= TMenuItem.Create(Self);
     { 5040, "&Beenden" }
      MenuItem.Caption:= LS(5040);
      ListView.PopupMenu.Items.Add(MenuItem);
    end;
  end;
end; { SetExportPopMenu }
Heiko
Heiko
  Mit Zitat antworten Zitat