Newsgroup: it.comp.lang.visual-basic
Titolo: Passaggio parametri

Salve a tutti, programmo da poco e ho questo problema:
Dim M As Object
Set M = mnuCessioni
M.Enabled = False
dove mnuCessione è una voce di menu, tutto funziona
ma io devo passare mnuCessioni tramite variabile per esempio:
Dim XX As String
XX = "mnuCessioni"
Dim M As Object
Set M = XX
M.Enabled = False
non riesco a farlo, grazie per l'aiuto.
dp

 ha scritto nel messaggio
news:3c8de3d8...@news.cis.dfn.de...

Forse dico una cavolata, non ho provato e vado per intuizione:
Sub MiaSub(objOggettoMenu As Object)
    Dim M As Object
    Set M = objOggettoMenu
    M.Enabled = False
End Sub
Ciao!
--
Esteban
Hosted by 
www.seber.it
(Remove nonspammare for reply)

 non riesco a farlo, grazie per l'aiuto.
E' solo un problema di logica: una stringa è solo un insieme di caratteri.
Un menù è un oggetto.
E' come dire che la scritta "ddpp" sei tu: non è vero! E' solo il tuo nome.
In VB non esiste modo per referenziare un oggetto dal suo nome (è una
caratteristica solo dei linguaggi di scripting), quindi devi trovare un
altro sistema.
Forse se spieghi meglio il problema ti si può aiutare (è la terza volta oggi
che lo dico: bisogna capire prima di tutto il vero problema).
Ciao

 ma io devo passare mnuCessioni tramite variabile per esempio:
I Menů vengono visti come dei normali controlli presenti nel form, e come
tali compaiono nella collezione dei controlli del form (me.Controls).
Fai cosě:
Private Sub Form_Load()
    Dim Nome As String
    Nome = "mnuDueUno"
    Dim ix As Integer
    For ix = 0 To Me.Controls.Count - 1
        If Me.Controls(ix).Name = Nome Then
            Me.Controls(ix).Enabled = False
        End If
    Next ix
End Sub
Ciao
Ettore Maronese, il Mes
E Cercate sempre le vostre soluzioni sul Sito Comune:
http://www.it-lang-vb.net


Ti ringrazio, ma il problema rimane, se chiamo la sub scrivendoci
dentro il nome del menu funziona, ma io devo passarlo tramite
variabile.
E' questo che non riesco a fare.



Funziona, grazie.

 ha scritto nel messaggio
[snip]
Ok, ho appena fatto una figuraccia :P
Però anche ti non sei stato da meno (hehe) ora ti spiego.
Se si ricorre a questi sistemi secondo me c'è qualche grosso buco nella
logica progettuale dell'applicazione.
Comunque già che ci siamo, visto che sembra una domanda ricorrente (alto
tasso di programmatori della domenica?) possiamo farne una faq.
'-----------------------------------------------------------
'
' Come referenziare un controllo contenuto in un Form
' dato il nome
'
' [FAQ] it.comp.lang.visual-basic
'
'-----------------------------------------------------------
' Autore: Ettore Maronese/Zanetta Fabio
'-----------------------------------------------------------
'
' (1) Copiare il seguente codice in un form vuoto.
' (2) Aggiungere un CommandButton
'-----------------------------------------------------------
'
' ATTENZIONE: funziona solo con controlli contenuti in un
'             form.
'             Se si ricorre a questo occorre verificare
'             la logica progettuale dell'applicazione!
'-----------------------------------------------------------
Private Sub Command1_Click()
    Me.Controls("Command1").Caption = "Test Passed!"
End Sub
E già che ci siamo:
'-----------------------------------------------------------
'
' Come caricare un form dato il suo nome
'
' [FAQ] it.comp.lang.visual-basic
'
'-----------------------------------------------------------
' Autore: Vari (_GUS_, Walker e altri)
'-----------------------------------------------------------
'
' (1) Copiare il seguente codice in un form vuoto.
' (2) Aggiungere due CommandButton.
' (3) Aggiungere un secondo form al progetto.
' (4) Per la seconda proposta occorre aggiungere il
'     MS ScriptControl
'-----------------------------------------------------------
'
' ATTENZIONE: funziona solo richiamando il tipo del form
'             e non variabili form dichiarate
'             con Dim
'
'             Se si ricorre a questo occorre verificare
'             la logica progettuale dell'applicazione!
'-----------------------------------------------------------
Private Sub Command1_Click()
    ' ATTENZIONE:
    ' -----------
    '
    ' (1) NON è possibile creare istanze multiple del form!
    ' (2) Caricare il form anche con Load Form2 provoca
    '     comportamenti inaspettati
    '
    Dim frm As Form
    Set frm = Forms.Add("Form2")
    frm.Show
End Sub
Private Sub Command2_Click()
    ' ALTERNATIVA: (proposta da Walker)
    ' ------------
    ' Usando il Microsoft ScriptControl
    '
    ' ATTENZIONE:
    ' -----------
    '
    ' Ancora non è possibile creare istanze multiple del form
    ' ma così VB non fa confusione come con l'esempio sopra.
    '
    ' Le tre possibilità qui sotto accedono tutte alla stessa
    ' istanza di Form2.
    Dim frm As Form
    ScriptControl1.AddObject "Form2", Form2
    ' Possibilità 1
    Set frm = ScriptControl1.Eval("Form2")
    frm.Show
    ' Possibilità 2
    Call ScriptControl1.ExecuteStatement("Form2.Show")
    ' Possibilità 3
    Form2.Show
End Sub

 End Sub
hehee.. W Zanna :))
Ettore Maronese, il Mes

 logica progettuale dell'applicazione.
Scusa se sono duro, ma non riesco proprio a capire perchè c'è un errore
nella logica progettuale dell'applicazione..
me lo spieghi come se fossi un bambino di 2 anni?
Grazie
Ciao

 me lo spieghi come se fossi un bambino di 2 anni?
Non è così facile :)
Dimmi perchè mai dovresti ricorrere a
Me.Controls("Command1").Caption = "Test Passed!"
Anzichè usare direttamente
Command1.Caption = "Test Passed!"
L'unico motivo è che non sai il nome di "Command1".
Ma come puoi non saperlo?
Stai scrivendo un metalinguaggio?
Ciao

 Stai scrivendo un metalinguaggio?
Penso di aver capito..
Grazie