viernes, 20 de junio de 2008

String.PadLeft

He de reconocer que la tarea de saberte de memoria una mínima parte de las miles y miles de clases que se integran en .NET es inconmensurable y me causa fatiga.

Pero también es cierto que, muchas veces, nos complicamos la vida reinventando la rueda cuando invocando al método adecuado nos quitamos de dolores de cabeza.

El ejemplo típico es la función IsNumeric (mejor el TryParse) y ahora traigo el método string.LeftPad que es igual de sencillo y util.

Cuando estamos escribiendo una cadena, por ejemplo, que incluye un número al que tenemos que añadir ceros por la izquierda hasta rellenar un número dado de caracteres, hasta ahora me metía en un lío de condicionales. En cambio usando la siguiente sentencia, le digo que me rellene con ceros por la izquierda hasta obtener 8 dígitos.

cadena = cadena.PadLeft(8, CChar("0"))

Aquí solamente hay que tener en cuenta dos cosillas.
1. El resultado va a ser tipo string.
2. El carácter para rellenar debe ser del tipo Char.

Jo, qué sencillo y cuantas cosas se pueden obtener (el típico problema de rellenar con almohadillas o con líneas.

Este sistema también se hubiera podido utilizar en el formateo de una fecha.

Por último, también existe PadRight.

jueves, 12 de junio de 2008

Cómo evitar que la sesión caduque por inactividad

No soy dado a publicar enlaces pero esto que nos trae José Alarcón en su blog es un "problemilla" que me lleva amargando la vida hace años y que su solución es tan buena como sencilla.

jueves, 5 de junio de 2008

Google cars por Madrid

Ayer, llegando al trabajo, en la plaza de Atocha me encuentro con un Smart con un pedazo de mástil de la leche en el techo. Mirándolo con curiosidad me recuerda algo, y de repente caigo que es el coche que utilizan los de Google para hacer las fotos de las calles.

Estuve a punto de hacer un burnout con la moto para salir guapo en la moto… :)

miércoles, 4 de junio de 2008

Blog domitienda

Desde hace un año, más o menos, tengo alojado mis dominios con la empresa domitienda , el cual recomienda El Guille y con quien estoy muy contento, a ver si me suben la cuota de disco duro.

Hace un par de días decidí asociarme con un compañero para montar un CMI. Por supuesto elegí el DotNetNuke, el cual me parece muy robusto y para el que puedo desarrollar en mi querido Visual Studio.

Y buscando información sobre la instalación me llevé la sorpresa de que mi empresa de hosting ha abierto un blog que es muy, muy interesante.

Y aquí estoy recomendándolo.

martes, 3 de junio de 2008

DataGridView, selección de filas.

Por cosas del destino, estoy metido en mi primer proyecto con Visual Basic.NET para escritorio. Yo, alma y carnaza de asp.net, me veo observando boquiabierto la cantidad de cosas que puede hacer este control en comparación con mi querido/odiado ViewGrid.

Mejorando la aplicación para nuestros sufridos usuarios (la UT anterior había desarrollado de espaldas a todo el mundo) me veo en la necesidad de que el usuario pueda seleccionar una fila, que abre otro formulario, y que, cuando refresque el DataGridView, mantenga la fila seleccionada y que además la mantenga dentro de la pantalla sin perderse por las profundidades del scroll.

Lo primero es muy fácil. Capturo en el evento de doble clic en una celda (así está hecho. Y tengo que mirar seleccionar por filas) el índice de la fila seleccionada y lo cargo en una variable para luego hacer una selección de fila por ese índice.

Aquí capturo la fila en la que se realiza el doble clic.

Private Sub dgvDocumentos_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvDocumentos.CellContentDoubleClick

intFilaSeleccionada = e.RowIndex

End Sub


Y aquí le digo al grid cual es la fila que debe volver a seleccionar una vez vuelto a cargar el Grid.

Public Sub CargarGrid()



Me.dgvDocumentos.Item(0, 0).Selected = False
Me.dgvDocumentos.Item(0, intFilaSeleccionada).Selected = True

End Sub

Pero, y siempre hay uno, el problema es que al recargar el control, me saltaba a la primera fila, y perdía de vista la fila seleccionada.

Buscando la solución me recorrí media Internet de la mano de San Google y al final, en un foro de MSDN encontré una sencilla y eficaz solución:

Me.dgvDocumentos.FirstDisplayedScrollingRowIndex = intFilaSeleccionada

Y VOALA!!

lunes, 2 de junio de 2008

Vuelta con la certificación.

El objetivo inicial de este blog era contar las aventuras y desventuras en mi primera certificación.

El problema es que la vida diaria y un cambio de cocina/salón me han quitado de todas las actividades extra profesionales (incluido las del tiro con arco) y me he centrado más en añadir entradas de cosas que estaba desarrollando en ese momento.

Ahora, con un poco más de tiempo y en un cliente muy bueno, tengo la intención de retomar las prácticas de test a ver si me puedo presentar en Julio o así.

Deseadme fuerza, persistencia y suerte.

Formateo de la salida obtenida en un TimeSpan.

Estoy realizando una pequeña aplicación para mi disfrute personal que, dados el tiempo por vuelta y el total del tiempo de carrera, me indica cuantas vueltas voy a dar.

Para ello he utilizado tipos de datos TimeSpan para realizar operaciones entre lapssos de tiempos, pero que me daban “problemillas” cuando quería formatear los datos introducidos y los resultados.

Dando vueltas al final he utilizado las propiedades de formatear de la clase string, de la forma siguiente:

txtbTiempoPorVuelta.Text = String.Format("{0:00}:{1:00}", TiempoPorVuelta.Minutes, TiempoPorVuelta.Seconds)

txtbTiempoTotal.Text = String.Format("{0:00}:{1:00}", TiempoTotal.Hours, TiempoTotal.Minutes)


Como ves, estoy cargando los minutos y los segundos el primer textbox, y las horas y los minutos en el segundo. Y con esto consigo que siempre me salga en formado de cuatro dígitos.

Es algo muy sencillo y básico, pero que en el día a día usas muy poquitas veces.