Está en la página 1de 15

Descripcin del control

Este control " Botn de comando ", nos permite ejecutar alguna rutina, funcin o procedimiento, generalmente en el evento click del mismo, para realizar de esta manera alguna tarea dentro del programa

Como se dijo, se utiliza generalmente en el evento Click par ejecutar alguna accin cuando se produce dicho evento, y es precisamente el evento Click, el que por defecto aade Visual Basic al control Por ejemplo, si colocamos un control Command1 en un formulario, y le damos DobleClick para que se abra la ventana de cdigo de visual basic, podemos ver la siguiente rutina: Texto planoImprimir 1. Private Sub Command1_Click() 2. 3. 4. End Sub Todas las instrucciones que estn dentro de este procedimiento, llamado Command1_Click, se ejecutarn cuando presionemos el botn. Por ejemplo si ejecutamos el siguiente cdigo, lo que hara sera mostrar la fecha del sistema en la barra de ttulo del formulario, utilizando la funcin Date de Visual Basic Texto planoImprimir 1. Option Explicit 2. 3. Private Sub Command1_Click() 4. ' -- Establecemos en la barra de ttulo del formulario la fecha del Pc 5. Me.Caption = Date 6. 7. End Sub Este otro ejemplo, al presionar el botn, termina el programa utilizando la funcin End de vb. Colocar un Botn en el form Texto planoImprimir 1. Option Explicit 2. 3. Private Sub Command1_Click()

4. End 5. End Sub 6. 7. Private Sub Form_Load() 8. Command1.Caption = "Salir" 9. End Sub

Propiedades
Las propiedades que posee el control CommandButton son prcticamente las que poseen el resto de controles estandar de visual basic, salvo algunas exclusivas como la propiedad Style. Propiedad Style La propiedad Style tiene 2 valores, 0 - Standar y 1 - Graphical. La primera es del clsico botn y este valor es el asignado por defecto. En cambio Graphical permite utilizar CommandButton para poder mostrar imgenes, cambiarle el color del fondo, el tipo de fuente, y utilizando el Api de windows, se puede cambiar por ejemplo el color de la fuente, es decir el ForeColor que este control no lo posee. Esta imagen muestra, en el Command1 , una imagen, por medio de la propiedad Picture que la puedes cargar desde la ventana de propiedades. El segundo, el Command2, no tiene imagen, pero muestra como se puede establecer el color de fondo, propiedad Backcolor, siempre y cuando la propiedad Style sea de tipo grfico, ya que si est en estndar no surtir efecto.

Otro ejemplo sobre esta propiedad: Al pasar el mouse por encima del Commandbutton, se cambiar la fuente, en Negrita, el Subrayado, y el color de fondo, al salir el puntero fuera

del botn, se reestablecer a la fuente normal, y se restaurar el color de fondo usando el color por defecto que utiliza windows para los botones, mediante la constante VbButtonFace Para el ejemplo, colocar un Command1, colocar la propiedad Style en Graphical y pegar estas lneas en el formulario: Texto planoImprimir 1. 2. 3. 4. 5. 6. 7. Option Explicit ' -- Flag para que no se ejecute constantemente ' -- el cdigo del Form y del CommandButton Dim Flag As Boolean Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Sin gle, Y As Single)

8. 9. ' -- Establecer la fuente del commandButton en negrita y con subrayado 10. If Flag Then 11. Command1.Font.Bold = True 12. Command1.Font.Underline = True 13. Command1.BackColor = vbWhite 14. Flag = False 15. End If 16. 17. End Sub 18. 19. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 20. ' -- Quita la negrita, el subrayado, y restaura el color de fondo 21. If Flag = False Then 22. Command1.Font.Bold = False 23. Command1.Font.Underline = False 24. Command1.BackColor = vbButtonFace 25. Flag = True 26. End If 27. 28. End Sub Propiedad Default Esta propiedad es muy til en ciertas locaciones, sobre todo en formularios y programas que utilizan bases de datos, y opciones para buscar. Default puede tener dos valores , True o False. Si est en True, el botn ser el botn por defecto que se ejecutar cuando se presione la tecla enter. Por ejemplo hagamos de cuenta

