20/12/09 11:35
Louis
Ciao, abbiamo capito che sei in difficoltà, però in particolare non si capisce se non sei in grado di registrare l'OCX di cui trattasi, o perché non sai implementare il codice necessario per la PB.
Allora fermo restando quanto detto e dando per scontato che hai già registrato l'ocx e disegnato sulla Form la ProgressBar, poni sulla Frm una Lbl con Nome lblInfo e 3 Txt con Nome: TxtDcopy, TxtCopiati e TxtPerc; poi nella Cartella del Progetto crea due Cartelle con Nome: DATI e DATI2; infine nel Modulo della Frm copia quanto segue:
Nella Cartella DATI si presuppone che esistano SubCartelle contenenti dei files da copiare (SubCartelle e files) nella Cartella DATI2.
Il codice l'ho testato e funziona.
Ciao.
Allora fermo restando quanto detto e dando per scontato che hai già registrato l'ocx e disegnato sulla Form la ProgressBar, poni sulla Frm una Lbl con Nome lblInfo e 3 Txt con Nome: TxtDcopy, TxtCopiati e TxtPerc; poi nella Cartella del Progetto crea due Cartelle con Nome: DATI e DATI2; infine nel Modulo della Frm copia quanto segue:
Option Explicit Dim FSO As FileSystemObject '---------------------------------------- Private Sub Form_Load() ProgBarXP1.min = 0 ProgBarXP1.max = 100 Set FSO = New FileSystemObject End Sub '---------------------------------------- Private Sub Command1_Click() Dim vrnSF As Variant Dim vrnF1 As Variant Dim dSorg As Folder Dim btFolder As Long Dim fileLenght As Long Dim bytesScritti As Long ' Progetto>Riferimenti...>Microsoft Scripting Runtime: ' Legge percorso e Nome della cartella principale: Set dSorg = FSO.GetFolder(App.Path & "\DATI") ' Legge capacità in bytes della cartella principale: btFolder = dSorg.Size TxtDcopy.Text = Format(btFolder, "#,##0") If btFolder > 0 Then ' Istanzia la subFolder: Set vrnSF = dSorg.SubFolders For Each vrnF1 In vrnSF ' Acquisisce lunghezza della SubFolder: fileLenght = vrnF1.Size ' Quando destinazione è una directory di sola lettura, se si tenta ' di copiare un file di sola lettura esistente in tale directory e ' sovrascrittura è False verrà generato un errore: FSO.CopyFolder vrnF1, App.Path & "\DATI2\", True 'False ' Evidenzia la SubFolder copiata: lblInfo.Caption = vrnF1 lblInfo.Refresh ProgBarXP1.value = Percent(0, btFolder, bytesScritti + fileLenght) bytesScritti = bytesScritti + fileLenght TxtCopiati.Text = Format(bytesScritti, "#,##0") TxtPerc.Text = Format((bytesScritti / btFolder) * 100, "#,##0.00") 'ProgBarXP1.Refresh Next vrnF1 End If End Sub '---------------------------------------- Function Percent(min As Long, max As Long, value As Long) As Long '100 : x = btFolder : bytesScritti Percent = value * 100 \ max End Function
Nella Cartella DATI si presuppone che esistano SubCartelle contenenti dei files da copiare (SubCartelle e files) nella Cartella DATI2.
Il codice l'ho testato e funziona.
Ciao.
aaa
21/12/09 15:49
ProgrammatoreVBC++
Postato originariamente da Louis:
Ciao, abbiamo capito che sei in difficoltà, però in particolare non si capisce se non sei in grado di registrare l'OCX di cui trattasi, o perché non sai implementare il codice necessario per la PB.
Allora fermo restando quanto detto e dando per scontato che hai già registrato l'ocx e disegnato sulla Form la ProgressBar, poni sulla Frm una Lbl con Nome lblInfo e 3 Txt con Nome: TxtDcopy, TxtCopiati e TxtPerc; poi nella Cartella del Progetto crea due Cartelle con Nome: DATI e DATI2; infine nel Modulo della Frm copia quanto segue:
Nella Cartella DATI si presuppone che esistano SubCartelle contenenti dei files da copiare (SubCartelle e files) nella Cartella DATI2.
Il codice l'ho testato e funziona.
Ciao.
Ciao, abbiamo capito che sei in difficoltà, però in particolare non si capisce se non sei in grado di registrare l'OCX di cui trattasi, o perché non sai implementare il codice necessario per la PB.
Allora fermo restando quanto detto e dando per scontato che hai già registrato l'ocx e disegnato sulla Form la ProgressBar, poni sulla Frm una Lbl con Nome lblInfo e 3 Txt con Nome: TxtDcopy, TxtCopiati e TxtPerc; poi nella Cartella del Progetto crea due Cartelle con Nome: DATI e DATI2; infine nel Modulo della Frm copia quanto segue:
Option Explicit Dim FSO As FileSystemObject '---------------------------------------- Private Sub Form_Load() ProgBarXP1.min = 0 ProgBarXP1.max = 100 Set FSO = New FileSystemObject End Sub '---------------------------------------- Private Sub Command1_Click() Dim vrnSF As Variant Dim vrnF1 As Variant Dim dSorg As Folder Dim btFolder As Long Dim fileLenght As Long Dim bytesScritti As Long ' Progetto>Riferimenti...>Microsoft Scripting Runtime: ' Legge percorso e Nome della cartella principale: Set dSorg = FSO.GetFolder(App.Path & "\DATI") ' Legge capacità in bytes della cartella principale: btFolder = dSorg.Size TxtDcopy.Text = Format(btFolder, "#,##0") If btFolder > 0 Then ' Istanzia la subFolder: Set vrnSF = dSorg.SubFolders For Each vrnF1 In vrnSF ' Acquisisce lunghezza della SubFolder: fileLenght = vrnF1.Size ' Quando destinazione è una directory di sola lettura, se si tenta ' di copiare un file di sola lettura esistente in tale directory e ' sovrascrittura è False verrà generato un errore: FSO.CopyFolder vrnF1, App.Path & "\DATI2\", True 'False ' Evidenzia la SubFolder copiata: lblInfo.Caption = vrnF1 lblInfo.Refresh ProgBarXP1.value = Percent(0, btFolder, bytesScritti + fileLenght) bytesScritti = bytesScritti + fileLenght TxtCopiati.Text = Format(bytesScritti, "#,##0") TxtPerc.Text = Format((bytesScritti / btFolder) * 100, "#,##0.00") 'ProgBarXP1.Refresh Next vrnF1 End If End Sub '---------------------------------------- Function Percent(min As Long, max As Long, value As Long) As Long '100 : x = btFolder : bytesScritti Percent = value * 100 \ max End Function
Nella Cartella DATI si presuppone che esistano SubCartelle contenenti dei files da copiare (SubCartelle e files) nella Cartella DATI2.
Il codice l'ho testato e funziona.
Ciao.
Scusami , grazie .. mi potresti dare il progetto ?
aaa
22/12/09 8:46
Louis
Non capisco ... il progetto é tutto lì; devi posizionare l'ocx sulla Form disegnando la PB, poi posizionare i controlli che ti ho indicato ed infine attivare il riferimento nel seguente modo: Progetto>Riferimenti...>Microsoft Scripting Runtime
Non c'é altro.
Bhe se incontri difficoltà facci sapere.
In particolare il codice e la procedura per ProgBarXP é uguale a quella richiesta per il controllo standard di VB6, salvo alcune proprietà in più o in meno.
Per attivare l'esempio postato crea nella cartella ove risiede il progetto due Cartelle: DATI e DATI2; poi nella nuova cartella DATI inserisci delle nuove cartelle contenenti dei files, cartelle e files che saranno copiati nella cartella DATI2, operazione che attiverà la pb.
Compresa la logica del progetto ti sarà facile modificare l'esempio per le tue necessità.
Non c'é altro.
Bhe se incontri difficoltà facci sapere.
In particolare il codice e la procedura per ProgBarXP é uguale a quella richiesta per il controllo standard di VB6, salvo alcune proprietà in più o in meno.
Per attivare l'esempio postato crea nella cartella ove risiede il progetto due Cartelle: DATI e DATI2; poi nella nuova cartella DATI inserisci delle nuove cartelle contenenti dei files, cartelle e files che saranno copiati nella cartella DATI2, operazione che attiverà la pb.
Compresa la logica del progetto ti sarà facile modificare l'esempio per le tue necessità.
aaa