Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Implementiamo il nostro WebBrowser (di Vito Perrotta)
Prendendo spunto da un quesito di un un nostro amico navigatore (vedi la rubrica Chiedilo agli esperti), riguardante le difficoltà incontrate nell'utilizzo del controllo WebBrowser standard di Windows, ed avendo sotto mano un prototipo già funzionante ho tutto il materiale per la mia quarta lezione sugli OCX. Se mi avete seguito fino ad ora, questa lezione sarà particolarmente interessante ed pratica.
Cominciamo !

Apriamo un nuovo progetto EXE con VB. Diamo un nome al progetto ed al form. Questo sarà il progetto, definito in gergo STUB, per provare il nostro ocx. Aggiungiamo subito un altro progetto di tipo ActiveX Control diamogli nome WorkStation. Lo usercontrol messo a disposizione da VB lo chiameremo ctlWorkStation. Le dimensioni di ctlWorkStation non sono significative in questo punto del progetto. Teniamole però abbondanti per permettere di lavorare agevolmente nella costruzione del controllo.

Da Projects -> Components inseriamo i componenti Microsoft Internet Controls e Microsoft Windows Common Controls. Nella ToolBox di VB appariranno le icone dei controlli che inseriremo nello usercontrol. Cominciamo con la toolbar. La posizioniamo nella parte alta dello usercontrol. Inseriamo una ImageList una TextBox e un controllo WebBrowser. Nella tabella sottostante riporto i controlli ed i nomi da dare :

Nome Controllo
Tipo
Scopo
tbrExplorer
Tool Bar
Tool Bar che conterrà i bottoni di navigazione e la casella di testo per la digitazione degli URL
imgBrowser
Image List
Contiene le bitmap per i bottoni di navigazione
wbbWksta
Web Browser
Il controllo che utilizzeremo per "navigare"
txtURL
Text Box
Casella di testo per la digitazione degli URL

La text box txtURL va posizionata sopra la toolbar in modo da creare l'effetto Explorer. La ImageList è già caricata con le bitmap adatte alla navigazione. E la toolbar ha già il riferimento alla image list.

Ora inseriamo le righe per il ridimensionamento dello usercontrol:

Private Sub UserControl_Resize()
wbbWksta.Left = 30
wbbWksta.Width = UserControl.Width - 60
wbbWksta.Top = tbrExplorer.Height + 30
wbbWksta.Height = UserControl.Height - 60 - tbrExplorer.Height
End Sub

Il primo indirizzo che il nostro controllo dovrebbe caricare è la classica pagina vuota.
Ecco come farglielo fare :

Private Sub UserControl_Initialize()
wbbWksta.Navigate "about:blank"
txtURL.Text = ""
End Sub

Il nostro controllo avrà la caratteristica di poter puntare a un indirizzo Internet in fase di inizializzazione. Per cui aggiungiamo la funzione Init che accetta in input l'Url di riferimento :

'Init
'-------------------------------------------------------- Public Function Init(Optional isUrl As String = "") As Long
DoEvents
If IsMissing(isUrl) Or isUrl = "" Then
isUrl = "http://digilander.iol.it/VBItalia/INDICE.html"
' (ovviamente ognuno può sostituirlo con quello che desidera)
Else
If InStr(isUrl, "://") = 0 Then
isUrl = "http://" & isUrl
End If
End If
txtURL.Text = isUrl
wbbWksta.Navigate isUrl
DoEvents
Init = 0
End Function

Per gestire la storia della navigazione e/o passare da una pagina Web a quella precedente o successiva , implementeremo la gestione dei tasti della toolbar, utilizzando la "storia" che ha memorizzato per noi l'oggetto WebBrowser. Per far questo senza errori ad ogni azione di spostamento si effettua il test, attenzione a ricordarsi di indicare On Error Resume Next, riportato :

If Err.Number = 12 Then
Err.Clear
End If

Qesto test gestisce l'errore dovuto a una navigazione tra pagine non presenti in storico, ovvero la precedente alla prima e la seguente all'ultima.

Private Sub tbrExplorer_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next
Select Case Button.Index
Case 1
wbbWksta.GoBack
If Err.Number = 12 Then
Err.Clear
End If
Case 2
On Error Resume Next
wbbWksta.GoForward
If Err.Number = 12 Then
Err.Clear
End If
Case 3
wbbWksta.Stop
If Err.Number = 12 Then
Err.Clear
End If
Case 4
wbbWksta.Refresh
If Err.Number = 12 Then
Err.Clear
End If
Case 5
wbbWksta.GoHome
If Err.Number = 12 Then
Err.Clear
End If
End Select
Err.Clear
End Sub

Mentre, se digitiamo un Url nella text box, ad ogni Invio viene controllata ed eseguita, se possibile, la navigazione.

Private Sub txtURL_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
If InStr(txtURL.Text, "://") = 0 Then
txtURL.Text = "http://" & Trim$(txtURL.Text)
End If
wbbWksta.Navigate txtURL.Text
End If
End Sub

A pagina web caricata, dobbiamo aggiornare l'indirizzo Url presente nella text box :

Private Sub wbbWksta_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
txtURL.Text = URL
End Sub

Chiudiamo la progettazione del controllo. Nel form dello STUB inseriamo il controllo in modo da presentare tutta la text box per l'url, ed un command button. Nel click del command inseriamo ctlWorkStation1.Init "" (così caricherà la pagina web di default) .

Godiamoci il risultato.

Grazie per l'attenzione e…. alla prossima !
Scarica qui l'esempio Guarda la schermata d'esempio

Archivio:
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it <% =Now %>