que nuestro programa contiene un botn. Ese botn ejecuta un cdigo para buscar datos en una base de datos. Si el usuario en un momento determinado, se encuentra escribiendo datos en un control textbox, y presiona la tecla Enter, el CommandButton al tener la propiedad Default en True, ejecutar el cdigo que tenga en el evento click. En este caso , en el evento clic, contendra todo el cdigo para realizar la bsqueda de registros. Un simple ejemplo Coloca: Un control TextBox, un CommandButton. Pega el siguiente cdigo Texto planoImprimir 1. Option Explicit 2. 3. Private Sub Command1_Click() 4. MsgBox "Se ejecut el evento Click del commandButton", vbInformation 5. End Sub 6. 7. Private Sub Form_Load() 8. ' -- Establecer propiedad Default 9. Command1.Default = True 10. 11. MsgBox "Coloca el cursor en un control textbox para que tome el foco, " & _ 12. "y luego, presiona la tecla enter, y vers como de todas formas " & _ 13. "se ejecut el evento click ya que es el control por defecto del" & _ 14. "formulario. ( Nota .Solo puede haber un solo botn con la propiedad " & _ 15. "Default en un formuario)", vbInformation 16. 17. End Sub

Propiedades de posicin Las propiedades de posicin son las que permiten cambiar el tamao y la posicin en el objeto que lo contiene. estas propiedades son cuatro : Left, Top, Height y Width. El siguiente ejemplo muestra como usar estas propiedades. Supongamos que nuestro formulario contiene un botn "Salir" en la parte inferior:

Ahora bien como hacer para que al presionar el botn de maximizar del formulario o cambiar de tamao el formulario, el botn contine situado en la esquina inferior derecha ? Para ello hay que modificar la propiedad Left y Top del botn. Pero donde colocar el cdigo? para ello se debe colocar en el evento Resize del formulario. Puedes probar este simple ejemplo con el siguiente cdigo: Texto planoImprimir 1. Option Explicit 2. 3. ' Valores para mrgenes - Prueba cambiando estos valores 4. Private Const MARGEN_IZQUIERDO As Single = 60 5. Private Const MARGEN_INFERIOR As Single = 60 6. 7. Private Sub Command1_Click() 8. Unload Me 9. End Sub 10. 11. Private Sub Form_Load() 12. Command1.Caption = "Salir" 13. End Sub 14. 15. ' -- Posicionar el botn al cambiar de tamao la ventana de formulario 16. Private Sub Form_Resize() 17. Command1.Left = (Me.ScaleWidth - Command1.Width) MARGEN_IZQUIERDO 18. Command1.Top = (Me.ScaleHeight - Command1.Height) MARGEN_INFERIOR 19. End Sub

Propiedad Enabled Esta propiedad lo que hace es habilitar o deshabilitar el botn. Es una propiedad que la poseen casi todos los controles, tanto los de Visual basic, como otros controles de terceros ( controles ocx o Activex ) Aqu puedes ver ver un pequeo ejemplo de su uso. Supongamos que nuestro programa contiene un un control de texto donde se ingresan datos para buscar registros en una base de datos. Y tambin tenemos un botn que contiene el cdigo que debe ejecutar para realizar la bsqueda dentro de la base de datos. Si en algn momento el control de texto no contiene datos, es decir no contiene texto valga la redundancia, no sera necesario que el botn se encuentre habilitado, por el contrario, deberamos deshabilitarlo. Puedes probar este simple ejemplo, colocando un control Textbox , un botn y pegando el siguiente cdigo en el formulario principal

Texto planoImprimir 1. Option Explicit 2. 3. 4. Private Sub Command1_Click() 5. MsgBox Text1.Text, vbInformation 6. End Sub 7. 8. Private Sub Form_Load() 9. Text1.Text = "" 10. Command1.Caption = "Buscar .." 11. End Sub 12. 13. ' -- El evento Change se produce cuando cambia el contenido 14. ' -- de la caja de texto 15. Private Sub Text1_Change() 16. If Text1.Text = "" Then 17. Command1.Enabled = False 18. Else 19. Command1.Enabled = True 20. End If

21. End Sub

Modificar propiedades de varios controles Si en el algn momento se necesita, por ejempo, habilitar o deshabilitar todos los botones que hay en el formulario, o por ejemplo camabiarle y establecerle otras propiedades que se deseen, puedes utilizar un bucle For Each para recorrer todos los controles del formulario,y utilizando el operador TypeOf de Visual basic, comprobar si el control dentro del bucle es de tipo CommandButton. Nota. El ejemplo no tiene ninguna utilidad especifica, solo muestra el uso del ejemplo. Debes colocar dos controles textBox. Text1 y Text2, y todos los botones que desees, por ejemplo 4 como mustra la imagen de abajo Al colocar el cursor en el Text1 se habilitarn todos los botones, luego al colocar el cursor en el Text2, es decir cuando recibe el foco, se deshabilitarn todos los botones.

