|
IL BROWSER
In questa sezione verrà trattata la parte del
programma relativa al Browser
La form del nostro
browser si presenta con alcuni bottoni ,rispettivamente indietro,
avanti,home,cerca,termina,aggiorna,preferiti,aggiungi a preferiti, elimina da
lista preferiti e multimedia oltre al bottone vai che serve a navigare.
Per inserire un bottone
in Visual Basic.net è necessario inserire il controllo Button dalla casella
degli strumenti.
Oltre ai bottoni sopra
citati è presente una casella di testo(chiamata adress.bar) dove l’utente
inserisce l’URL della pagina che vuole visitare.
Successivamente l’utente
potrà visualizzare la pagina richiesta premendo o il bottone vai oppure premendo
il tasto invio da tastiera.
Per la navigazione di
pagine WEB Visual Basic.net mette a disposizione un oggetto Active x,chiamato
AxWebBrowser che mette a disposizione una serie di metodi come
Go Back –
pulsante indietro
Go Forward
– pulsante avanti
Go search – pulsante
cerca,che apre direttamente il sito MSN search
Navigate – che permette
la navigazione vera e propria
Quindi nel codice che
gestisce l’evento Click del bottone vai saranno presenti queste istruzioni:
Private
Sub
vai_Click(ByVal
sender As
System.Object,
ByVal
e As
System.EventArgs)
Handles
vai.Click
Cursor.Current =
Cursors.WaitCursor //mette il cursore in attesa
AxWebBrowser1.Navigate(adress.Text)// trova nella barra degli indirizzi l’URL
della pagina va a visualizzare il sito
Timer1.Enabled =
True //viene
abilitato un timer
Cursor().Current = Cursors.Default
End
Sub
Private Sub
Timer_redim_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Timer_redim.Tick
AxWebBrowser1.Width = 1024
//istruzione sul ridimensionamento
AxWebBrowser1.Height = 600
AxWebBrowser1.Top = 88
AxWebBrowser1.Left = 0
If AxWebBrowser1.Busy = False Then
//controllo se il browser è occupato
Timer1.Enabled = False
//disabilita il timer
Me.Text =
AxWebBrowser1.LocationName //il titolo della form diventa uguale al nome della
pagina visualizzata
adress.Text =
AxWebBrowser1.LocationURL // nella barra degli indirizzi viene visualizzato l’URL
completo
else
Me.Text = "Operazione
in corso..."
End If
End
Sub
Le prime istruzioni vengono inserite
per risolvere il problema che nasce dalla possibilità di trovare all’interno di
alcune pagine web di script che intervengono sulla dimensione dello schermo e
che potrebbero andare a sproporzionare i componenti della form se non
addirittura a nasconderli,come succedeva agli inizi in cui navigavamo per
esempio il sito dell’ Itis di Parma e venivano nascosti la barra degli indirizzi
e gli altri bottoni. Dopo le istruzioni sul ridimensionamento è presente un
che permette di determinare se il browser è occupato o viceversa; se è occupato
viene visualizzato sulla form il messaggio “Operazione in corso…” se invece
non è così nell’intestazione della form andrà visualizzato il nome della pagina
e nella TextBox l’URL completo. Come detto la navigazione avviene sia ciccando
sul bottone VAI e sia con la pressione del tasto invio.
Per gestire l’evento
generato dalla pressione del tasto invio ho inserito la seguente procedura.
Private Sub adress_KeyUp(ByVal
sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles
adress.KeyUp
If e.KeyCode =
Keys.Enter = True Then
If adress.Text <> ""
Then
AxWebBrowser1.Navigate(adress.Text)
Timer1.Enabled =
True
End If
End
if
End sub
KeyUp è un evento che
permette di gestire l’evento della pressione di un tasto.
Keys è invece utilizzato
per sapere quale carattere è stato premuto. Vado poi a verificare che il tasto
premuto sia invio, se è così dopo aver controllato che la barra degli indirizzi
non sia vuota, effettuo la navigazione
Nell’ immagine sottostante viene
rappresento il form nel momento in cui la navigazione è stata completata è
viene così visualizzata la pagina. Come si può notare ora l’intestazione della
form prende il nome della pagina che stò visitando e nella barra degli indirizzi
viene visualizzato l’URL completo della pagina.

Bisogna notare che un grande problema che
si è verificato durante la navigazione è stato quello dell’impossibilità di
gestire l’apertura di nuove finestre,cioè mentre noi navigavamo su internet con
il nostro browser potevamo incappare in alcuni link che facevano aprire nuove
finestre e queste finestre venivano aperte con un altro Browser. Per risolvere
questo inconveniente è stato necessario gestire l’evento NewWindow2 con la
seguente procedura:
Private Sub AxWebBrowser1_NewWindow2(ByVal
sender As Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event)
Handles AxWebBrowser1.NewWindow2
Dim formnuovo As form1
formnuovo = New form1
formnuovo.AxWebBrowser1.RegisterAsBrowser = True
e.ppDisp =
formnuovo.AxWebBrowser1.Application
formnuovo.Visible = True
End Sub
Questa procedura permette di generare un
nuovo form che assume le stesse caratteristiche del form originale in cui viene
visualizzata la nuova finestra.
I PREFERITI
Nel nostro browser abbiamo voluto anche
inserire la lista preferiti.Per gestire questa parte di programma abbiamo dovuto
studiare la gestione dei file in Visual Basic.net La gestione dei file in Visual
Basic.net è molto simile alla gestione dei file in Java infatti in entrambi i
linguaggi vengono introdotti dei flussi(stream) sia per la lettura che per la
scrittura Il codice che permette di aggiungere un
sito alla lista preferiti è il seguente
Private Sub aggiungi_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles aggiungi.Click
Dim STRLINE As String
Dim FILEREADER As
System.IO.StreamReader
Dim response As
MsgBoxResult
If adress.Text = "" Then
Exit Sub
End If
FILEREADER = New
System.IO.StreamReader(Application.StartupPath & "\" & "preferiti.TXT")
STRLINE =
FILEREADER.ReadLine
While STRLINE <> Nothing
STRLINE =
FILEREADER.ReadLine
If STRLINE =
adress.Text Then
MsgBox("Il sito esiste già nella lista
preferiti " + adress.Text + " esiste già nella lista preferiti")
FILEREADER.Close()
FILEREADER =
Nothing
Exit Sub
End If
End While
FILEREADER.Close()
FILEREADER = Nothing
response = MsgBox("Desideri inserire
il sito " + adress.Text + " nella lista preferiti", MsgBoxStyle.YesNo)
If response = 6 Then
Dim FileWriter As
New System.IO.StreamWriter(Application.StartupPath & "\" & "preferiti.TXT",
True)
FileWriter.Write(vbCrLf + adress.Text)
FileWriter.Close()
FileWriter = Nothing
Else
Exit Sub
End
If
End Sub
.Se si esamina il codice è possibile
notare innanzitutto le tre dichiarazioni presenti all’inizio:
- strline è una stringa di appoggio
che mi serve per leggere una riga del file
- filereader è un flusso che mi
permette la lettura di un file
-response è una variabile che mi
permette di gestire poi il risultato della message box
La prima cosa che faccio è quella di
controllare che la barra degli indirizzi non sia vuota, se mi accorgo che è così
esco dalla procedura. Dopodiché viene controllato se il sito che si desidera
inserire sia già presente nella lista, nel caso sia presente viene visualizzata
una message box che avvisa l’utente di questo e si esce dalla procedura. Per
leggere un file riga per riga utilizzo un ciclo Do While che mi permette di
scorrere il file e dove è presente l’istruzione filereader.readline che permette
la lettura di una riga del file.Succesiivamente se la barra degli indirizzi non
è vuota e se il sito non è gia presente nella lista visualizzo un’altra message
box che chiede all’utente se desidera inserire il sito nella lista; tramite
la variabile response controllo la risposta dell’utente e se risulta essere
affermativa scrivo, utilizzando la modalità append, l’URL del sito in un
file di testo (PREFERITI.TXT) . Per scrivere utilizzo un altro flusso ,il
filewriter che dichiaro nel modo seguente.
Dim FileWriter As New
System.IO.StreamWriter(Application.StartupPath & "\" & "preferiti.TXT", True)
Il true presente dopo la virgola stà ad
indicare la modalità append. L’istruzione che permette la scrittura è
filewriter.write() .
Una cosa molto importante quando si
utilizzano i chiuderli e liberare quindi le risorse allocate.
Per visualizzare i preferiti ho inserito il
bottone preferiti che permette di rendere visibili delle link-label dove, dopo
la lettura del file Preferiti.txt con la procedura già citata sopra, andranno a
visualizzarsi i nomi delle pagine inserite nella lista preferiti.Ovviamente dopo
avere fatto questo l’AxWebBrowser verrà ridimensionato. Quando l’utente andrà a
clickare sul nome della pagina che è stata aggiunta a preferiti verrà generato
l’evento LinkLabel.click e chiamata una procedura che permetterà di navigare la
pagina.
Per esempio :
Private Sub
LinkLabel1_click1(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles
LinkLabel1.LinkClicked
Cursor.Current =
Cursors.WaitCursor
AxWebBrowser1.Navigate(LinkLabel1.Text)
Timer5.Enabled = True //svolge un operazione
analoga all’altro timer
Cursor().Current = Cursors.Default
//solo che sono diverse le
End Sub
// dimensioni
L’immagine sottostante mostra la message box che
appare quando l’utente desidera aggiungere un sito alla lista:

Per visualizzare la lista ho inserito il
bottone preferiti.
Ciccando su tale bottone vengono rese
visibili alcune link-label nelle quali , dopo la lettura del file
Preferiti.txt con la procedura già citata sopra, verranno visualizzati i nomi
delle pagine che compongono la lista .Ovviamente dopo aver fatto questo l’AxWebBrowser
verrà ridimensionato.Quando l’utente clickerà su una di queste linklabel sarà
possibile navigare la pagina associata tramite la gestione dell’evento
LinkLabel_click con la procedura seguente:
Private Sub
LinkLabel1_click(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles
LinkLabel1.LinkClicked
Cursor.Current = Cursors.WaitCursor
AxWebBrowser1.Navigate(LinkLabel1.Text)//l’URL è contenuto nella proprietà text
della link label
Timer5.Enabled = True //svolge un
operazione analoga all’altro timer
Cursor().Current = Cursors.Default
//solo che sono diverse le
End Sub
// dimensioni
Questa immagine mostra l’apertura dei
preferiti nel browser

Viene poi anche reso visibile un bottone
che permetterà di chiudere i preferiti,tale bottone renderà non visibili le
Link.Label e ridimensionerà l’AxWebBrpwsere.Un'altra funzione introdotta sempre
per la gestione dei preferiti è stato l’elimina da lista preferiti. Per fare
questo abbiamo inserito il bottone “Elimina da lista preferiti” che permette la
visualizzazione di un pannello all’interno del quale sono presenti una label ,
una ComboBox in cui viene visualizzata la lista preferiti e un bottone
“Elimina” che permette l’eliminazione dell’elemento della lista selezionato
tramite la ComboBox. La procedura sotto elencata gestisce l’evento Click del
bottone “Elimina da lista preferiti”
Private Sub
eliminapref_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles eliminapref.Click
Dim strline As String
Dim listavuota As String
Dim filereader As
System.IO.StreamReader
filereader = New
System.IO.StreamReader(Application.StartupPath & "\" & "preferiti.TXT")
strline =
filereader.ReadLine
While strline <> Nothing
strline
= filereader.ReadLine
listavuota = listavuota + strline
End While
filereader.Close()
filereader = Nothing
If listavuota = "" Then
MsgBox("LISTA PREFERITI VUOTA")
Exit Sub
End If
//In questa porzione ho controllato che la
lista non sia vuota
filereader = New
System.IO.StreamReader(Application.StartupPath & "\" & "preferiti.TXT")
Panel1.Visible = True
ComboBox1.Visible = True
Label2.Visible = True
elimina.Visible = True
chiudi_el.Visible = True
strline =
filereader.ReadLine
While strline <> Nothing
strline = filereader.ReadLine
//aggiungo nella combobox le
// righe lette dal file grazie al metodo
If strline <> ""
Then //Add.strline
ComboBox1.Items.Add(strline)
End If
End While
filereader.Close()
filereader = Nothing
End Sub
Questo immagine rappresenta la schermata
dopo il click sul bottone Elimina da lista preferiti da parte dell’utente

Questa invece è la procedura che permette
di gestire il tasto elimina che viene premuto dopo aver selezionato dalla
Combobox l’elemento da voler eliminare dalla lista preferiti.
Private Sub elimina_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles elimina.Click
Dim filereader As
System.IO.StreamReader
Dim filewriter As
System.IO.StreamWriter
Dim strline As String
filereader = New
System.IO.StreamReader(Application.StartupPath & "\" & "preferiti.TXT")
filewriter = New
System.IO.StreamWriter(Application.StartupPath & "\" & "preferiti2.TXT")
strline =
filereader.ReadLine
filewriter.Write("PREFERITI")
filewriter.Close()
filewriter = Nothing
filewriter = New
System.IO.StreamWriter(Application.StartupPath & "\" & "preferiti2.TXT", True)
While strline <> Nothing
strline =
filereader.ReadLine
If strline <>
ComboBox1.SelectedItem And strline <> "" Then
filewriter.Write(vbCrLf + strline)
End If
End While
filereader.Close()
filereader = Nothing
filewriter.Close()
filewriter = Nothing
Dim testo As String
Dim testo2 As String
filereader = New
System.IO.StreamReader(Application.StartupPath & "\" & "preferiti2.TXT")
filewriter = New
System.IO.StreamWriter(Application.StartupPath & "\" & "preferiti.TXT")
testo =
filereader.ReadToEnd
filewriter.Write(testo)
filewriter.Close()
filewriter = Nothing
filereader.Close()
filereader = Nothing
ComboBox1.SelectedItem =
""
ComboBox1.Items.Clear()
Panel1.Visible = False
ComboBox1.Visible = False
Label2.Visible = False
elimina.Visible = False
chiudi_el.Visible = False
End
Sub
In questa procedura utilizzo un file di
appoggio che chiamo “preferiti2.txt”. La procedura prevede di leggere il file
preferiti.txt e scrivere nel file d’appoggio solo le righe che non sono uguali
all’elemento selezionato dall’utente nella Combo Box.Dopo avere fatto questo
copio il contenuto del file d’appoggio nel file preferiti.txt ,questa volta però
utilizzo il metodo filereader.readtoend che permette la lettura di tutto il
file; in questo modo l’intero blocco viene scritto nel file preferiti.txt.
Come è stato possibile notare,nella
schermata precedente l’elemento selezionato da eliminare dalla lista era il
sito
http://www.truemetal.it, quindi dopo l’eliminazione,come viene rappresentato
nella figura sottostante la lista è composta solo dal sito
http://www.itis.pr.it

|