En C++ cuando queremos que un if no haga nada cuando un Text está vació escribimos if (Text1.Text ="") Then return; como se haría en Visual Basic
En VB hay 2 maneras, la primera es ignorarlo... con lo que sólo se hacen acciones si tiene texto:
If Text1.text <> "" then
' código
end if
En el ejemplo se ve que si no hay texto no se ejecuta código.
Claro que puede darse el caso que tras ese código haya más código y sólo queramos que se llegue ahí si hay 'texto'. La solución es salir como en C con return, pero VB6 emplea su propia instrucción.
If Text1.text ="" then exit function ' o sub si es una subrutina y no una función
Qué propiedad he de utilizar para usar un ComboBox con un Select Case. No sé como pasarle el índice de cada uno de los elementos del Combo para en función de lo seleccionado haga una cosa.
Listindex apunta al elemento actualmente seleccionado. Imagina una matriz, lisindex refiere al elemento actual.
Ahora bien para conocer el texto de un elemento cualquiera se usa la propiedad list. es como si tuvieramos una matriz llamada list
Combo1.List(23) ' refiere el texto del elemento 23
Private Sub Command1_Click()
Select Case (Combo1.list(combo1.listindex))
Case 0
MsgBox ("Cobre")
Case 1
MsgBox ("Aluminio")
End Select
End Sub
En un control combo a diferencia de un control lista, el valor del elemento seleccionado puede obtenerse directamente con la propiedad text:
dim Texto as string
Texto = combo1.List(combo1.Listindex)
msgbox Texto
Texto = Combo1.Text
msgbox Texto
Así, ambas líneas de código de asignación del texto son equivalentes. Pero ojo, esto no es recíprocamente cierto, es decir sólo es cierto cuando listindex es distinto de -1. Imagina que en el combo tenemos 7 elementos , los días de la semana, yo podría perfectamente hacer esto:
' para probarlo correctamente desde la interfaz pulsa por ejemplo en 'jueves'
Private Sub Command1_Click()
Dim Texto As String
Texto = Combo1.List(Combo1.ListIndex)
MsgBox Texto
Texto = Combo1.Text
MsgBox Texto
Combo1.Text = "Hola que tal" ' aquí automáticamente cambia el listindex a -1
MsgBox Combo1.ListIndex
Texto = Combo1.List(Combo1.ListIndex)
MsgBox Texto
End Sub
El msgbox 1 indicará 'Jueves', el 2º también, luego cambiamos el texto del combo, y automáticamente se cambia el listindex a -1 (incluso aunque el valor introducido exista en el combo), de hecho para verificarlo nos muestra listindex = -1 señal de que actualmente no hay elegido ninguno del combo (porque es eso lo que ha sucedido cuando hemos metido un valor directamente en el texto). Al final como ha cambiado el listindex a -1 (no itemseleccionado) entonces no hay texto para el elemento.
Si no queremos ese comportamiento debemos activar la propiedad 'Locked' del combobox, esto impide que el usuario introduzca texto en el combo, aunque por código nosotros todavía podremos cambiarlo. Por tanto es importante que sepas la diferencia entre usar: 'Combo1.Text' y 'Combo1.List(Combo1.ListIndex)' . Aunque oparecen lo mismo queda claro que no lo son. la 1ª expresión refleja el texto actualmente en el combo, la 2ª expresión refleja el contenido del elemento seleccionado, por eso la 1ª y la 2ª no necesariamente coincidirán.