PDA

Vollständige Version anzeigen : mehrere Menüs zu einem einzigen Kontextmenü kombinieren


Susi
05.07.2001, 12:27
Hallo,
mein Problem besteht darin, dass ich einen TreeView habe, dessen Nodes sich in 3 verschiedene Kategorien einteilen lassen, für die jeweils verschiedene Kontextmenüs vorgesehen sind.
Die Kontextmenüs bestehen jeweils aus bis zu acht Einträgen, wobei die ersten drei aber immer dieselben sind.

Ich würde gerne vier verschiedene Menüs über den Menü-Editor definieren.
Ein allgemeines, das die drei Einträge enthält, die immer gleich sind und drei verschiedene für die unterschiedlichen Kategorien.
Bei Click mit der rechten Maustaste will ich dann das "allgemeine" Menü mit dem entsprechenden Menü für die Kategorie, der der angeclickte Node angehört, kombinieren.

Dabei sollen keine Untermenüs verwendet werden. Bei Click mit rechts sollen sofort sämtliche möglichen Menüpunkte aufgepoppt werden.

Gibt´s da einen Trick? Das muss doch irgendwie gehen.

Gruss,
Susi

Stefan Kulpa
05.07.2001, 17:00
<font face="Verdana" size="2">Hallo Susi,

das geht leider nicht. Alternativ kannst Du jedoch zur Laufzeit dynamisch die Menüs erzeugen. Dazu erzeugst Du einen Menüeintrag ohne Caption und mit beispielsweise dem Namen mnuMain. Darunter eine Ebene nach "rechts" erstellst Du dann die vier statischen Einträge beispielsweise mit Namen "mnuSub" und den Indices 0 bis 3 und Visible = True.

mnuMain
mnuSub(0)
mnuSub(1)
mnuSub(2)
mnuSub(3)

Zur Laufweit kannst Du dann dieses Menü beliebig erweitern; Beispiel:</font>

<PRE><FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Sub</FONT> Form_MouseDown(Button <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Integer</FONT>, Shift <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Integer</FONT>, _
X <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Single</FONT>, Y <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Single</FONT>)
<FONT COLOR=#008000>'** Test ....</FONT>
<FONT COLOR=#000080>If</FONT> Button = vbRightButton <FONT COLOR=#000080>Then</FONT>
<FONT COLOR=#000080>Static</FONT> iValue <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Integer</FONT>
iValue = iValue + 1
<FONT COLOR=#000080>If</FONT> iValue > 4 <FONT COLOR=#000080>Then</FONT> iValue = 1
SetupSubMenu iValue
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Sub</FONT>
<FONT COLOR=#808080><HR></FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Sub</FONT> SetupSubMenu(iType <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Integer</FONT>)

<FONT COLOR=#000080>Dim</FONT> i <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#008000>'** Ggf. "alte" Menüpunkte entfernen</FONT>
<FONT COLOR=#000080>If</FONT> mnuSub.<FONT COLOR=#000080>UBound</FONT> > 5 <FONT COLOR=#000080>Then</FONT>
<FONT COLOR=#000080>For</FONT> i = mnuSub.<FONT COLOR=#000080>UBound</FONT> <FONT COLOR=#000080>To</FONT> 5 <FONT COLOR=#000080>Step</FONT> -1
Unload mnuSub(i)
<FONT COLOR=#000080>Next</FONT>
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>
<FONT COLOR=#008000>'** Neue Menüpunkte dynamisch erzeugen</FONT>
<FONT COLOR=#000080>For</FONT> i = 5 <FONT COLOR=#000080>To</FONT> 10
<FONT COLOR=#008000>'** Menüpunkt erzeugen</FONT>
Load mnuSub(i)
<FONT COLOR=#008000>'** Je nach Wahl Menüpunkt hinzufügen</FONT>
Select Case iType
Case 1: mnuSub(i).Caption = "Type I Eintrag " & i
Case 2: mnuSub(i).Caption = "Type II Eintrag " & i
Case 3: mnuSub(i).Caption = "Type III Eintrag " & i
Case 4: mnuSub(i).Caption = "Type IV Eintrag " & i
<FONT COLOR=#000080>End</FONT> Select
<FONT COLOR=#000080>Next</FONT>
<FONT COLOR=#008000>'** Menü aufrufen</FONT>
PopupMenu mnuMain

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Sub</FONT>
<FONT COLOR=#808080></FONT>

</FONT></PRE>

<font face="Verdana" size="2">HTH</font>