+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

[VB6]Passaggio variabile da form a modulo

  1. #1
    Drake88 non  in linea Novello
    Salve a tutti. Cercando sul forum e su MSDN non ho trovato risposta al mio problema...
    Cerco di esporvi il problema:
    Ho un modulo che esegue delle operazioni, a seconda della variabile X fa determinate operazioni.
    Select Case X
    Case is ="1"
    Operazione
    Case is ="2"
    Operazione
    ecc
    
    Il valore della variabile X viene assegnato nel form1, a seconda di cosa l'utente sceglie come opzione.

    Il mio problema e che quando avvio il tutto, la variabile X al momento del select case e vuota...
    Ossia la assegno nel form1 per non riesco a passarla al modulo in pratica.
    Premetto che X dichiarata nel modulo come Global

    Sto prendendo la strada sbagliata o proprio una cosa che non si puo fare?
    Grazie delle risposte

  2. #2
    AlbertoM non  in linea Scribacchino
    Ciao Drake88.

    Quando si avvia un eseguibile, tutte le variabili assumono il valore che gli si attribuisce da codice; per cui partono da zero o stringa nulla o dal valore che all'interno del programma gli si attribuisce.
    Per memorizzare i valori di alcune variabili alla chiusura del programma e ritrovarli alla successiva riapertura bisogna memorizzarli in un file esterno: file di testo, .ini o DB che sia (o nel File di registro) e poi recuperarli sempre da codice.
    File che in genere si colloca nella stessa directory dell'eseguibile.
    Si gi parlato molto di questo argomento, anche di recente. Fa una ricerca nel Forum VB6 con argomento tipo 'salvare variabili' o 'salvare in file .txt' o simili.
    Ciao.
    ℹ️ Leggi di pi su AlbertoM ...

  3. #3
    L'avatar di TheTruster
    TheTruster non  in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Credo che la domanda sia posta in maniera troppo generica e manchevole dei necessari dettagli per capire lo scenario in cui stai operando.

    Una routine dichiarata in un modulo (non il modulo che esegue delle operazioni, ma le routines in esso contenute), pu tranquillamente accettare valori in ingresso tramite i suoi argomenti.

    Esempi:

    Sub ApriDB (NomeDB As String)
    
    Function AreaTriangolo (Base As Single, Altezza As Single) As Single
    
    fermo restando tutto ci, mi sembra normale che per passare una variabile ad una funzione o ad una subroutine, necessario che essa sia valorizzata, di conseguenza la chiamata alla routine dovr essere effettuata al momento opportuno.

    TheTruster
    ℹ️ Leggi di pi su TheTruster ...

  4. #4
    Drake88 non  in linea Novello
    Allora mi spiego meglio...

    Sto lavorando con il SetTimer, devo eseguire delle operazioni diverse (in base alla variabile X)
    Per esempio sul form1 scelgo Opzione1, allora la variabile X assume valore "O1"
    scelgo Opzione2, allora la variabile X assume valore "O2".
    Dopo aver dato alla variabile X un valore, richiamo il timer come segue:
    Private Sub tempo()
    'Starts and stops the timer.
    
             If BlnTimer = False Then
                lngTimerID = SetTimer(0, 0, 200, AddressOf TimerProc)
                If lngTimerID = 0 Then
                  MsgBox "Timer not created. Ending Program"
                  Exit Sub
                End If
                BlnTimer = True
             Else
                lngTimerID = KillTimer(0, lngTimerID)
                If lngTimerID = 0 Then
                   MsgBox "couldn't kill the timer"
                End If
                BlnTimer = False
              End If
    End Sub
    
    Poi ho un modulo strutturato come segue:
    Option Explicit
    
          Declare Function SetTimer Lib "user32" _
                (ByVal hwnd As Long, _
                ByVal nIDEvent As Long, _
                ByVal uElapse As Long, _
                ByVal lpTimerFunc As Long) As Long
    
          Declare Function KillTimer Lib "user32" _
                (ByVal hwnd As Long, _
                ByVal nIDEvent As Long) As Long
    
          Global iCounter As Integer
          Global X as string
    
          Sub TimerProc(ByVal hwnd As Long, _
                         ByVal uMsg As Long, _
                         ByVal idEvent As Long, _
                         ByVal dwTime As Long)
    
             Select Case X
              Case sel = "O1"
              iCounter = iCounter + 1
              Form1.Text4.Text = CStr(iCounter)
              If Form1.Text4.Text = 9000 Then
              SendKeys "{" & Form1.Text3.Text & "}"
              iCounter = 0
              End If
              On Error Resume Next
              Case sel = "O2"
              iCounter = iCounter + 1
              Form1.Text7.Text = CStr(iCounter)
              If Form1.Text7.Text = 500 Then
              SendKeys Form1.Text5.Text
              iCounter = 0
              End If
              On Error Resume Next
              Case Else
              SendKeys "X non ha nessun valore"
              End Select
    
    Avvio il tutto e ogni volta il messaggio e lo stesso "X non ha nessun valore"

    Spero di aver spiegato meglio

  5. #5
    Scusa ma nella linea

    Case sel = "O1"

    sel cosa e'?

    Sei sicuro di aver compreso bene come funziona la Select Case ... ?
    ℹ️ Leggi di pi su AntonioG ...

  6. #6
    Drake88 non  in linea Novello
    Quote Originariamente inviato da AntonioGiuliana Visualizza il messaggio
    Scusa ma nella linea

    Case sel = "O1"

    sel cosa e'?

    Sei sicuro di aver compreso bene come funziona la Select Case ... ?
    scusami sel sarebbe X, nel mio codice e sel, lo tradotto in X per farvelo capire, mi e sfuggita quella parte da tradurre^^

  7. #7
    Ma a questo punto non si e' capito come effettivamente hai scritto la Select Case ... faccelo vedere nuovamente con la variabile corretta ...
    ℹ️ Leggi di pi su AntonioG ...

  8. #8
    Drake88 non  in linea Novello
    Option Explicit
    
          Declare Function SetTimer Lib "user32" _
                (ByVal hwnd As Long, _
                ByVal nIDEvent As Long, _
                ByVal uElapse As Long, _
                ByVal lpTimerFunc As Long) As Long
    
          Declare Function KillTimer Lib "user32" _
                (ByVal hwnd As Long, _
                ByVal nIDEvent As Long) As Long
    
          Global iCounter As Integer
          Global sel as string
    -------------------------------------------------
         Sub TimerProc(ByVal hwnd As Long, _
                         ByVal uMsg As Long, _
                         ByVal idEvent As Long, _
                         ByVal dwTime As Long)
    Select Case sel
              Case sel = "O1"
              iCounter = iCounter + 1
              Form1.Text4.Text = CStr(iCounter)
              If Form1.Text4.Text = 9000 Then
              SendKeys "{" & Form1.Text3.Text & "}"
              iCounter = 0
              End If
              On Error Resume Next
              Case sel = "O2"
              iCounter = iCounter + 1
              Form1.Text7.Text = CStr(iCounter)
              If Form1.Text7.Text = 500 Then
              SendKeys Form1.Text5.Text
              iCounter = 0
              End If
              On Error Resume Next
              Case Else
              SendKeys "sel non ha nessun valore"
              End Select
          End Sub
    

  9. #9
    Drake88 non  in linea Novello
    Nessuno sa dove puo essere l'errore? continuo a ricontrollarlo, ma la variabile resta vuota...

  10. #10
    L'avatar di yronium
    yronium non  in linea Scribacchino
    Ciao. Continui a postare il codice con cui tenti di utilizzare il valore della variabile, ma non posti il codice con cui dovrebbe venire impostato questo valore, dove probabilmente l'errore risiede. Quindi non possiamo aiutarti. Al massimo, l'unico errore che trovo nel codice che hai postato che la verifica della condizione va fatta senza specificare di nuovo il nome della variabile, cio non
    Select Case sel
              Case sel = "O1"
    
    ma
    Select Case sel
              Case "O1"
    
    Ad ogni modo questo errore ininfluente perch VB gestisce bene anche la ridichiarazione.
    Perci aspettiamo che tu ci posti il codice che dovrebbe impostare il valore della variabile.

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. passaggio variabile da libreria a form
    Da wbatman nel forum Visual Basic .Net
    Risposte: 6
    Ultimo Post: 18-10-2018, 10:41
  2. Passaggio di variabile tra 2 form
    Da Crash Ovveride nel forum Visual Basic .Net
    Risposte: 11
    Ultimo Post: 17-02-2011, 11:11
  3. Utilizzo Variabile Pubblica da Form a Modulo
    Da Do85 nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 09-01-2009, 15:36
  4. Passaggio variabile da Form a DataReport
    Da peppedicaprera nel forum Visual Basic 6
    Risposte: 10
    Ultimo Post: 13-12-2008, 20:39
  5. Apertura di un form con passaggio variabile
    Da Gio_Pivello nel forum Microsoft Word
    Risposte: 7
    Ultimo Post: 08-08-2008, 19:23