[VB6] Dynamisch menu's en submenu's vullen

Pagina: 1
Acties:
  • 225 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Het volgende probleem: ik wil dynamisch menu's en submenu's aan kunnen maken die ik wil maken a.h.v. een tekstfile met de volgende opbouw:

C:\Documents and Settings\tve\Favorieten
C:\Documents and Settings\tve\Favorieten\Koppelingen
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test\Media
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test\Media\123.url
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test\Media\Test1.url
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test\Media\MSN.com.url
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test\Media\Microsoft.url
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test\Media\Internet-radiogids.url
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test\Media\de.url
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test\Media\ABC.url
C:\Documents and Settings\tve\Favorieten\Koppelingen\Test\Media\Media

Het menu moet dus dezelfde structuur hebben als de folderstructuur van de tekstfile.
Nu weet ik wel dat het met InsertMenuItem moet (het invoegen van de menu's), maar hoe lijdt ik nu af welke regels onder welk menu moeten?
En kan ik ook dynamisch een Tag toevoegen aan het item?
En hoe roep ik het event Click aan?
Het zijn idd wat vraagjes, maar ik heb al alles nagezocht (GoT, Google, verschillende VB-sites) en nog niks gevonden wat ik kan gebruiken.

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 02-10 15:26

LauPro

Prof Mierenneuke®

Ik heb dit wel is gebruikt maar ik kan je vertellen dat dit niet handig is - maar dat terzijde ;).

Je hebt 1 menu-item nodig die je dmv een index gaat 'uitbreiden'. Je geeft elk menu dat een niveau lager moet een nieuwe 'parent' en zo bouw je dan je menu op. Is het niet handiger om en Treeview te gebruiken?

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Is misschien een idee, maar ik hou de Treeview liever nog ff achter de hand. Zo'n menu ziet iets gelikter uit :P

Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Niemand een fris idee op de vroege morgen??

Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
volgens mij kan het niet. Het menu is read-only en kan alleen in design mode veranderd worden

Correct me if I'm wrong

p.s. zoek anders eens naar SmartMenuXP oid. Is een menustructuur met Xp-look. Daarmee kun je wel dynamisch menu's maken

[ Voor 40% gewijzigd door pkouwer op 17-12-2002 09:23 ]


Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 14:03

mulder

ik spuug op het trottoir

Het is gewoon mogelijk en zeker op Google te vinden. Je moet een item aanmaken, deze kun je runtime loaden en een index toewijzen. De het event dat er aanhangt krijgt de index van het item mee.

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
Don Facundo schreef op 17 December 2002 @ 09:23:
Het is gewoon mogelijk en zeker op Google te vinden. Je moet een item aanmaken, deze kun je runtime loaden en een index toewijzen. De het event dat er aanhangt krijgt de index van het item mee.
Ja sorry, had effe wat in VB geprogd maar verkeerd. 8)7 8)7 :Z

Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Het is volgens mij wel mogelijk om dynamisch menu's aan te maken, maar hoe voeg ik die nieuwe items toe, aangezien ik niet in design-time deze menu's kan aanmaken.
Misschien met Form.Controls.Add("VB.Menu", "Test")?? Dit werkt op dit moment bij mij niet, terwijl Menu wel aanwezig is in VB.

Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 27-09 00:06

ZaZ

Tweakers abonnee

Je moet ze gewoon in een array proppen zoals Don Facundo al zei, dan kan het.

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Ja, maar dat lost mijn probleem niet op: ik weet namelijk van te voren niet hoeveel submenu's ik nodig heb, aangezien de tekstfile kan veranderen. Dus ik moet tijdens runtime nieuwe menu's declareren en toevoegen.

Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 27-09 00:06

ZaZ

Tweakers abonnee

Mottebelke schreef op 17 December 2002 @ 11:20:
Ja, maar dat lost mijn probleem niet op: ik weet namelijk van te voren niet hoeveel submenu's ik nodig heb, aangezien de tekstfile kan veranderen. Dus ik moet tijdens runtime nieuwe menu's declareren en toevoegen.
Dat kan. Het enige wat je hoef te doen is ze de index '0' meegeven, dan kan je daarna nieuwe 'loaden'.

nog ff een simpel voorbeeldje:

maak een menu aan met de naam mnuBlabla geef en als index 0 op

code:
1
2
3
4
Dim i As Integer
For i = 1 To InputBox("hoeveel menu's wil je?") - 1
  Load mnuBlabla(i)
Next i


of bedoel je dit niet?

