Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Untermenü zur Laufzeit erzeugen (https://www.delphipraxis.net/6319-untermenue-zur-laufzeit-erzeugen.html)

eddy 6. Jul 2003 17:34


Untermenü zur Laufzeit erzeugen
 
Hallo Leute,

weiß jemand, wie man ein Untermenü zur Laufzeit erzeugen kann?

Menü-Punkter erzeugen ist kein Problem, aber wie teile ich Delphi mit, daß der Menüeintrag ein Untermenü ist.

mfg
eddy

JoelH 6. Jul 2003 18:21

Re: Untermenü zur Laufzeit erzeugen
 
hmm, du musst ihm das richtige ParentMenue zuordnen !

Alexander 6. Jul 2003 19:58

Re: Untermenü zur Laufzeit erzeugen
 
Meinst du von einem PopupMenu oder einfach nur Tmenu?
Wenn ja probier das hier mal aus:
Delphi-Quellcode:
var
  NeuesMenuItem, NeuesSubmenue : TMenuItem;
begin
 NeuesSubmenue := TMenuItem.Create(Self);
 NeuesSubmenue .Caption := 'hallo';
 menuitem.Add(NeuesSubmenue);
//für Menu-Item einfach das Item auswählen, von dem NeuesSubmenue abhängen soll
end;
so in der Art dürfte es funktionieren. Ist ungetestet

eddy 6. Jul 2003 21:11

Re: Untermenü zur Laufzeit erzeugen
 
Hallo alexander,

danke, genau so legt man einen neuen Menüpunkt an.

Doch wie mache ich daraus dann ein Untermenü, welchem dann wieder Menüpunkte zugeordnet werden können?

@JoelH

ParentMenue ????

mfg
eddy

Tom 6. Jul 2003 22:12

Re: Untermenü zur Laufzeit erzeugen
 
Delphi-Quellcode:
  vsPopupAdd := TMenuItem.Create( ... );
  vsPopupAdd.Caption := 'Eintrag hinzufügen ...';
  vsPopup.Items.Add( vsPopupAdd );

  vsPopupAddGroup := TMenuItem.Create( AOwner );
  vsPopupAddGroup.Caption := '... Gruppe';
  ...
  vsPopupAdd.Add( vsPopupAddGroup );
Alles klar?

Alexander 7. Jul 2003 07:21

Re: Untermenü zur Laufzeit erzeugen
 
genau wie ich das oben gesagt habe??
Du musst nur für MenüITem das passendes MenuItem angeben?

Tom 7. Jul 2003 08:34

Re: Untermenü zur Laufzeit erzeugen
 
Ja, aber
- Dir wurde noch nicht geglaubt :wink:
- Doppelt hält besser :roll:

Alexander 7. Jul 2003 17:14

Re: Untermenü zur Laufzeit erzeugen
 
klar hält doppelt besser...
war ja auch nicht böse gemeint. Wollte nur wissen was an meinem Code unverständlicher war.

eddy 20. Jul 2003 09:26

Re: Untermenü zur Laufzeit erzeugen
 
Hallo alexander & Tom,

vielen Dank für Eure Hilfe. Doppelt hält besser und letzt endlich habe auch ich es geschnallt.

Ein Menüpunkt wird automatisch zur Gruppe, wenn man den nächsten Menüpunkt dort hineinlegt.

Hier noch mein auf Euren Anweisungen basierender Testcode:

Delphi-Quellcode:
procedure TFTermin.BitBtn1Click(Sender: TObject);
var
  NeuesMenuItem,
  NeuesSubmenue : TMenuItem;
begin
  //Gruppe hallo anlegen
  NeuesSubmenue := TMenuItem.Create(self);
  NeuesSubmenue.Name := 'hallo1';
  NeuesSubmenue.Caption := 'hallo';
  // test2 vorhandener Menüpunkt TMenuItem
  test2.Add(NeuesSubmenue);

  //Menüpunkt hallo2 anlegen
  NeuesMenuItem := TMenuItem.Create(self);
  NeuesMenuItem.Name := 'hallo2';
  NeuesMenuItem.Caption := 'hallo eins tiefer';
  NeuesSubmenue.Add( NeuesMenuItem );
end;
mfg
eddy

[edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit]

Aike 9. Okt 2004 21:16

Re: Untermenü zur Laufzeit erzeugen
 
Ich versuche gerade, die SubMenü-Einträge aus einer String-Liste zu erzeugen. Leider wird mir - aus mir unerklärlichen Gründen - eine "Menü zweimal vorhanden."-Fehlermeldung zurückgeworfen.

Delphi-Quellcode:
var NeuesMenuItem: TMenuItem;
    i:integer;
begin
  NeuesMenuItem := TMenuItem.Create(self);

  try
    for i:=0 to 1 do
    begin
      NeuesMenuItem.Name := 'Komponente_'+IntToStr(i);
      NeuesMenuItem.Caption := Accounts.Strings[i]; //Accounts ist eine StringListe

      AccountWaehlen.Add(NeuesMenuItem); //AccountWaehlen ist das SubMenü, in die die Accounts eingetagen werden sollen
    end;
  finally
    //
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr.
Seite 1 von 2  1 2      

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