Ciao a tutti, ho creato un form in VB6 in cui ho inserito un menù ed un relativo submenù. Ho necessità di aggiungere ed eliminare le voci del submenù durante l'esecuzione del programma. È possibile?![]()
Ciao a tutti, ho creato un form in VB6 in cui ho inserito un menù ed un relativo submenù. Ho necessità di aggiungere ed eliminare le voci del submenù durante l'esecuzione del programma. È possibile?![]()
Ogni voce del menù ha la proprietà name.
Se hai una voce o una sottovoce chiamata per es. "anagrafiche"
basta che nel form contente il menù scrivi:
anagrafiche.enabled=false
oppure
anagrafiche.visible=false
Spero di aver centrato il problema
saluti
Christian
Purtroppo non hai centrato il problema.Devo realizzare un submenù come il menù Preferiti di un bronwser, dove quindi non so quante e quali voci ci sono.
Grazie comunque per l'aiuto
C'era una discussione in cui si parlava di questo ma non sono riuscita a trovarla :master:
Cmq, io ho creato un menù prendendo i dati da un database.
Ti posto il codice, ma prima leggi attentamente quanto sto per scrivere.
Per poter creare dinamicamente voci di menù è necessario creare in fase di progettazione una voce "genitore" e assegnarle index = 0, in modo da avere sempre disponibile la prima voce dell'array di menù da creare.
Nel mio codice questo menù si chiama mElenco(0):
codice:Sub CaricaElenco() ' Carica le voci del db nel menù ' Cancella le voci di menù create da codice ScaricaMenu Dim rsRs As New ADODB.Recordset rsRs.Open ... If rsRs.RecordCount = 0 Then rsRs.Close Set rsRs = Nothing Exit Sub End If Dim intMenu As Integer intMenu = 1 ' Assegna il nome al menù esistente ' e lo rende visibile rsRs.MoveFirst With mElenco(0) .Caption = Trim(rsRs("Nome")) .Tag = rsRs("ID") .Visible = True End With ' Continua a ciclare il recordset ' e creare voci di menù rsRs.MoveNext Do Until rsRs.EOF Load mElenco(intMenu) ' Crea la nuova voce With mElenco(intMenu) .Caption = Trim(rsRs("Nome")) .Tag = rsRs("ID") .Visible = True End With intMenu = intMenu + 1 rsRs.MoveNext Loop rsRs.Close Set rsRs = Nothing End Sub Sub ScaricaMenu() ' Cancella l'elenco delle voci di menù create da codice Dim i As Integer For i = mElenco.UBound To 1 Step -1 Unload mElenco(i) Next i ' Rende invisibile la voce di menù principale mElenco(0).Visible = False End Sub
05.08.2005 - by alka
Auguri all'angelo custode dei moderatori.
se hai bisogno di creare un menu preferiti, (quindi sai già dove di deve trovare), ti consiglio coma ha detto ladyblu, di crearti un menu con index 0 e caricare nuovi menu da quello (poi nell'evento click in base ad index e caption ricavi l'item cliccato)
Ma, se non sai con precisione dove creare, se i menu (padre) da creare sono + di 1, se 6 abbastanza esperto da conoscere le api...ti consiglio di utilizzare le funzioni api dei menu...CreateMenu, GetMenu, GetSubMenu, AppendMenu, InsertMenu....e per la gestione degli eventi il subclassing...
E' una cosa complicata, ma se il problema è complicato,...si usano cose altrettanto complicate...
p.s. in C sarebbe facile, in C# una cavolata