10 meses de estadísticas con Google Analytics…

Después de 10 meses usando Google Analytics para las estadísticas de mi Web (www.vbprincipiantes.com) voy a publicar los resultados.


Lo primero que veremos serán los navegadores usados por los visitantes de mi Web:



  1. Internet Explorer: Con un 81,78 % de las visitas obtenidas
  2. FireFox: Obtuvo un 15,60 % de las visitas
  3. Opera: Con un 1,74 %.

El resto de navegadores obtuvieron menos del 1%.


Estos son los sistemas operativos más usados:



  1. Windows con un 99,27 %
  2. Linux con un 0,58 %
  3. Macintosh 0,10 %

La combinación Sistema operativo/Navegador es la siguiente:



  1. IE 6.0 con WinXP con un 65,68 %
  2. IE 6.0 con Win2000, un 7,71 %
  3. IE 6.0 con Win98 obtuvo un 4,13 %

Las resoluciones más usadas fueron las siguientes:



  1. 1024×768, con un 60,38 %
  2. 800×600, un 20,32 %
  3. 1280×1024, con un 9,47 %

El 98,25 % tenía JavaScript habilitado.


Y solo una cosa más, decir que el record de visitas está el viernes 3 de marzo de 2006 y el record de páginas vistas el día 15 de ese mismo mes.

Textbox con efecto sombra

En este post os voy a explicar como crear un textbox con efecto sombra.

El efecto sombra es un texto que explica para que sirve el textbox o que debe incluir en él, en la siguiente figura podéis ver un textbox con efecto sombra y otro que no lo tiene.

Si nuestro segundo textbox se convierte en el foco de la aplicación, la fuente y el color se convertirán a la del primero y el texto estará en blanco. Si una vez perdido el foco el cuadro de texto está vacío este se volverá a convertir en la sombra. En caso de no estar vacio se mantiene con lo que el usuario a escrito.

Lo primero que debemos hacer es crear un control de usuario que llamaremos AdvancedTextbox.

Una vez que este creado vamos al código del diseñador, AdvancedTextbox.Designer.vb (debemos activar la opción Mostrar todos los archivos del explorador de soluciones para poder verlo).

En la línea 2 eliminamos esto:

Inherits System.Windows.Forms.UserControl

Y lo cambiamos por esto:

Inherits System.Windows.Forms.TextBox

Con eso nuestro control de usuario pasa de ser heredado de System.Windows.Forms.UserControl, por System.Windows.Forms.Textbox.

Ahora ya tenemos nuestro control de usuario exactamente igual que el Textbox de .NET, ahora tendremos que darle personalidad a nuestro textbox “avanzado”.

Para ello vamos al código de nuestro textbox y añadimos el siguiente código (he comentado todo el código para su fácil lectura):

1 Public Class AdvancedTextbox 2 3 'Variable que guardará la fuente para el texto normal 4 Private _defaultFont As Font = Me.Font 5 'Al igual que la anterior esta guarda el color 6 Private _defaultColor As Color = Me.ForeColor 7 'Y este es el texto que tendrá la sombra 8 Private _defaulttext As String 9 10 'Con esta propiedad vamos a cambiar el texto de la sombra 11 Property DefaultText() As String 12 Get 13 'Retornamos el texto que tenemos guardado 14 Return _defaulttext 15 End Get 16 Set(ByVal value As String) 17 'Comprobamos si ya se está mostrando la sombra 18 If Me.Text = "" Or Me.Text = _defaulttext Then 19 'De ser así le cambiamos al nuevo texto 20 Me.Text = value 21 'Ponemos la fuente de la sombra 22 Me.Font = New Font(_defaultFont, FontStyle.Italic) 23 'Y también ponemos el color de la sombra 24 Me.ForeColor = Color.Gray 25 End If 26 'Por último guardamos el nuevo valor 27 _defaulttext = value 28 End Set 29 End Property 30 31 'Ahora se debe poner automáticamente la sombra 32 33 'Para ello, cuando AdvancedTextbox obtenga el foco quitamos la sombra 34 Private Sub AdvancedTextbox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Enter 35 'Comprobamos si tiene la sombra 36 If Me.Text = DefaultText Then 37 'De ser así, vaciamos el textbox 38 Me.Text = "" 39 'Establecemos la fuente predeterminada 40 Me.Font = _defaultFont 41 'Y el color predeterminado 42 Me.ForeColor = _defaultColor 43 End If 44 End Sub 45 46 'En caso de perder el foco 47 Private Sub AdvancedTextbox_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LostFocus 48 'Si está vacio el textbox 49 If Me.Text = "" Then 50 'Establecemos el texto de la sombra 51 Me.Text = _defaulttext 52 'Establecemos la fuente de la sombra 53 Me.Font = New Font(_defaultFont, FontStyle.Italic) 54 'Y su respectivo color 55 Me.ForeColor = Color.Gray 56 End If 57 End Sub 58 59 'Al cambiar el texto debemos asegurarnos de que se muestre o no la sombra 60 Private Sub AdvancedTextbox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.TextChanged 61 'Por eso cuando el texto cambie validaremos su contenido 62 If Me.Text = _defaulttext Then 63 'Si es igual al texto de la sombra 64 'cambiamos su fuente y su color al de la sombra 65 Me.Font = New Font(_defaultFont, FontStyle.Italic) 66 Me.ForeColor = Color.Gray 67 'En caso de estar vacio cambiamos su texto le damos el foco 68 'Asi conseguimos que solo este vacio cuando tenga el foco 69 ElseIf Me.Text = "" Then 70 Me.Focus() 71 Else 72 'Por último al no estar vacío ni contener el texto de la sombra 73 'Establecemos la fuente y el color predeterminados 74 Me.Font = _defaultFont 75 Me.ForeColor = _defaultColor 76 End If 77 End Sub 78 End Class 79

Debido a que es la primera versión de este código ciertas propiedades, como por ejemplo Font y ForeColor no se pueden cambiar, siendo necesario su cambio en las variables privadas de la clase.

Las pruebas que he hecho has sido satisfactorias, pero, como ya sabréis, si es el programador el propio tester no suele tener problemas, ya que lo usa para lo que lo ha hecho, deberia testearlo otra persona.

Si os animáis a probarlo no dudeis en comentar vuestras opiniones y si no, siempre podéis comentar lo que queráis[:P]

Portada de dotNetMania 29 (Septiembre)

Tras las vacaciones todos nos ponemos las pilas, y los editores de dotnNetMania no son la excepción, empezó el mes y con el llega el contenido de dotNetMania 29, el número de septiembre. Este número promete ser tan bueno como los anteriores. Os dejo la portada para que la podáis ver.