Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    89

    Progress bar durante esecuzione comando

    Salve a tutti,
    vi sottopongo l'ennesimo problema della giornata : nel mio programma lancio un comando che impiega qualche secondo ad essere eseguito; al posto di usare vbhourglass sipuò utilizzare una progress bar?
    Se si, come faccio a regolare l'incremento della barra coerentemente con la durata del comando?

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    La progress bar la puoi utilizzare solo se il 'comando' ti informa regolarmente a che punto è.
    questo comando è un metodo di un oggetto ?

    Tipo

    codice:
        Oggetto.FaiQuesto
    Se si e se l'oggetto espone una proprietà tipo

    codice:
        Oggetto.PercentualeComandoEseguita
    ed un evento di notifica tipo

    codice:
        Oggetto.PercentualeAggiornata
    Allora lo puoi fare.
    Dichiari l'oggetto con WithEvents e nell'evento PercentualeAggiornata
    imposti il valore della progressbar.

    Ovvio che se l'oggetto lo hai progettato tu è fattibile, altrimenti nisba.
    Ciao, Brainjar

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    89
    Ciao Brainjar,
    prima di tutto grazie per la risposta! Il comando che utilizzo è un filecopy...quundi penso che me la prendo in quel posto!!!

  4. #4
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Non lo so se vale la pena fare lo sforzo di codifica. Ma potresti sempre fare una progress
    bar tipo quella di Win XP, il gruppetto di tre quadratini che vanno avanti/indietro nella
    progress bar. Inizi prima del filecopy e termini alla fine.
    Non so se in rete c'è qualcosa di simile già bell'è fatto.
    Ciao, Brainjar

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Prova questo

    codice:
    Private Type SHFILEOPSTRUCT
       hWnd        As Long
       wFunc       As Long
       pFrom       As String
       pTo         As String
       fFlags      As Integer
       fAborted    As Boolean
       hNameMaps   As Long
       sProgress   As String
     End Type
      
    Private Const FO_COPY As Long = &H2
    
    Private Declare Function SHFileOperation Lib "shell32" _
        Alias "SHFileOperationA" _
        (lpFileOp As SHFILEOPSTRUCT) As Long
    
    Private Sub Form_Click()
       Dim SHFileOp As SHFILEOPSTRUCT
       
       With SHFileOp
          .wFunc = FO_COPY
          .pFrom = "C:\FileDaCopiare.xxx"
          .pTo = "C:\Cartella\FileCopiato.xxx"
          .fFlags = 0
       End With
      
       SHFileOperation SHFileOp
    End Sub

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Originariamente inviato da Brainjar
    Non lo so se vale la pena fare lo sforzo di codifica. Ma potresti sempre fare una progress
    bar tipo quella di Win XP, il gruppetto di tre quadratini che vanno avanti/indietro nella
    progress bar. Inizi prima del filecopy e termini alla fine.
    Non so se in rete c'è qualcosa di simile già bell'è fatto.
    ...esiste...

    in basso a destra:


    è una delle Proprietà impostabili nella XPProgressBar presente negli XPControls di mia realizzazione, li trovi su www.vbcorner.net

    Boolean

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    89
    Buon giorno a tutti!
    Oregon, ti ringrazio ma non sono stato capace di far partire il tuo codice...mea culpa
    Boolean ho preso la tua progress bas in stile Xp....spettacolare!!!!
    Effettivamente facendola partire quanco comincia il comando e spegnendola quando termina, dà l'effetto desiderato di attesa!!!!
    Grazie ancora ragazzi, siete GRANDIOSI!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    89
    Perchè la progress bar a volte mi viene visualizzata e a volte no? E' come se l'esecuzione del comando FileCopy avesse spesso 'la precedenza' rispetto alla visualizzazione della bar!!!
    Ho provato a piazzare un DoEvents ma nulla cambia!!
    Vi posto il codice :


    .
    .
    .
    PBarXP.WaitBarStyle = True
    lblMsg.Visible = True
    DoEvents

    FileCopy txtPercorso.Text, "\\aupaap02\files_cntr\" & sorgente(txtPercorso.Text)

    lblMsg.Visible = False
    PBarXP.Visible = False

    DoEvents
    .
    .
    .

  9. #9
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Prima del primo DoEvents metti un Me.Refresh, elimina il secondo DoEvents.
    Ciao, Brainjar

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    89
    Non va

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.