Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Popup-Menu dynamisch an ListView's, ListView erkennen ? (https://www.delphipraxis.net/137776-popup-menu-dynamisch-listviews-listview-erkennen.html)

hoika 28. Jul 2009 15:26


Popup-Menu dynamisch an ListView's, ListView erkennen ?
 
Hallo #,

ich hänge dynamisch ein PopupMenu (mit Untermenüs)
an ein TListView.
Wie komme ich in der OnClick-Methode jetzt das das ListView am besten ran.

- "hochhangeln" beginnend beim Sender(TMenuItem), bis das TListView gefunden wurde
- beim Anpappen des Popup an das ListView sich das irgendwie merken
z.B. in ein TList und den List-Index im Menu-Tag speichern

Wie würdet Ihr das machen ?


Heiko

Satty67 28. Jul 2009 15:46

Re: Popup-Menu dynamisch an ListView's, ListView erkennen ?
 
Geht das nicht:
Delphi-Quellcode:
TPopUpMenu(Sender).PopupComponent
Bei Untermenüs muss man u.U. zum ersten PopUpmenü hochhangeln.

hoika 28. Jul 2009 15:58

Re: Popup-Menu dynamisch an ListView's, ListView erkennen ?
 
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

hoika 28. Jul 2009 20:25

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

hat sich erledigt,
siehe hier

http://www.delphipraxis.net/internal...t.php?t=162123


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz