Está en la página 1de 4

 Trucos VB III

Como aumentar el Tamaño de un RichTextBox en Ejecución (y cualquier


TextBox, Picture, etc.)
Private Sub Form_Resize()
If Not Me.WindowState = vbMinimized Then RichTextBox1.Move 0, 0, Me.Width -
100, Me.Height - 400
End If
End Sub

Despliegue Automático de un ComboBox al recibir el Foco...


En primer lugar, debes declarar la funcion en un modulo BAS:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _lParam As
Long) As Long
Y escribe este código en el evento GotFocus del control ComboBox:
Sub Combo1_GotFocus()
Const CB_SHOWDROPDOWN = &H14F
Dim Tmp
Tmp = SendMessage(Combo1.hwnd, CB_SHOWDROPDOWN, 1, ByVal 0&)
End Sub

CheckBox en DBGrid...
El Grid tiene una propiedad Columns que hace referencia a la columna encuestion.
La columna
tiene otro objeto ValueItems que determina el aspecto de la columna. La propiedad
Presentation
de este objeto determina el modo de presentación. El valor 4 representa a un
checkbox.
TDbGrid1.Columns(1).ValueItems.Presentation = 4

Detectar si cambia el contenido de un Control TextBox


Solamente necesitamos un control TextBox y declarar en un Modulo lo siguiente:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As
Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
(Ojo, toda esta declaracion debe estar en una sola linea!!)
En el Evento Click del Form1 colocar lo siguiente:
Sub Form_Click()
    If SendMessage(Text1.hWnd, &HB8, 0, ByVal 0&) = 1 then
        Form1.Caption = "Se ha cambiado el Texto"
    Else
        Form1.Caption = "Se ha dejado igual el Texto"
    End If
End Sub

Una ventana con forma ELIPTICA !!!???


Solamente necesitamos declarar en un Modulo lo siguiente:
Public Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal
hWnd As Long, _
                ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Declare Function CreateEllipticRgn Lib "gdi32" Alias "CreateEllipticRgn"