Texto planoImprimir 1. Option Explicit 2. 3. Private Sub Form_Load() 4. Command1.Caption = "Opcin 1" 5. Command2.Caption = "Opcin 2" 6. Command3.Caption = "Opcin 3" 7. Command4.Caption = "Opcin 4" 8. End Sub 9. 10. ' \\ -- Procedimiento para activar y desactivar los botones 11. Sub EnabledDisabled(ByVal bValue As Boolean) 12. 13. ' -- Recorrer todos los objetos y controles del form 14. Dim xCtrl As Control 15. For Each xCtrl In Me.Controls

16. ' xCtrl es un Command Button ? 17. If TypeOf xCtrl Is CommandButton Then 18. ' si lo es, entonces habilitarlo o deshabilitarlo 19. xCtrl.Enabled = bValue 20. End If 21. Next 22. End Sub 23. 24. '\\ -- Deshabilitar 25. Private Sub Text2_GotFocus() 26. Call EnabledDisabled(False) 27. End Sub 28. 29. '\\ -- Activar 30. Private Sub Text1_GotFocus() 31. Call EnabledDisabled(True) 32. End Sub

Propiedad MousePointer y Mouseicon Estas dos propiedades son muy simples de usar y son comunes a la mayora de objetos y controles de vb Mousepointer devuelve o establece el tipo de puntero del mouse mostrado al pasar por encima de un objeto MouseIcon establece un icono personalizado para el mouse Ejemplo. Colocar un control ListBox y un botn. Pegar el siguiente cdigo fuente en el formulario

Texto planoImprimir 1. Option Explicit 2.

3. Private Sub Form_Load() 4. 5. With Command1 6. ' -- Puntero de mouse personalizado - Pasar usar con conos 7. .MousePointer = 99 8. ' -usar el cono del formulario ( Puedes especificar el que desees cargandolo desde la ventana de propiedades o utilizando la funcin LoadPicture) 9. .MouseIcon = Me.Icon 10. End With 11. 12. ' -- Cargar la lista de punters de mouse para el botn 13. With List1 14. .AddItem "0 - Default" 15. .AddItem "1 - Arrow" 16. .AddItem "2 - Cross" 17. .AddItem "3 - Beam" 18. .AddItem "4 - Icon" 19. .AddItem "5 - Size Ne SW" 20. .AddItem "6 - Size Ne SW" 21. .AddItem "7 - Size N S" 22. .AddItem "8 - Size NW Se" 23. .AddItem "9 - Up Arrow" 24. .AddItem "10 - HourGlass" 25. .AddItem "Custom" 26. End With 27. 28. End Sub 29. 30. Private Sub List1_Click() 31. ' -- Cambiar la propiedad MousePointer 32. With List1 33. If .ListIndex <> -1 Then 34. Command1.MousePointer = .ListIndex 35. End If 36. If .ListIndex = .ListCount - 1 Then 37. Command1.MousePointer = 99 38. Command1.MouseIcon = Me.Icon 39. End If 40. End With 41. End Sub

Mtodos y funciones

Este control prcticamente no contiene mtodos o funciones. El mas importante y el mas utilizado es el mtodo SetFocus, que tambin lo posen muchos otros controles. Lo que hace el mtodo setFocus, es poder establecer el enfoque a un objeto especifico, en este caso al botn. Su uso es muy simple, solo basta con ejecutarlo desde alguna parte de nuestro programa para que el Commandbutton pase a tener el foco. Una cosa muy importante a tener en cuenta , es que para poder establecer el foco a cualquier control de visual basic, el objeto se debe encontrar visible, y tambin se debe encontrar habilitado. Es decir, si la propiedad Visible o la propiedad Enabled del objeto se encuentran en False, esto producir un error en tiempo de ejecucin. Por ello siempre se debe colocar una rutina de error para poder controlar esto, o comprobando estas propiedades mediante una instruccin If Then Para recrear este error puedes ejecutar este cdigo Coloca dos botones Texto planoImprimir 1. Option Explicit 2. 3. Private Sub Command2_Click() 4. ' -- Esta instruccin generar un error, ya que le intentar pasar el foco 5. ' -- al command1, que se encuentra deshabilitado 6. Command1.SetFocus 7. End Sub 8. 9. Private Sub Form_Load() 10. ' -- Deshabilitamos el Command1 11. Command1.Enabled = False 12. MsgBox "Presiona el Botn Command2", vbInformation 13. End Sub Para solucionarlo, simplemente puedes hacer algo asi Colocar dos botones Texto planoImprimir 1. Option Explicit 2. 3. Private Sub Command2_Click() 4. With Command1 5. ' -- Si est visible y esta habilitado, entonces .. pasar el foco 6. If .Visible And .Enabled Then

