Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22
  1. #11
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    Siamo d'accordo che in qualunque momento frmGraficoCircuito.Check(i).Value e stato(i), per qualunque valore di i da 1 a 5 devono essere uguali? Sì? Ergo il vettore stato è inutile.

    L'IDE di Visual Basic offre degli ottimi strumenti dubug. Lascia perdere quindi la List1 e, se vuoi investigare il contenuto delle variabili usa i Breakpoint nel codice e tutte le altre facilitazioni elencate nel menu Debug, altrimenti avrai sempre il dubbio se l'errore è nel codice vero o in quello di debug. E' come misurare una tensione con un tester forse guasto.

    Ricorda l'equazione: Meno codice = Meno errori.

  2. #12
    si, uso costantemente sia i breakpoint, sia il debug, sia l'elenco variabili locali.

    E sono daccordo anche sul meno codice = meno errori.


    Tolto tutte le variabili, superflue (spero e credo). Il codice è questo:


    codice:
    Private Sub ImpaginaFrame()
    
     'Coordinate dei FRAME DATI
      Dim coordx As Integer
      Dim coordy As Integer
      
      Dim i As Integer     
      
       'Coordinate dei FRAME
        coordx = 10440    
        coordy = 1200         
       
      'Coordinate X
        For i = 1 To 5
          FrameDati(i).Left = coordx 
        Next i
    
       'Sposta i frame in cascata a seconda di quelli visibili / invisibili
        For i = 1 To 5 
            If frmGraficoCircuito.Check(i).Value = 1 Then
               FrameDati(i).Top = coordy         
               FrameDati(i).Visible = True         
               coordy = coordy + FrameDati(i).Height + 20
            Else
               FrameDati(i).Visible = False                  'Visibilità
            End If
            
        Next i
        
    End Sub


    ...ma non va lo stesso.
    Credo che che l'errore sia su come gestisco la variazione della variabile coordY...
    ...ma c'arrivo, non ti preoccupare !!! lo stano !

  3. #13
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    Ma quelle coordinate (10440 e 1200) in che unità di misura sono espresse?
    Perché se sono twips e lo ScaleMode del Form è impostato a pixels è come sommare le mele alle pere

  4. #14
    Originariamente inviato da Grumpy
    Ma quelle coordinate (10440 e 1200) in che unità di misura sono espresse?
    Perché se sono twips e lo ScaleMode del Form è impostato a pixels è come sommare le mele alle pere

    Vero anche questo...ma se li vede la prima volta dovrebbe vederli anche la seconda...secondo me sbaglia qualcosa nel load del form.

  5. #15
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    secondo me sbaglia qualcosa nel load del form.
    Form_Load che finora nessuno, a parte te, ha visto.
    Comunque ho provato a creare un mini-progetto e funziona. Lo volevo allegare ma mi pare che si possano allegare solo immagini.

  6. #16
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Ho l'impressione che la cosa si fa lunga...
    Fai un progettino che mostri il problema, ed inviamelo
    (sempre se ti va di farlo).

    vbcorner@vbcorner.net

    Ciao

  7. #17
    Le unità di misura sono in twip, sia come impostazione di progetto della form, sia in fase di esecuzione.
    Comunque, disattiva il frame che io non voglio vedere e poi quando lo riattivo per renderlo visibile nuovamente (impostando il relativo check a true) non lo reinserisce nella posizione originaria e non fa scalare gli altri.



    La form si chiama: frmStampaPreview

    il form_load è:


    codice:
    Private Sub Form_Load()
        Call ImpostaPosizioneFrameLabel 'Imposta altri frame 
        Call PopolaDati                         'mette i valori nei rispettivi campi
        Call AttivaDisattivaFrame           'attiva/disattiva i rispettivi frame
        Call ImpaginaFrame                      'Fa scalare i Framedati non visibili
    End Sub





    le sub sono:





    codice:
    Private Sub ImpostaPosizioneFrameLabel()
     'Imposta la posizione di altri frame nella form.
          if Circuito = 1 then 
                Frame15.Left = Frame15.Left
                Frame15.Top = Frame15.Top     
                ...
          else
                Frame15.Left = Frame15.Left
                Frame15.Top = Frame15.Top + 800
                ...
    End Sub
    
    
    Private Sub PopolaDati()
    'Mette i valori nei vari campi, label e frame
    
        Label1.Caption = Numero
        ...  
    
    End Sub
    
    
    
    Private Sub AttivaDisattivaFrame()
    'Visualizza o no gli altri frame
      If frmGraficoCircuito.chkModuli.Value = 1
           Frame15.Visible = True
           ...
      Else
           Frame15.Visible = False
           ... 
      End If
    
      ...
    End Sub
    
    
    Private Sub ImpaginaFrame()
    'Scala i frame (quelli incriminati!!)
    
      Dim coordx As Integer
      Dim coordy As Integer
      
      Dim i As Integer    
        
       'Coordinate dei FRAME
        coordx = 10440 
        coordy = 1200   
       
      'Coordinate X
        For i = 1 To 5
          FrameDati(i).Left = coordx  
        Next i
    
    
       'Imposta la visibilità dei frame a true (solo per verifica)
        For i = 1 To 5
          List1.AddItem "Check (" & i & ") = " & frmGraficoCircuito.Check(i).Value
        Next i
        
       'Sposta i frame in cascata a seconda di quelli visibili / invisibili
        For i = 1 To 5                       
            If frmGraficoCircuito.Check(i).Value = 1 Then
               FrameDati(i).Top = coordy
               FrameDati(i).Visible = True
               coordy = coordy + FrameDati(i).Height + 20  
            Else
               FrameDati(i).Visible = False           
            End If        
        Next i
    End Sub


    'EXIT
    Private Sub Command1_Click()
    Call ScaricaForms
    End
    End Sub


    'CANCEL
    Private Sub Command2_Click()
    Unload frmStampaPreview
    frmStampa.Show 1
    End Sub






    non sarò un professionista come voi,
    ma non mi sembra una cosa complicatissima.
    ...eppure non riesco a far saltare fuori dove sbaglio !!!

  8. #18
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    ...non sarò un professionista come voi, ...
    Non è questione di professionismo o meno. E' che se continui a postare il codice con il contagocce e nelle parti che posti non c'è l'origine del malfunzionamento, evidentemente la causa è altrove. Per esempio, cosa accade in ScaricaForms? Qual'è esattamente la funzione dei due CommandButton?

    Converrai poi che ci sono delle incongruenze, per esempio questa
    codice:
          if Circuito = 1 then 
                Frame15.Left = Frame15.Left
                Frame15.Top = Frame15.Top
    Secondo me dovresti affinare le tecniche di debug. Se ci sono delle parti che secondo te sono ininfluenti, comincia col toglierle e riduci progressivamente il progetto fino all'essenziale, anziché aggiungere codice inutile che aumenta solo la confusione. Di sicuro scoprirai che il problema non è dove lo stai cercando.

    Guarda, a me non piace "fare le diagnosi a naso", però, siccome il discorso si sta allungando, la mia impressione è che la routine ImpaginaFrame venga eseguita solo la prima volta perche l'evento Form_Load di frmStampaPrevie da cui è chiamata viene eseguito una sola volta. E questo significa che il Form non viene scaricato, cioè non c'è Unload per esso, ma forse solo un Hide o neanche quello. Ora, se tu non vuoi scaricarlo e lasciarlo visibile, la routine non la devi chiamare dall'evento Load, semmai da Activate, ma meglio ancora dall'evento Click del pulsante che viene premuto dopo aver reimpostato i CheckBox.

  9. #19
    scaricaForms è questa:



    codice:
    Public Sub ScaricaForms()
      Dim intCtr As Integer
      For intCtr = (Forms.Count - 1) To 0 Step 1
         Unload Forms(intCtr)
      Next intCtr
    End Sub

    ma è usata solo sul bottone EXIT e quello nn lo premo per tornare alla precedente form, ma solo per uscire dal programma (interromperlo). Il tasto CANCEL è usato per tornare alla finestra precedente che è frmStampa ma che nel suo form_load non ha nulla che riguarda i frame in questione ma solo questo:

    codice:
    Private Sub Form_Load()   'form frmSTAMPA
      
     Dim printDlg As PrinterDlg
     Set printDlg = New PrinterDlg
    
    ' Set the starting information for the dialog box based on the current
    ' printer settings.
    
    'Imposta le informazioni di partenza per il box dei settaggi della stampante corrente
      printDlg.PrinterName = Printer.DeviceName
      printDlg.DriverName = Printer.DriverName
      printDlg.Port = Printer.Port
      
      Dim Prn As Printer
      
    'Popola la Combo1 con i nomi delle stampanti trovate nel sistema
      For Each Prn In Printers                  'legge le stampanti istallate nel sistema
        Combo1.AddItem Prn.DeviceName
      Next
     
      Label3.Caption = printDlg.PrinterName
      Combo1.text = printDlg.PrinterName
        
    End Sub

    Scarico la frmStampaPreview quando clicco sul pulsante CANCEL

    codice:
    'CANCEL
    Private Sub Command2_Click()
     Unload frmStampaPreview
     frmStampa.Show 1
    End Sub
    l'unload c'è.

    L'incongruenza è corretta. nel caso di circuito=1 deve lasciare il Frame15.left dove è il frame15.left presente nella form. non è carino, ma funziona.

    (il mio riferirmi a professionisti non voleva essere offensivo, è che mi incavolo con me, che non riesco ancora a trovare st'errore !!)

    Provo a eliminare e togliere le cose di troppo. Penso pure io che si esegua solo una volta e poi non piu. sto impazzendo appresso a debug e liste variabili locali !ehehe

  10. #20
    L'incongruenza è corretta. nel caso di circuito=1 deve lasciare il Frame15.left dove è il frame15.left presente nella form. non è carino, ma funziona.
    Questo secondo me non ha senso...per lasciarlo dov'e' basta non toccarlo...

    Form_Load che finora nessuno, a parte te, ha visto.
    LOL, avevo puntato sul form_load proprio perchè non avendolo visto poteva essere li il problema.

    Comunque se gentilmente puoi postarci una copia del progetto riusciremmo a capirci meglio...perchè anche io ho fatto un progetto di prova e il codice funziona.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.