(ByVal X1 As Long, _
                ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
En el evento click de la ventana:
Private Sub Form_Click()
       Dim Xs as Long, Ys as Long
        Xs = Me.Width / Screen.TwipsPerPixelX
        Ys = Me.Height / Screen.TwipsPerPixelY
    SetWindowRgn hWnd, CreateEllipticRng(0, 0, Xs, Ys), True
End Sub

Utilización de los controles DirListBox, DriveListBox y FileListBox


         Para ver el funcionamiento de este pequeño visor de iconos necesitamos
colocar en un
Form1 (default) los siguientes controles:
 1 Control DriveListBox
 1 Control DirListBox
 1 Control FileListBox
 1 Control Picture1
 1 Label1

       El Codigo a colocar es el siguiente:


     Private Sub Dir1_Change()
                File1.Path = Dir1.Path
        End Sub
        Private Sub Drive1_Change()
                Dir1.Path = Drive1.Drive
        End Sub
        Private Sub File1_Click()
            Picture1.Picture = LoadPicture(Dir1.Path & "/" & File1.FileName)
            Label1.Caption = "Icono Seleccionado: " & UCase$(File1.FilaName)
        End Sub
        Private Sub File1_PathChange()
            File1.FileName = "*.ICO"
        End Sub

El método ARRANGE
El método ARRANGE se aplica (casi exclusivamente) en los formularios MDI, ya que
es utilizado para ordenar de diversas formas los iconos y las ventanas abiertas.
        Este método es el aplicado en un item de menú que (habitualmente)
llamamos Ventana, donde, por ejemplo colocaremos como sub-items lo siguiente:
Cascada, Mosaico Vertical, Mosaico Horizontal y Organizar Iconos.
        El código para la ejecución se coloca en los eventos CLICK de cada item.
        Ejemplo:
     Private Sub Organizar_Iconos_Click()
        MDIForm.Arrange 3
        End Sub
        Private Sub Mosaico_Vertical_Click()
        MDIForm.Arrange 2
        End Sub
        Private Sub Mosaico_Horizontal_Click()
        MDIForm.Arrange 1
        End Sub
        Private Sub Cascada_Click()
        MDIForm.Arrange 0
        End Sub
Un sencillo Cronómetro
Para ejecutar un lapso de tiempo x (por ejemplo 5 segundos), escribir el siguiente
codigo en un Modulo Nuevo:
    Public Sub Esperar(Tiempo as Single)
        Dim ComienzoTiempo as Single
        Dim FinTiempo as Single
        ComienzoTiempo = Timer
        FinTiempo = ComienzoTiempo + Tiempo
        Do While FinTiempo > Timer
                Do Events
                 If ComienzoTiempo > Timer Then
                        FinTiempo = FinTiempo - 24 * 60 * 60
                End If
        Loop
   End Sub
        Para "llamarlo" desde un Form comun, colocar (por ejemplo, en el evento
Click)
   Esperar(5)

Eliminar el "Beep" al pasar el foco de un TextBox a otro control...


         Insertar el siguiente Codigo en el evento KeyPress de un TextBox de nuestro
Formulario:
                Private Sub Text1_KeyPress(KeyAscii As Integer)
                        If KeyAscii = 13 Or KeyAscii = 9 Then KeyAscii = 0
                End Sub

Situar el Cursor en un Control determinado


Para situar el cursor encima de  un control determinado, por ejemplo un Botón,
situar el siguiente codigo en un Modulo:
       Declare sub SetCursorPos Lib "User32" (ByVal X as Integer, ByVal Y as
Integer)
       Insertar en siguiente código en el evento Load de el Form:
       Private Sub Form1_Load()
            X % = (Form1.Left + Command1.Left + Command1.Width / 2  + 60 ) /
Screen.Twips
            Y%  = (Form1.Top + Command1.Top + Command1.Height / 2 + 360) /
Screen.Twips
            SetCursorPos X%, Y%
       End Sub
Nota: Para que sea mas fácil la escritura del codigo a colocar en el modulo, Visual
Basic trae el Visor de API de Windows

Mostrar / Ocultar el puntero del Mouse


Insertar el siguiente Codigo en los eventos Click de dos botones en nuestro Form
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
                Private Sub cmdOcultar_Click()
                    resultado = ShowCursor(False)
                End Sub
                Private Sub cmbMostrar_Click()
                    resultado = ShowCursor(True)
                End Sub

Pasar de un control a otro con "Enter"


Cambiar la Propiedad KeyPreview del control TextBox a True e inserte el siguiente
Codigo en el evento KeyPress del Form:
Private Declare Sub Form1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        SendKeys "{tab}"
        KeyAscii = 0
    End If
End Sub

Provocar la Transparencia de un Form


Insertar el siguiente Codigo en un Modulo:
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal
hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Nota: Debe estar todo en una sola linea (Usar el Visor de Texto API, que
viene con Visual Basic)
Insertar el siguiente Codigo en CommandButton para probar:
Private Sub Command1_Click()
    Dim Resp As Long
    Resp = SetWindowLong(Me.hWnd, -20, &H20&)
    Form1.Refresh
End Sub
 
Arreglo sugerido por Esteban:
En un módulo:
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal
hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const WS_EX_TRANSPARENT = &H20&
Public Const GWL_HINSTANCE = (-6)
Public Const GWL_EXSTYLE = (-20)
Public Const GWL_HWNDPARENT = (-8)
Public Const GWL_ID = (-12)
Public Const GWL_STYLE = (-16)
Public Const GWL_USERDATA = (-21)
Public Const GWL_WNDPROC = (-4)
y en el Form_Load
Call SetWindowLong(Form1.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)
Gracias, Esteban!

Centrar una Ventana


Para Centrar una ventana en el medio de la pantalla, colocar el siguiente codigo en
el evento Load de un Form:
Me.Move (Sreen.Width - Me.Width) / 2, Me.Move (Screen.Height - Me.Height) / 2

Presentar una pantalla Acerca de... por defecto (1):


Private Declare Function ShellAbout Lib "shell32.dll" Alias _
"ShellAboutA" (ByVal hwnd As Long, ByVal szApp As String, _
ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
Private Sub Command1_Click()
Call ShellAbout(Me.hwnd, "Mi Programa", "Copyright 1999, PMMF", Me.Icon)
End Sub

También podría gustarte