[ Voor 26% gewijzigd door ZaZ op 17-12-2002 11:28 ]

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Nee, want als ik dan een submenu's wil toevoegen heb ik een nieuw menu-array nodig, dus dat gaat niet werken. Voor 1 menu zou dit wel kunnen, maar dat heb ik niet.

Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Ok, het menu en de submenu's zijn aangemaakt. Dat met Next, FirstSibling, etc. werkte erg goed.
Maar nu is het probleem dat ik ook het Click event van het aangemaakte menuitem wil kunnen veranderen. Is er een manier om dit Click event aan te roepen en daaronder een functie te plaatsen die een actie uitvoert??

Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 12:40

Crazy D

I think we should take a look.

De menu_Click event pakken, en aan de hand van de Index bepalen welke functie je gaat aanroepen? Of snap ik niet wat je bedoelt?
code:
1
2
3
4
5
6
7
8
9
Private Sub MijnMenu_Click(Index As Integer)
    If Index = 1 Then
        Call doeIets()
    ElseIf Index = 2 Then
        Call doeOokIets()
    Else
        Call doeIetsAnders()
    End If
End Sub

:?

[ Voor 2% gewijzigd door Crazy D op 20-12-2002 14:34 . Reden: End Sub hoort er ook bij :P ]

Exact expert nodig?


Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Nee, als het zo makkelijk was had ik het zelf wel bedacht, maar het ligt toch iets anders.

Ik heb namelijk een array gebruikt voor het aanmaken van de submenu's:

Set Submenu(1) = CreateMenu()
Set Submenu(2) = CreateMenu()

En daarna InsertMenuItem(Submenu(1), 0, 1, MenuItemInfo)

Dus de functie zoals jij die voorstelt zal niet werken.

Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Ik heb even weer een oud probleem opgepakt. Het menu is aangemaakt, maar nu moet ik voor ieder item ook een Click-event hebben. Dat is vrij lastig aangezien ik werk met een array voor de menu's en submenu's. Misschien dat iemand weet hoe je dit tijdens runtime kunt oplossen.

Acties:
  • 0 Henk 'm!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 17:20

Sponge

Serious Game Developer

hmm, normaal los je dat op door een control array te gebruiken, zodat je een index krijgt, en dus bij de event:

Object_Click(index as integer,x as single,y as single)

Maar aangezien je met API de menu's gemaakt hebt, weet ik niet echt een methode, op SubClassing na.

Ik denk dat je het beste evne op www.pscode.com kunt kijken, en moet zoeken op "Icon menu" (oid). Er zijn daar namenlijk een aantal menu's met allemaal icon's die zover ik me herinner ook allemaal API gebruiken... misschien een kijkje waard :)

Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Nou, ik heb gezocht, maar ik kan niets vinden voor een Click-event of het toewijzen van een Tag. Weet iemand iets anders?? :'(

Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 12:40

Crazy D

I think we should take a look.

Ah ok je maakt ze met API functies aan. Dan zul je moeten gaan subclassen, als ik het goed heb onthouden moet je de WM_COMMAND message afvangen, en de wParam parameter gebruiken.

Exact expert nodig?


Acties:
  • 0 Henk 'm!

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 03-10 15:17
Ok, ik heb ff in de Help gekeken en er is idd wat mee te beginnen, maar zou je misschien een voorbeeldje kunnen geven van dat afvangen, want dat gedeelte volg ik ff niet.

Acties:
  • 0 Henk 'm!

  • JohanDM
  • Registratie: Augustus 2002
  • Laatst online: 16-07-2021

JohanDM

Optimist

Op www.pscode.com vind je o.a. dkSubClassing dit is code voor subclassing van windowed controls/forms.

Een menu is op zich geen windowed control maar hij stuurt wel zijn events naar de control/form waar hij aan gebonden is. Als je menu dus aan je form hangt, moet je dus de hWnd van je form gebruiken voor subclassing

"Two things are infinite: the universe and stupidity. And the former I'm not so sure about." -- Albert Einstein


Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb de code voor dit probleem hier al eens gepost. Dus als je goed zoekt :). Het was in ieder geval een heeeeele waslijst, maar hiermee kon je wel submenu's structuren aanmaken, en je kreeg het ID van het aangeklikte item terug.

Als het niet meer te vinden is, dan post ik het nog wel eens.

Edit: Al gevonden: zie hier

[ Voor 16% gewijzigd door Verwijderd op 06-01-2003 19:07 . Reden: Link toegevoegt ]

Pagina: 1