TRUCO 1: SSPANEL y Barra de Progreso.
Para implementar una barra de progreso en Visual Basic 4.0 se puede utilizar el control OCX Gauge o el control ProgressBar de Windows 95. En el entorno de 16 bits los controles de Windows 95 no están disponibles, por lo que no es utilizable el control ProgressBar, y el control Gauge a veces produce parpadeos no deseados.
Un pequeño truco para implementar una barra de progreso, que además muestra la evolución en %, es utilizar el control SSPanel, componente del threed16.ocx y threed32.ocx para 16 y 32 bits respectivamente. Basta con utilizar las propiedades FloodType y FloodPercent. En tiempo de diseño se coloca la propiedad FloodType con el valor 1 - Left to Right. La propiedad FloodPercent (sólo utilizable en ejecución) puede utilizarse en un código como el siguiente añadido al click de un botón: Dim i As Integer
For i = 1 To 100
SSPanel1.FloodPercent = i
DoEvents
Next
De esta forma, conseguimos rellenar el SSPanel desde el valor 0 al 100.
TRUCO 2: DBCOMBO y Registro Actual
Podría pensarse que si en un formulario disponemos de un control de datos (data control) y un control dbcombo asociado a él para visualizar los datos de una columna de una tabla, la selección de un elemento en el dbcombo supone que automáticamente el registro actual en el control de datos (es decir, en el cursor) es aquél cuyo valor coincide con el seleccionado en el control dbcombo.
Este no es en realidad el comportamiento de este control, en cambio con una única línea de código podemos conseguir dicha funcionalidad. La siguiente línea coloca como registro actual en el cursor, el coincidente con el valor actualmente seleccionado en el dbcombo: Data1.Recordset.Bookmark = DBCombo1.SelectedItem
TRUCO 3: ¿Cómo incluir dos campos en un control DBCOMBO?
El control dbcombo de Visual Basic permite visualizar campos independientes de la tabla especificada en un control de datos. Hay una forma sencilla de incluir el contenido de dos campos en este control. Para ello basta con indicar en la propiedad RecordSource del
control de datos la sentencia SQL apropiada. Por ejemplo:
RecordSource = "select au_id & "" "" & author as "& _"enlazado from authors"
Selecciona y concatena los campos au_id y author de la tabla Authors. El control dbcombo podrá asociarse posteriormente al campo enlazado.
En un proyecto Visual Basic, para hacer esto deberían añadirse los controles dbcombo y
data control en un formulario e indicar en sus propiedades: Data1
DatabaseName = "C:\vb4\Biblio.mdb"
RecordSource = "select au_id & "" "" & author as " & _"enlazado from authors"
DBCombo1
ListField = "enlazado"
BoundColumn = "enlazado"
TRUCO 4: Parpadeos al descargar un formulario con un DBGRID.
En determinadas circunstancias, al descargar un formulario que contiene un dbgrid, el formulario que lo mostró puede quedar parpadeante, siendo imposible que el usuario
vuelva a tomar el control de la aplicación.
¿Qué circunstancias son estas?
Las condiciones bajo las que se produce este hecho son:
- Un Form1 muestra de forma modal un Form2 (Form2.Show 1).
- Form2 muestra a su vez un tercer formulario Form3 también de forma modal (Form3.Show 1).
- Form3 contiene un dbgrid.
Bajo estas circunstancias, al descargar el Form3, por ejemplo desde un botón con el código: Private Sub Command1_Click()
Unload Me
End Sub
El foco, que debería volver a Form2, queda indeterminado. El resultado es que el formulario Form2 parpadea continuamente, siendo imposible volver a tomar el control en dicho formulario, y por tanto en la aplicación.
¿Cómo impedir este comportamiento?
Simplemente añadiendo una línea Me.Enabled = False en el código del botón que descarga Form3, con lo que el código en este botón quedaría Private Sub Command1_Click()
Me.Enabled = False
Unload Me
End Sub
TRUCO 5: ¿Cómo introducir valores en una celda de un DBGRID?.
Aparentemente, la forma correcta y más simple de introducir valores en una celda de un dbgrid ligado a un control de datos (data control), es utilizando la propiedad Value. En cambio, si en un formulario insertamos un código como el siguiente: Private Sub Command2_Click()
DBGrid1.Columns(2).Value = 438
End Sub
se lanzará el error 438 en tiempo de ejecución: "el objeto no acepta esta propiedad o método".
Realmente la forma correcta de introducir valores en una celda de un dbgrid es a través del control de datos asociado con el dbgrid. De esta forma el código: Private Sub Command1_Click()
Data1.Recordset.Edit
Data1.Recordset.Fields(1) = 438
Data1.Recordset.Update
End Sub
cumple la misma labor y no da lugar a ningún mensaje de error.
|