7. .SetFocus 8. End If 9. End With 10. End Sub 11. 12. Private Sub Form_Load() 13. MsgBox "Presiona el Botn Command2", vbInformation 14. End Sub

Eventos principales del control CommandButton


Aparte del evento Click que se ejecuta cuando lo presionamos, otros eventos importantes son:

Evento GotFocus y LostFocus : Se disparan dichos eventos cuando el control recibe o pierde el foco MouseMove, MouseDown y MouseUp: El primero se dispara cuando el puntero del mouse se mueve encima del botn, MouseDown cuando el botn est abajo y cuando est arriba MouseUp

Por ejemplo para probar el uso de los mtodos GotFocus y LostFocus (recibe y pierde el foco) colocar 3 CommandButton, Command1, Command2 y Command3. Luego un Label1 que mostrar el control que recibe el foco (GotFocus) y un Label2 que mostrar el control que pierde el foco (LosFocus) Luego de aadir los controles pegar el cdigo siguiente en el formulario Texto planoImprimir 1. 2. 3. 4. 5. 6. 7. 8. Private Sub Command1_GotFocus() Label1 = "El foco lo tiene: " & Command1.Caption End Sub Private Sub Command2_GotFocus() Label1 = "El foco lo tiene: " & Command2.Caption End Sub

9. Private Sub Command3_GotFocus() 10. Label1 = "El foco lo tiene: " & Command3.Caption 11. End Sub 12. 13. Private Sub Command1_LostFocus() 14. Label2 = "Perdi el foco el: " & Command1.Caption 15. End Sub 16. 17. Private Sub Command2_LostFocus() 18. Label2 = "Perdi el foco el: " & Command2.Caption 19. End Sub 20. 21. Private Sub Command3_LostFocus() 22. Label2 = "Perdi el foco el: " & Command3.Caption 23. End Sub

Nota: en la ventana de cdigo pods ver que tens 2 combos o listas desplegables:

El combo de la izquierda muestra los objetos que tiene el formulario, es decir los controles, rutinas y funciones, y la lista de la derecha los eventos y mtodos del objeto seleccionado en la lista izquierda. En la captura del ejemplo anterior, se puede ver que cuando el cursor se encuentra dentro de la ventana de cdigo est situado en un procedimiento determinado, las listas se actualizan mostrndote dicho objeto, por ejemplo el cursor est en el control u objeto llamado Command3 en el evento Gotfocus, y las listas desplegables muestran esto mismo.

Siguiendo el ejemplo anterior, para escribir cdigo en el evento MouseMove del Command1 para que muestre un mensaje cuando pasa el mouse encima del botn, se tendra que seleccionar de la lista izquierda el Command1 de esta forma:

y despus seleccionar el evento que se quiera utilizar disponible en el otro combo desplegable, en este caso el MouseMove

Al hacer esto en la ventana de cdigo visual basic te agrega un procedimiento vaco:

Ahora el cdigo que escribas dentro de este procedimiento se va a disparar cada vez que pases el mouse encima del Command1. Por ejemplo para mostrar un mensaje con la funcin MsgBox cada ves que pases el puntero encima, agrega lo siguiente: Texto planoImprimir 1. Option Explicit 2. 3. ' -- \\ Evento MouseMove 4. Private Sub Command1_MouseMove( _ 5. Button As Integer, _ 6. Shift As Integer, X As Single, Y As Single) 7. 8. MsgBox "Ests encima del botn", vbInformation 9. 10. End Sub

Tomar la apariencia de los temas de windows para los botones


Por defecto el aspecto de los botones, no toma la apariencia del tema que tenga activo windows. Para poder hacer que los botones y el resto de los controles tengan la tengan, se puede utilizar un archivo Manifest.