Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697

    [vb6] a proposito di progress bar

    Facendo una ricerca ho trovato questo scritto da sebamix:

    Hai mai provato a dichiarare un recordset Private Withevents a livello di maschera? Ti ritrovi degli eventi MOOOLTO interessanti. Che funzionino, tutto dipende dalla modalità con cui apri il recordset
    Qlc x piacere può spiegarmi cosa vuol dire?!?

    tnz!!!

  2. #2
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    Dichiarando così nella proprietà generale del form:

    Public WithEvents rs As ADODB.Recordset

    che vantaggi ho?!?

  3. #3
    Se all'interno di un form o di una classe scrivi:
    codice:
    Private WithEvents rs As Recordset
    avrai, nell'elenco degli oggetti, l'oggetto "rs" che dispone di una decina di eventi utili in vari contesti. Questo perchè il tipo ADO.Recordset (o più correttamente "classe") non dispone solamente di proprietà e metodi, ma anche di eventi. Per sfruttarli, per l'appunto, serve l'utilizzo della parola chiave WithEvents, con la quale dichiari che desideri gestire gli eventi inviati da questo oggetto. Per una spiegazione approfondita del significato dei vari eventi dell'oggetto Recordset, ti consiglio di guardarti l'help di ADO.
    Chi non cerca trova.

  4. #4
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    Potreste farmi un esempio di un evento x favore

    grazie

  5. #5
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    Ho trovato l'evento che fa x me fetchprogress, ma non so utilizzarlo qlc mi spiega come utilizzarlo?!?

    tnx!!!

  6. #6
    Se devi muovere una ProgressBar, potresti fare così:
    codice:
    Private Sub rs_FetchProgress(ByVal Progress As Long, ByVal MaxProgress As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
       With ProgressBar1
          .Min = 0
          .Max = MaxProgress
          .Value = Progress
       End With
    End Sub
    Gli argomenti passati dall'evento:
    Progress: valore di tipo Long che indica il numero corrente di record elaborati dall'operazione fetch
    MaxProgress: valore di tipo Long che indica il numero massimo di record attesi in elaborazione
    adStatus: uno dei seguenti valori: adStatusCancel, adStatusCantDeny, adStatusErrorsOccurred, adStatusOK, adStatusUnwantedEvent
    pRecordset: l'oggetto di tipo Recordset nel quale si sta eseguendo l'operazione

    Attenzione perchè le proprietà Min, Max e Value del controllo ProgressBar sono di tipo Integer, mentre Progress e MaxProgress sono di tipo Long. Se il numero di record da elaborare supera il limite di un integer (+32768) occorre dividere Progress e MaxProgress per un coefficiente.
    Chi non cerca trova.

  7. #7
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    Grazie ti chiedo un ultimo favore dal momento che i record del db che uso supereranno i 32768. Come si divide un valore x un coefficiente?!?

  8. #8
    Intendevo dire una proporzione:

    Progress : Value = MaxProgress : Max

    Value = (Progress * Max) / MaxProgress

    codice:
    Private Sub rs_FetchProgress(ByVal Progress As Long, ByVal MaxProgress As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
       With ProgressBar1
          .Min = 0
          .Max = 32767
          .Value = (Progress * .Max) / MaxProgress
       End With
    End Sub
    Non l'ho testato, ma dovrebbe funzionare.
    Chi non cerca trova.

  9. #9
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    grazie :quote:

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