1. 1 - Descripción del control
El control ProgressBar nos permite medir el progreso de una tarea o proceso en
nuestro programa
Este control viene con el conjunto de controles que se incorporan en el ocx
MsComctl32.ocx con el nombre de Microsoft Windows Common Control 6
Una vista previa del control ProgressBar:
2. Si bien es posible crear barras de progreso sin utilizar un control adicional, mediante el
ProgressBar podemos implementar de una manera rápida y fácil, mediciones de
progreso de una determinada tarea
2 - Propiedad Value , Max y Min
Este control posee 3 propiedades fundamentales para trabajar en el código a la hora de
mostrar dicho progreso en la barra.
Estas tres propiedades principales son:
Value: Propiedad que indica el valor actual de la barra, o mejor dicho del
proceso que estamos midiendo
Max : La Propiedad Max establece el valor máximo para la barra o proceso
Min : Establece el valor mínimo.
Nota: Este control también posee otras propiedades, pero que no son determinantes y
que están relacionadas mas a su aspecto gráfico.
3 - Un ejemplo simple para ver como funciona el
control
Este ejemplo consite en generar un bucle For-Next desde 0 hasta 5000, y en cada
pasada del bucle, se irá asignando el valor de la misma a la propiedad Value del control.
3. Al Progressbar, en la propiedad Min le establecemos el valor 0. A la propiedad Max el
valor máximo del proceso y la propiedad Value tomará como valor el valor de x, la
variable del For - Next
Para el ejemplo agregar los siguientes controles en un formulario:
1 Control Label llamado Label1
1 Botón de comando llamado Command1
1 Un control ProgressBar con el nombre ProgressBar1
Pegar el siguiente Código fuente en el Formulario:
Private Sub Command1_Click()
Dim x As Long
' Generamos un ciclo For
For x = ProgressBar1.Min To ProgressBar1.Max
' Mostramos la veriable x (el value) en Label1
Label1 = x
' Usamos DoEvents para poder visualizar el conteo en el Label
DoEvents
' Asignamos en la propiedad Value del control ProgressBar _
el valor de x para ir incrementando la barra de progreso
ProgressBar1.Value = x
Next x
End Sub
Private Sub Form_Load()
'Le asignamos las propiedades para el mínimo, máximo valor del
Progress bar
With ProgressBar1
.Max = 5000
.Min = 0
.Value = 0
End With
End Sub
Las propiedades Min y Value pueden establecérsele valores como mínimo de 0, osea
que un valor inferior a 0 producirá un error 380 en tiempo de ejecución, la descripción
del error es:
4. El valor de la propiedad no es válido
El ProgressBar no tiene ninguna Propiedad para medir el porcentaje. Para el ejemplo
anterior podríamos hacerlo de esta manera, y mostrar además de la barra de progreso, un
porcentaje del mismo utilizando un control Label, como muestra este gráfico:
Private Sub Command1_Click()
'Le establecemos un valor para el máximo
ProgressBar1.Max = 50500
For i = 0 To ProgressBar1.Max
' Valor actual del Progressbar
ProgressBar1.Value = i
' Visualizamos el porcentaje en el Label
Label1 = CLng((ProgressBar1.Value * 100) / ProgressBar1.Max) &
" %"
DoEvents
Next
End Sub
4 - Propiedad Scrolling
Para cambiar el aspecto gráfico del Progressbar, hay una propiedad llamada Scrolling.
Esta tiene 2 valores posibles, 0 y 1.
Si le colocamos esta propiedad en 0, el Progress tendrá una vista dividida por recuadros.
Si tiene el valor 1, la barra de progreso es continua, como se ve en la siguiente imagen
5. 5 - Ejemplo 2
Ahora un ejemplo que tenga algún sentido mas práctico que el visto al comienzo (por lo
menos un poco mas de sentido)
Este consiste en agregar en un control ListBox la fecha de modificación de todos los
archivos de un directorio, y mostrar en la barra de progreso el tiempo que tarda.
Para este ejemplo hay que agregar un control DirListBox llamado Dir1, un FileListBox
File1, un Progressbar1, un Label1, un ListBox llamado List1 y un Command1 como
está en la imagen:
El código fuente del formulario es el siguiente:
Private Sub Command1_Click()
6. 'Borrmos el contenido del ListBox
List1.Clear
'Si no hay archivos en el directorio salimos de la rutina
If File1.ListCount = 0 Then
MsgBox "No hay archivoes en el directorio": Exit Sub
End If
'Le indicamos como valor máximo al progressbar la cantidad _
de archivos que tiene el control
ProgressBar1.Max = File1.ListCount
For i = 0 To File1.ListCount - 1
'Agregamos la fecha de modificción del archivo en el List1 _
con la función FileDateTime de visual basic
List1.AddItem FileDateTime(Dir1.Path & "" & File1.List(i))
'Asignamos al Value el valor de i
ProgressBar1.Value = i + 1
'Mostramos el porcentaje en el Label1
Label1 = CLng((ProgressBar1.Value * 100) / ProgressBar1.Max) & " %"
DoEvents
Next
End Sub
Private Sub Form_Load()
'Le indicamos al FileListBox que liste todos los ficheros, _
ocultos, de sistema etc...
With File1
.Archive = True
.Normal = True
.ReadOnly = True
.Hidden = True
.System = True
End With
End Sub
Private Sub Dir1_Change()
File1 = Dir1
End Sub
En el ejemplo anterior, se visualiza por medio de un DirListBox y un FileListBox, los
archivos de la pc. Al presionar el Command1 se recorre toda la lista del control File1
7. (mediante la propiedad List) y se recupera y se agrega con la función FileDateTime de
Visual Basic la fecha de modificación de los archivos en el control ListBox.
Nota: Tener en cuenta que al listar un directorio que tiene pocos archivos, el progreso
no se podrá visualizar ya que va a ser muy rápido, en cambio si listás un directorio con
muchos ficheros, como por ejemplo el directorio de sistema de windows ( System32 en
xp ), el progreso lo vas a poder visualizar correctamente.
Hay otras propiedades como se mencionaron para este control, pero no son importantes,
y están mas relacionadas a la visualización y disposición del mismo, como Orientation,
BorderStyle, Scrolling etc...
6 - Barra de progreso con los temas de xp
Una forma de poder aplicar los diferentes temas de windows Xp a las barras de
progreso, es mediante el siguiente control ocx gratuito que los podés descagrar desde
este enlace : Ocx Windows XP C1
Vista de los diferentes estilos
Tema Win XP OliveGreen ( verde oliva )
Tema Win XP Silver Theme ( plateado )
8. Tema Win XP Silver Theme ( Clásico )
Contenido
1 - Introducción
2 - Métodos principales del control WebBrowser
3 - Método Navigate
4 - Método GoBack y GoForward
5 - Método Refresh
6 - Método GoHome
7 - Método Stop
8 - Propiedades principales del control WebBrowser
9 - Eventos principales del control WebBrowser
10 - Evento NavigateError
11 - Evento ProgressChange
12 - Evento NewWindow2
13 - Evento StatusChange
14 - Evento NavigateComplete2
15 - Controles necesarios para crear el Navegador
16 - Código fuente para el navegador
17 - Código para el botón para Navegar
18 - Código para cuando se produce un error ( Evento NavigateError )
19 - código para redimensionar los controles del formulario
20 - código para mostrar en el combobox de direcciones, la Url que se está
cargando
21 - Abrir una nueva instancia del navegador para los popup
22 - Código para hacer la Barra de progreso
Nota: En el siguiente enlace hay una lista de ejemplos relacionados al control
Webbrowser de vb 6.0 y vb.net : Enlaces relacionados al control webBrowser
1 - Introducción
Para crear el explorador se utiliza el Ocx ( que en realidad es una DllActivex) llamado
Microsoft Internet Controls. Este se agrega desde el menú Proyecto - componentes
9. Una vez que lo marcas, es decir que lo agregas al proyecto, se verá el siguiente control
en el cuadro de controles del IDE de visual basic
10. 2 - Métodos principales del control WebBrowser
Antes de comenzar a crear el navegador de ejemplo, se describen los principales
métodos del control WebBrowser en lo que se refieren a la navegación y carga de las
páginas:
Método Navigate
Método GoBack
Método GoForward
Método Refresh
Método GoHome
Método Stop
3 - Método Navigate
El método Navigate es el que permite cargar una página en el control Web. El único
parámetro que necesita dicho método es la Url para cargar el documento en el control.
Por ejemplo si quisiera cargar la página de google, se haría asi
ControlWeb.Navigate "http://www.google.com"
4 - Método GoBack y GoForward
El método GoBack y el método GoForward se utilizan para navegar a la página anterior
y página siguiente (si es que las hay).
5 - Método Refresh
Método que se utiliza para actualizar la página cargada en el WebBrowser, es decir la
vuelve a recargar
6 - Método GoHome
Se utiliza para cargar la página de inicio que esté establecida en el programa Internet
explorer en la sección de opciones, este valor está guardado en el registro de Windows,
Esto es porque el control web está basado en el dicho control. Si quisieramos configurar
nuestra propia página de inicio, tendríamos que guardar la url en alguna parte, y cargarla
con el método Navigate por ejemplo
11. 7 - Método Stop
Por último el Método Stop detiene la carga de la página que actualmente se está
cargando. Todos estos métodos, excepto el método Navigate, no requieren parámetros,
solo llamarlos para que hagan lo que tienen que hacer
8 - Propiedades principales del control WebBrowser
Las propiedades principales son:
Propiedad LocationName
Propiedad LocationURL
La propiedad LocationName devuelve el título de la página que cargamos en el control
webBrowser.
Por ejemplo si cargáramos la mítica web del guille: www.elguille.info , esta propiedad
devolvería: "El Guille la web de la programación etc..", es decir la descripción de la
página que está definida en las etiquetas "Title" del documento cargado
La propiedad LocationUrl lo que nos devuelve es la dirección http del documento
cargado en el control WebBrowser.
Este control tiene otras propiedades, pero para el ejemplo por ahora basta con nombrar
estas 2
9 - Eventos principales del control WebBrowser
Los principales eventos del control son:
Evento NavigateError
Evento ProgressChange
12. Evento NewWindow2
Evento StatusTextChange
Evento NavigateComplete2
El control web tiene muchos otros eventos aparte de estos 5, algunos sinceramente no
tengo idea para que son, pero en el ejemplo se usarán solo estos
10 - Evento NavigateError
El evento NavigateError se dispara o ejecuta cada ves que al cargar una página, se
produce un error en la carga
11 - Evento ProgressChange
El evento ProgressChange nos sirve para ver el progreso de descarga del documento o
de los documentos, ya que al cargar una página se pueden estar descargando varios
elementos, no solo la página a la que navegamos. En el ejemplo del navegador, con este
evento , se creará una barra de progreso para poder visualizar el porcentaje de descarga
de la página en la que estamos navegando
12 - Evento NewWindow2
Se ejecuta cuando se abre una ventana de tipo PopUp o las llamadas páginas de tipo
_Blank. Por defecto en el control webBrowser, si presionamos en un enlace que abre
una ventana PopUp, se abre una nueva instancia del Internet Explorer. Para que no
ocurra esto en el programa y se pueda abrir la página en una instancia de nuestro
navegador, utilizaremos este evento para detectar cuando suceda esto, mediante una
variable llamada cancel , y que cancela la ejecución del navegador predeterminado, y al
crear una instancia nueva de nuestro formulario, se cargará esa página en este nuevo
formulario .
13 - Evento StatusChange
Este evento tiene un parámetro llamado Text. Ese valor nos devuelve el estado de la
navegación, es decir nos muestra la url que se está navegando o las url que se están
navegando. Cuando termina de descargarse todo, la variable Text posee el valor "Listo".
13. También esta variable cambia cuando el mouse pasa encima del control Webbrowser,
por ejemplo encima de un enlace, y se refleja en esta variable. En este evento es donde
hay que poner una especie de barra de estado, label o lo que sea.
14 - Evento NavigateComplete2
Se produce cuando se ha podido navegar a la url, esto no quiere decir que el documento
o la página este completamente descargada
15 - Controles necesarios para crear el Navegador
Nota: los controles dentro del Picture no importa que estén ordenados, ya que se
acomodan y posicionan en tiempo de ejecución, por eso se ve de esa manera en la
imagen
14. La vista previa anterior muestra la ventana de diseño y los controles para agregar. Como
podés ver no usé iconos ni nada, eso lo podés hacer vos a tu gusto. Tampoco se utilizó
un control ToolBar de Visual Basic, si no que se colocó un control PictureBox que
contiene los botones para navegación. También contiene una barra de progreso, un
combobox para la barra de direcciones, el control webbrowser debajo del control
Picture, y debajo del control Webbrowser un control Label que será el que muestre el
enlace actual de descarga de las páginas y el estado de descarga, mostrando la url, sería
como el statusbar o barra de estado.
Pasos a seguir para agregar los principales controles en
el formulario:
1. Agregar un control PictureBox llamado PicToolBar. Colocarlo en la parte
superior del formulario como está en la imagen. No colocarle el ancho ni el alto
a mano, ya que se redimensionará cuando se cargue el formulario y se ubicará en
el lugar correcto
2. Colocar un arreglo de CommandButton , o un ocx de botones, o lo que mas te
guste, y al nombre del arreglo botones renombrarlo a cmdtoolBar. En total
tienen que ser 5, es decir desde el cmdtoolBar(0) hasta el cmdtoolBar(4)
También Colocarle los Caption a los botones en el orden como está en la
imagen, el primero sería la flecha "<" que sería el botón que navega hacia la
página anterior, el segundo (cmdToolbar(1) ) ">", la página siguiente, hasta el
último que dice Inicio (cmdtoolBar(4)).
3. Debajo de esto, colocar un control Label llamado LblDir, y en el Caption del
Label escribir "Dirección". Al igual que los otros controles , no lo ubiques en el
orden correcto, colocalo en cualquier lado, ya que se posiciona mediante código,
Pero si o si debe estar dentro del PictureBox mencionado antes.
4. Agregar un ComboBox llamado CboDir dentro del Picture. Este combo será la
barra de direcciones.
5. Agregar un Command Button llamado cmdNavigate, que será el que navegará a
la página cuando se escriba una dirección en el CboDir (barra de direcciones) y
se pulse navegar. Escribir en el Caption del botón "Navegar" o "ir" o lo que
quieras.
6. Fuera del Picture, es decir dentro del formulario, dibuja o agrega un control
WebBrowser llamado WebBrowser (como está en la imagen)
7. Insertar un control Label llamado lblStatusbar, que en la imagen está como
"Label1". Este control se posicionará en la parte inferior del formulario
cuando se esté ejecutando el programa, justo debajo del control WebBrowser y
mostrará el estado de las url que se están cargando. También este Label
visualiza la dirección url cuando pasas el mouse por encima de un enlace como
se comentó.
8. Por último colocar, dentro del PicToolBar, un control ProgressBar para la barra
de progreso ( Yo no usé el Progressbar del visual basic que se agrega con el Ocx
"Microsoft Windows Common Controls 6.0", ya que este ocx, trae varios ocx
y el peso del archivo es de 1 MB y no valía la pena usar solo el Progressbar y
cargar todos los demás ocx que no se usarán. Si querés podes usar un Ocx que
pesa 90 Kb (es muy liviano) y es mucho mejor que el de Visual basic ya que
15. tiene muchas otras opciones que no posee el Progressbar del vb. Lo podés bajar
desde acá y es gratuito: Ocx para barra de progreso
9. Por último, al formulario Form1 colocarle el nombre FrmWeb
16 - Código fuente para el navegador
Ahora se agregará el procedimiento para los botones cmdToolBar:
Private Sub cmdtoolBar_Click(Index As Integer)
On Error GoTo mensajeError
Select Case Index
Case 0
WebBrowser.GoBack 'ir a la página anterior
Case 1
WebBrowser.GoForward 'Siguiente página
Case 2
WebBrowser.Stop 'Detener la carga de la página
Case 3
WebBrowser.Refresh ' Actualizar la página
Case 4
WebBrowser.GoHome 'Ir a la página de inicio
End Select
Exit Sub
'rutina de Error
mensajeError:
If Err.Number = -2147467259 Then
Resume Next
MsgBox Err.Description
End If
End Sub
17 - Botón Navegar - cmdNavigate
El código para cargar la página que se escriba dentro del combobox llamado cboDir
cuando pulsemos el botón cmdNavigate es muy simple, y como se comentó antes
16. utiliza el método Navigate del control webBrowser. Agrega el código en el formulario
principal:
Private Sub cmdNavigate_Click()
If CboDir <> "" Then
'Navegamos a la página con el método Navigate pasandole la _
dirección del combobox cboDir
WebBrowser.Navigate Trim$(CboDir)
End If
End Sub
Para que cuando se pulse la tecla Enter, también se navegue a la página escrita en la
barra de direcciones, es decir no solo cuando pulsamos dicho botón, hay que establecer
la propiedad Default del botón cmdNavigate en True. Pero también aparte de esto
hay que impedir que los botones del formulario retengan el foco, ya que si tienen el
foco, por ejemplo el botón "inicio" por decir uno, al presionar la tecla Enter, no se
ejecutará el botón cmdNavigate para navegar a la página, para esto podemos hacer que
cuando reciban el foco, se lo pasemos al formulario: pega entonces esta rutina:
Private Sub cmdtoolBar_GotFocus(Index As Integer)
'Le establecemos el foco al formulario
Me.SetFocus
End Sub
Ahora se añade el código para que cuando se presione click en una dirección del combo
cboDir se navegue a la página:
Private Sub CboDir_Click()
'Cuando hacemos click en una url del combo cargamos dicha página
WebBrowser.Navigate CboDir
End Sub
18 - Código para cuando se produce un error ( Evento
NavigateError )
17. Cada ves que se produce un error al intentar navegar a una dirección inexistente, o que
no se pudo localizar, se dispara el evento NavigateError.
Dentro de este procedimiento, pondremos solo un mensaje indicando la Url que dió el
error, a modo de información:
Private Sub WebBrowser_NavigateError(ByVal pDisp As Object, URL As
Variant, _
Frame As Variant, StatusCode As
Variant, _
Cancel As Boolean)
'Si se produce un error se dispara este evento y mostramos el mensaje
con la
'url del parámetro NavigateError
MsgBox "No se puede navegar a la Dirección: " & vbNewLine & URL,
vbCritical, "Error"
End Sub
19 - Procedimiento para posicionar y redimensionar
los controles del formulario
Este procedimiento, coloca los controles en la ubicación correcta, no se ejecuta en el
evento resize del formulario, ya que solo se debe posicionar y redimensionar una sola
ves cuando se carga el formulario, por eso lo ponemos en el evento Load del Form: El
procedimiento se llama redimensionarControles y es el siguiente:
Private Sub RedimensionarControles()
On Local Error Resume Next
Dim ancho As Integer
'Para posicionar los cmdcontrol
cmdtoolBar.Item(0).Move 10, 25
For i = 1 To cmdtoolBar.Count - 1
ancho = cmdtoolBar(i).Width + ancho
cmdtoolBar(i).Move ancho, 25
Next
'Para posicionar el PicToolBar
18. PicToolBar.Move 25, 0, Screen.Width - 50, cmdtoolBar(0).Height +
CboDir.Height + 200
'Para posicionar el combo cboDir
CboDir.Move LblDir.Width + 100, cmdtoolBar(0).Height +
cmdtoolBar(0).Top + 100, PicToolBar.ScaleWidth - cmdNavigate.Width - 150
- LblDir.Width
'Para posicionar el Label que dice direccion lblDir
LblDir.Move 50, CboDir.Top + 50
'Para posicionar el botón cmdNavigate
cmdNavigate.Move CboDir.Left + CboDir.Width + 50, CboDir.Top,
cmdNavigate.Width - 100
'Para redimensionar y posicionar el control WebBrowser
WebBrowser.Move 10, PicToolBar.Height + 50, Screen.Width - 25,
Screen.Height - PicToolBar.ScaleHeight - 1200
'Para el Label de la barra de estado
lblStatusbar.Move 150, WebBrowser.Top + WebBrowser.Height + 100,
Screen.Width - 300
'Para posicionar la barra de progreso (Progressbar)
ProgressBar.Left = cmdtoolBar(4).Left + cmdtoolBar(4).Width + 50
End Sub
Procedimiento para quitar la propiedad TabStop de
todos los controles del formulario menos del control
WebBrowser y del control CboDir (combo de la barra
de direcciones)
Para quitar el TabStop de todos los controles para no poder movernos con la tecla tab,
podríamos hacerlo uno por uno, pero mejor es de esta manera, ya que si se agregan otros
controles nuevos, nos despreocupamos de volver a establecer la propiedad
manualmente, ya que el bucle recorrerá todos los controles, y solo dejará con la
propiedad TabStop en true del control WebBrowser y del Combo de las direcciones url
Private Sub QuitartabStop()
On Error Resume Next
Dim i As Integer, ctl As Control
For Each ctl In Me.Controls
'Deshabilitamos la propiedad TabStop de todos los controles,
exepto del control WebBrowser
'y del control cboDir (barra de direcciones)
If Not TypeOf ctl Is WebBrowser And Not TypeOf ctl Is ComboBox
Then
19. ctl.TabStop = False
End If
Next ctl
'Ponemos el botón que bavega (cboNavigate) con la propiedad Default en
True
cmdNavigate.Default = True
End Sub
Procedimientos que se ejecutan en la carga del form
En el evento Load del Form iría el siguiente código:
Private Sub Form_Load()
'Autocompletamos la caché de windows cuando tipeamos en el cboDir
Call AucompletarCache(CboDir)
'Ponemos en false la propiedad tabStop de los controles menos la _
del WebBrowser y la del Combo cboDir
Call QuitartabStop
'Para posicionar y redimensionar los controles
Call RedimensionarControles
End Sub
Los procedimientos QuitartabStop y RedimensionarControles, ya se vió anteriormente,
ahora hay uno que no se explicó y es el procedimiento AutocompletarCahe.
Este procedimiento hace uso de una función Api llamada SHAutoComplete y otra
llamada FindWindow. Lo que hace esta rutina, es poder asignarle al control ComboBox
las entradas de la caché de Windows (esto lo hace de forma automática), para que al
escribir una coincidencia, se autodesplieguen las entradas de las páginas ya visitadas, si
no entendés a lo que voy, mirando la siguiente imagen te va a quedar mas claro:
Para poder hacer esto agregar un módulo bas, y pegar las siguientes declaraciones Api y
el procedimiento AutocompletarCache
20. Aclaro que esto lo descubrí gracias al amigo Leandro Ascierto, ya que yo lo sabía
hacer pero utilizando un control textBox y no con un Combo. Para hacerlo con un
combo hay que utilizar otra Api (FinWindowEx).
'Constantes
Public Const SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
Public Const SHACF_AUTOAPPEND_FORCE_ON = &H40000000
Public Const SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
Public Const SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
Public Const SHACF_DEFAULT = &H0
Public Const SHACF_FILESYSTEM = &H1
Public Const SHACF_URLHISTORY = &H2
Public Const SHACF_URLMRU = &H4
Public Const SHACF_USETAB = &H8
Public Const SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
'Función Api SHAutoComplete para autocompletar la caché
Public Declare Sub SHAutoComplete Lib "shlwapi.dll" (ByVal hwndEdit As
Long, ByVal dwFlags As Long)
Public Declare Function FindWindowEx Lib "user32" Alias
"FindWindowExA" (ByVal hWnd1 As Long, _
ByVal hWnd2
As Long, ByVal lpsz1 As String, _
ByVal lpsz2
As String) As Long
'Procedimiento que recibe un combo como parámetro
Public Sub AucompletarCache(cbo As ComboBox)
Dim Handle As Long
Handle = FindWindowEx(cbo.hWnd, 0, "edit", nullstring)
SHAutoComplete Handle, SHACF_DEFAULT
End Sub
20 - Mostrar en el combo de direcciones, la Url que se
está cargando mediante el evento NavigateComplete2
Este evento como se dijo, se produce cuando al usar el método Navigate, se ha
alcanzado la url solicitada, entonces utilizamos la propiedad locationUrl para mostrarla
en el combo cboDir
21. Private Sub WebBrowser_NavigateComplete2(ByVal pDisp As Object, URL As
Variant)
'Mostramos la url que se está cargando en el combo
CboDir = WebBrowser.LocationURL
'Agregamos la url al combo
CboDir.AddItem WebBrowser.LocationURL
'Mostramos en el la barra de titulo del formulario el title _
de la página con la propiedad LocationName
Me.Caption = WebBrowser.LocationName
End Sub
21 - Abrir una nueva instancia del navegador cuando
se abra otra ventana en el evento NewWindow2
Como se había comentado antes, cuando hacemos click en un vínculo que se abre en
otra ventana (las de tipo _Blank o PopUp ), se inicia el Internet Explorer o el navegador
predeterminado que tengamos en el sistema para mostrar dicha página.
Para evitar esto y poder abrirlo con una nueva instancia de nuestro formulario web,se
puede hacerlo con el evento llamado NewWindow2. Este evento que se produce cada
ves que un vinculo se abre en una nueva ventana, y el mismo tiene una variable como
parámetro llamada Cancel. Al colocar esta variable en True, se cancela la ventana
impidiendo que se abra el navegador predeterminado, de esta manera, mediante la
sentencia New, creamos una copia del formulario y cargamos esa Url en la nueva
instancia:
El código fuente sería el siguiente:
Private Sub WebBrowser_NewWindow2(ppDisp As Object, Cancel As Boolean)
'Cancelamos la ventana del explorador predeterminado
Cancel = True
'Creamos una nueva instancia del navegador, es decir del formulario
Set NuevaVentana = New FrmWeb
NuevaVentana.Show 'lo hacemos visible
'cargamos la página en esta nueva ventana
NuevaVentana.WebBrowser.Navigate lblStatusbar
End Sub
22. Private Sub Form_Unload(Cancel As Integer)
'Eliminamos la variable de tipo FrmWeb cuando descargamos el
Formulario
Set NuevaVentana = Nothing
End Sub
Ahora, para poder crear el formulario de tipo FrmWeb, es decir una nueva instancia ,
debemos declarar la variable, en la zona de declaraciones :
'Variable para crear la instancia del navegador
Dim NuevaVentana As FrmWeb
22 - Código para la Barra de progreso
El evento que se dispara y que va indicando el progreso de las descarga de los
documentos en el control Web, es el evento ProgressChange. Este tiene 2 parámetros:
Uno llamado ProgressMax y otro Progress.
El código fuente para la barra de progreso es el siguiente:
'Evento ProgressChange del control WebBrowser que _
nos permite obtener los valores de descarga
Private Sub WebBrowser_ProgressChange(ByVal Progress As Long, ByVal
ProgressMax As Long)
On Error GoTo men
'El Máximo de la barra es la variable ProgressMax
ProgressBar.Max = ProgressMax
ProgressBar.Value = Progress
If ProgressMax <= 0 Then
ProgressBar.Visible = False
Else
ProgressBar.Visible = True
End If
Exit Sub
23. 'Error
men:
If Err.Number = 380 Then Resume Next
End Sub
Bueno acá termina este simple Navegador web en visual basic. Se pueden agregar
muchas otras opciones, como por ejemplo un botón para añadir páginas de favoritos,
Historial etc...
También un método interesante del control WebBrowser es ExecWb, este permite
realizar varias operaciones, como por ejemplo abrir la ventana de búsqueda que usa el
internet explorer, imprimir, guardar la página web , seleccionar texto, Copiar , Cortar,
vista preeliminar del documento cargado, y varias otras opciones
Si querés ver un ejemplo de como poder realizar esto último, en este enlace se muesta
como hacerlo: Método ExecWb del control WebBrowser
Ejemplo enviado por helmuth Schmelzer Campos
Este es otro ejemplo de un navegador simple usando el control webbrowser :
Descargar
... Y en este otro Link hay un código fuente de un navegador web con pestañas usando
un control TabStrip