Visualizzazione dei risultati da 1 a 9 su 9

Discussione: VB6 - Editor Menu

  1. #1

    VB6 - Editor Menu

    Ciao
    vorrei rendere il mio editor di menù un po' dinamico, in base ad una tabella database, ma mi manca un passaggio.....

    io pensavo di fare un ciclo in cui leggo le azioni da abilitare/disabilitare in base all'utente collegato, però non so come passare utilizzare l'oggetto menu scritto in tabella.
    Ad esempio:

    codice:
        rs1.Source = "SELECT * FROM SECLEVEL WHERE FORM_NAME='MDIMain.frm' "
        rs1.Open
        Do While Not rs1.EOF
            If Trim(rs1("USER_GROUP_1")) = CurrentUserGroup Then
                rs1("ID_ACTION").Enabled = False 
            End If
            
            rs1.MoveNext
        Loop
        rs1.Close
    la stringa in grassetto è ovviamente sbagliatissima, ma è appunto il mio problema!!!
    in ID_ACTION c'è scritto il nome dell'azione del menu, ma come faccio ad utilizzarlo???

    grazie

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Mmmmm.....

    Editor di menu?

    rileggi il tuo post... E' incomprensibile

  3. #3
    Ci riprovo.....
    Ho un form MDI con menù creato tramite l'editor di menù e vorrei abilitare/disabilitare le diverse voci che ho creato in base ad una tabella del database legata all'utente collegato.

    In un campo della tabella ho il nome dell'azione (definita nell'editor) ma non so come utilizzarla in VB6 per poterla, ad esempio, disabilitare.

    Ovvio che non posso scriovere un'istruzione simile
    codice:
    rs1("ID_ACTION").Enabled = False
    ma come la scrivo???

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da antocasi
    Ci riprovo.....
    Ho un form MDI con menù creato tramite l'editor di menù e vorrei abilitare/disabilitare le diverse voci che ho creato in base ad una tabella del database legata all'utente collegato.
    Appunto. L'editor di menu è un'altra cosa...

    Originariamente inviato da antocasi
    In un campo della tabella ho il nome dell'azione (definita nell'editor) ma non so come utilizzarla in VB6 per poterla, ad esempio, disabilitare.

    Ovvio che non posso scriovere un'istruzione simile
    codice:
    rs1("ID_ACTION").Enabled = False
    ma come la scrivo???
    Se non spieghi le regole di implementazione che hai attuato non ti si può aiutare molto, visto che solo tu le conosci.
    Ma almeno adesso si capisce di cosa parli, per cui a grandi linee posso solo dirti che, secondo me, il campo ID_ACTION dovrebbe essere convenientemente di tipo byte per cui può essere solo 0 o 1 in cui:
    - 0 sta per disabilitato
    - 1 sta per abilitato

    Quando dovrai abilitare/disabilitare una voce di menu dovrai semplicemente fare:

    codice:
    mnuMyItem.Enabled = rs1("ID_ACTION").Value

  5. #5
    Mettere un campo byte potrebbe essere utile, ma a me serve prima leggere il nome del controllo e poi abilitarlo/disabilitarlo.

    Io ho una tabella all'interno della quale ho inserito inome di ciascun controllo (Command1, Command2, etc) di ciascun form, il tipo del controllo.

    All'apertura del form vado a leggere da questa tabella tutti i controlli che devono essere disabilitati.

    codice:
        rs1.Source = "SELECT * FROM SECLEVEL WHERE FORM_NAME='MDIMain.frm' "
        rs1.Open
        Do While Not rs1.EOF
            rs1("ID_ACTION").Enabled = False   
            rs1.MoveNext
        Loop
        rs1.Close

    Quello che non riesco a fare (ed evidentemente non riesco neanche a spiegare ) è come fare la riga in grassetto.
    Cioè io vorrei utilizzare il nome del controllo presente nella tabella per impostare la proprietà Enabled.
    L'unica alternativa che ho trovato finora è di scrivere nel codice tutti i nomi dei controlli, ma non mi pare bello.

    PS: Nel frattempo sto ampliando l'ambito del problema, in modo che valga sia per i menù che per i pulsanti dei vari form.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Puoi esaminare la collezione Controls e controllare il nome di ciascun controllo, comprese le singole voci di menu.
    codice:
        Dim oCtrl As Control
        For Each oCtrl In Controls
            Debug.Print oCtrl.Name
        Next

  7. #7
    Grazie!!!!
    non ci avevo proprio pensato

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da antocasi
    Grazie!!!!
    non ci avevo proprio pensato
    Certo che se parti dall'Editor di Menu per poi finire al CommandButton... è dura capirti.

    Solo nell'ultimo post si è capito che tu metti i nomi dei controlli in una tabella.
    Magari se lo spiegavi prima...

    Va beh, non è mai troppo tardi.


  9. #9
    in effetti ho iniziato questo topic pensando di fare una cosa, poi la cosa si è ingrandita e l'ho estesa a tutti i controlli.

    poi dopo l'ultimo aiuto ho capito che potevo anche scrivere così:
    codice:
    formName.Controls(Trim(rs1("ID_ACTION"))).Enabled = False
    grazie a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.