Visual Basic Simple
Visualizzare lo stato di avanzamento del caricamento di una pagina Web
Sincronizza Indice
Sincronizza Indice
Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Testo dell'articolo
Stampa l'articolo
Stampa l'articolo
Ricerca personalizzata

Richiesta di: Furetto 83 - 7 Dicembre 2000
Difficoltà: 1 / 5

All'interno di un form ho inserito un controllo WebBrowser che carica una determinata pagina Web al suo interno. Vorrei utilizzare una ProgressBar per monitorare l'avanzamento del caricamento della pagina Web.


Il progetto in questione è molto semplice, ma è necessario possedere due controlli OCX: Microsoft Internet Controls (SHDOCVW.OCX) e Microsoft Windows Common Controls 5.0 (COMCTL32.OCX). Il primo è incluso in ogni versione di Microsoft Internet Explorer 5.0, mentre il secondo è installato con Visual Basic 5 Professional. Entrambi comunque sono liberamente scaricabili all'indirizzo web di casa Microsoft.

Figura 1Una volta assicurati che questi controlli sono installati sul computer apriamo la voce Componenti dal menu Progetto di VB. Selezioniamo i due controlli in questione e premiamo OK. Questo farà sì che appaiano sulla casella dei controlli le icone che vediamo a lato.

I primi 8 sono i controlli comuni di Windows (COMCTL32.OCX), mentre l'ultimo è l'oggetto WebBrowser che istanzia una finestra di Internet Explorer all'interno di un form.

Passiamo al nostro progetto: all'interno di un form inseriamo un WebBrowserdi nome WebBrowser1, una ProgressBardi nome Avanzamento ed un CommandButtondi nome PulsanteVai. Noi li abbiamo disposti così:

Figura 2
Figura 2

Nel momento in cui l'utente clicca il pulsante Vai viene comunicato alla finestra del browser di caricare e mostrare una pagina web. Vediamo intanto questo pezzettino di codice:

  1. Private Sub PulsanteVai_Click()
  2.     WebBrowser1.Navigate2 "http://www.geocities.com/fibiafbi"
  3. End Sub

La funzione è semplicissima: all'evento Click sul pulsante PulsanteVai viene eseguito il metodo Navigate2 con l'indirizzo web da mostrare.

Passiamo ora allo scopo di questa richiesta: monitorare con una ProgressBar il caricamento della pagina web.
Il controllo WebBrowser ha un evento di nome ProgressChange che identifica l'avanzamento nel caricamento della pagina in corso.
Ci basterà semplicemente leggere i valori riportati da tale evento per trovare la posizione di caricamento. Tale evento infatti passa due valori: Progress che indica la posizione attualmente raggiunta e ProgressMax che indica il valore che deve essere raggiunto per completare il caricamento. Il nostro codice, per cui, sarà:

  1. Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
  2.     On Error Resume Next
  3.     Avanzamento.Min = 0
  4.     Avanzamento.Max = ProgressMax
  5.     Avanzamento.Value = Progress
  6. End Sub

Alla riga 6 abbiamo inserito un'istruzione di gestione degli errori perché al termine del caricamento il valore dell'avanzamento può essere inferiore a 0 e può generare un errore. Esistono soluzioni più pulite per effettuare queste operazioni, ma questa è la più semplice.

Alle righe 7 e 8 definiamo i limiti della barra di avanzamento, impostando la proprietà Min a 0 e la proprietà Max a ProgressMax.
Ad ogni stato di avanzamento del caricamento verrà richiamato questo evento con un valore Progress diverso. Per questo motivo assegnamo il valore dell'avanzamento alla proprietà Value della barra.

Figura 3
Figura 3

Eseguiamo il programma e vediamo il suo effetto. Naturalmente per vedere il corretto funzionamento del codice è necessario che la connessione ad Internet sia attiva.
Man mano che la pagina viene caricata la barra di avanzamento in basso aumenterà il suo valore. Al termine del caricamento la stessa barra sarà automaticamente svuotata.

Come per tutte le altre richieste, è presente il progetto scaricabile, ma in questo caso il caricamento del codice da noi fornito può presentare alcune difficoltà. Infatti tutti i componenti ActiveX hanno un loro CLSID registrato nel sistema. In caso di versioni differenti dei componenti, anche il CLSID può differire, rendendo il progetto non eseguibile.

Fibia FBI
7 Dicembre 2000

Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Scarica il testo dell'articolo
Stampa l'articolo
Stampa l'articolo
Torna all'introduzione delle Richieste dei lettori