Ayuda urgente con textbox

Necesito la yuda de ustedes para lo siguiente, estoy creando un odontograma (odontológico en visual)y necesito poner aproximadamente 250 textbox.. Y cada textbox lleva el código que esta abajo... Existe alguna posibilidad de hacer algo más comprimido para no tener necesidad de meter este código en los 250 textbox, ya que es muy demorado engorroso,, y me puede fallar,,, ademas tener en cuenta que apare de los textbox del odontograma tengo otros textbox para llenar datos del paciente,, y pues que no se me vean afectados por algo que se haga globalmente para todo los textbox.
Private Sub Text1_Change()
If Text1.Text = "R" Then
Text1.BackColor = vbRed
ElseIf Text1.Text = "V" Then
Text1.BackColor = vbGreen
ElseIf Text1.Text = "A" Then
Text1.BackColor = vbYellow
ElseIf Text1.Text = "N" Then
Text1.BackColor = vbBlack
ElseIf Text1.Text = "B" Then
Text1.BackColor = vbBlue
ElseIf Text1.Text = "" Then
Text1.BackColor = vbWhite
End If
End Sub

1 respuesta

Respuesta
1
Copia y pega un textbox te va a preguntar si deseas deseas crear un array del control, eso quiere decir que creas una matriz de controles. Entonces le das que si.. así pega tus 250 text box que también los puedes crear en tiempo de ejecución así te evitas estar copiando y pegando los 250 textbox..
En fin suponiendo que copias y pegas cada textbox te debería quedar así:
Text1(0)
Text1(1)
Text1(2)... así hasta el control 249
Bueno y al hacer click sobre uno de ellos te aparece eL código change de la matriz
Private Sub Text1_Change(Index As Integer)
    If Text1(Index).Text = "R" Then
        Text1(Index).BackColor = vbRed
    ElseIf Text1(Index).Text = "V" Then
        Text1(Index).BackColor = vbGreen
    ElseIf Text1(Index).Text = "A" Then
        Text1(Index).BackColor = vbYellow
    ElseIf Text1(Index).Text = "N" Then
        Text1(Index).BackColor = vbBlack
    ElseIf Text1(Index).Text = "B" Then
        Text1(Index).BackColor = vbBlue
    ElseIf Text1(Index).Text = "" Then
        Text1(Index).BackColor = vbWhite
    End If
End Sub
Recuerda que una ventana puede tener un máximo de 254 controles, como lo hemos creado vale por uno.. así que si cada uno tiene un label los label también tendrás que hacerlo de forma matricial...
Saludos
?
?
?
Gracias amigo, pero no entendí muy bien esta parte,
Text1(0)
Text1(1)
Text1(2)... así hasta el control 249
Bueno y al hacer click sobre uno de ellos te aparece eL código change de la matriz,
¿Esto en que parte va o como la pngo en los controles?
Te voy a dar un ejemplo...
1-Crea un nuevo proyecto
2- Agrega un textbox, que por defecto va a tener el nombre Text1.
3- Copia este text1 (click derecho) y pégalo sobre este formulario
4- Te preguntará si deseas hacer una matriz (array) de controles y le das que SI
Te darás cuenta que ya tienes 2 controles con el mismo nombre Text1 pero lo que los diferencia es la propiedad INDEX, que para el primero es 0 y para el segundo es 1. Ahora para referirte a uno de estos botones debes indicar dentro del paréntesis el INDEX del control o sea Text1(0) para el primero y Text1(1).
5- Haz doble click sobre cualquiera de estos controles y te llevará al código del mismo.
Private Sub Text1_Change(Index As Integer)
---
--- Código <- aqui puedes pegar los if que se encuentran arriba
---
End Sub

Entonces "Código" se ejecutará cada vez que algún control Text1 cambie en este caso si cambia Text(0) o Text1(1)
La variable Index de tipo entero contiene el valor del control que ha ejecutado la acción change..
Haz este ejercicio y síguelo paso a paso y verás como lo entenderás y se te hará más fácil todo, cualquier consulta síguela posteando
Chao
Ok amigo el error era mio, pues esab digitando las letras en minúscula y no me funcionaba.. ahora me toca buscar,, como forzar para que solo se escriban letras mayúsculas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas