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