TRUCO 1: ¿Cómo mostrar colores degradados en un formulario de VB?.
¿Se ha preguntado alguna vez cómo se consigue el efecto de color producido en la pantalla del SETUP.EXE?. Este efecto se denomina degradado o "dithering" y puede ser fácilmente incorporado en sus formularios utilizando la siguiente rutina:
Sub Degradado(vForm As Form)
Dim intContador As Integer
vForm.DrawStyle = vbInsideSolid
vForm.DrawMode = vbCopyPen
vForm.ScaleMode = vbPixels
vForm.DrawWidth = 2
vForm.ScaleHeight = 256
For intContador = 0 To 255
vForm.Line (0, intContador)-(Screen.Width, _
intContador - 1), RGB(0, 0, 255 - intContador), B
Next intContador
End Sub
Puede llamar a esta función desde el evento Paint del formulario. La rutina muestra un color azul degradado aunque usted puede modificar el color en la función RGB.
TRUCO 2: ¿Cómo comprobar la existencia de un fichero determinado?.
En ocasiones es necesario saber si un fichero existe antes de utilizarlo y evitar futuros problemas. La siguiente función muestra cómo verificar la existencia de un fichero:
Public Sub VerificarFichero(sNombreFichero As String)
On Error Resume Next
Open sNombreFichero For Input As #1
If Err Then
MsgBox ("El fichero " & sNombreFichero & " no existe.")
Exit Sub
End If
Close #1
End Sub
Private Sub Command1_Click()
VerificarFichero "prueba.txt"
End Sub
TRUCO 3: ¿Cómo mostrar un error de forma detallada al llamar a una API?.
La mayor parte de las APIs de 32 bits retornan información detallada sobre el error producido en caso de fallo. Para obtener esta información en un formato adecuado y útil, se pueden utilizar las funciones de la API GetLastError y FormatMessage.
Añada el siguiente código en un módulo de proyecto (.BAS):
Option Explicit
Public Declare Function GetLastError _
Lib "kernel32" () As Long
Public Declare Function FormatMessage _
Lib "kernel32" Alias "FormatMessageA" _
(ByVal dwFlags As Long, _
lpSource As Any, _
ByVal dwMessageId As Long, _
ByVal dwLanguageId As Long, _
ByVal lpBuffer As String, _
ByVal nSize As Long, _
Arguments As Long) As Long
Public Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Public Function InformacionError() As String
Dim sError As String * 500
Dim lErrNum As Long
Dim lErrMsg As Long
lErrNum = GetLastError
lErrMsg = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, _
ByVal 0&, lErrNum, 0, sError, Len(sError), 0)
LastSystemError = Trim(sError)
End Function
Para comprobar si se produjo algún error al llamar a alguna API utilice el siguiente código:
Private Sub Command1_Click()
MsgBox InformacionError
End Sub
TRUCO 4: ¿Cómo crear pequeños arrays utilizando el tipo Variant?.
Si necesita crear una lista pequeña de ítems se puede ahorrar bastante código utilizando el tipo de datos Variant en vez de un array dimensionado. Por ejemplo, añada un botón a un formulario estándar de VB y pegue el siguiente código en el evento Click del botón:
Private Sub Command1_Click()
Dim Lista As Variant
Lista = Array("Item1", "Item2", "Item3", "Item4")
MsgBox Lista(2)
End Sub
TRUCO 5: ¿Cómo especificar la longitud máxima en un ComboBox?.
El control ComboBox no tiene la propiedad MaxLength como una caja de texto. Sin embargo, se puede añadir código para simular esta propiedad. Por ejemplo, pegue el siguiente código en el evento KeyPress de un ComboBox:
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Const MAXLENGTH = 10
If Len(Combo1.Text) >= MAXLENGTH And KeyAscii <> vbKeyBack Then
KeyAscii = 0
End Sub
Se puede cambiar la constante MAXLENGTH a cualquier valor que se desee.