• Lunes 29 de Abril de 2024, 03:37

Autor Tema:  Re: Codigo para Pasar Items de un Combox a Varios TextBox  (Leído 10750 veces)

mexican

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« en: Miércoles 17 de Septiembre de 2003, 19:47 »
0
Codigo para Pasar Items de un Combox a Varios TextBox

Tengo un ComBox con una lista de items, estos items quiero pasarlos de uno en uno por medio de un CommandButton a 15 TextBox

Es decir el codigo me va checar si el primer TextBox ya esta lleno con un item entonces lo pasa al segundo y si el primero y el segundo ya estan llenos entonces me lo pasa al tercero y asi sucesivamente

Gracias de Antemano

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #1 en: Miércoles 17 de Septiembre de 2003, 20:15 »
0
Hola mexican

Para probar el ejemplo, añade a un formulario un ComboBox llamado Combo1 y un TextBox llamado Text1 al que establecerás la propiedad Index = 0.

Si quieres, para tener datos de prueba, en el evento Load del formulario carga el combo con 11 items:

**************************************
Private Sub Form_Load
Dim int1 As Integer
For int1 = 0 to 10
Combo1.AddItem "Elemento índice " & int1
Next int1
End Sub
**************************************

Ahora, al seleccionar un elemento del combo, este se añade a un nuevo TextBox y se elimina del combo

*******************************************
Private Sub Combo1_Click()
   
    If Combo1.ListIndex < 0 Then Exit Sub
   
    Dim int1 As Integer
    int1 = Text1.UBound
    Dim int2 As Integer, ind1 As Boolean
    For int2 = 0 To int1
        If Len(Text1(int2).Text) = 0 Then
            Text1(int2).Text = Combo1.List(Combo1.ListIndex)
            ind1 = True
            Exit For
        End If
    Next int2
    If Not ind1 Then
        int1 = int1 + 1
        Load Text1(int1)
        Text1(int1).Move Text1(int1 - 1).Left, Text1(int1 - 1).Top + Text1(int1 - 1).Height + 10
        Text1(int1).Text = Combo1.List(Combo1.ListIndex)
        Text1(int1).Visible = True
    End If
   
    Combo1.RemoveItem Combo1.ListIndex
   
End Sub
*******************************************

Ahora sólo tienes que adaptar el código a tus necesidades. No te compliques con lo del Load Text1(n)... La gracia del ejemplo para lo que tú quieres hacer es:

Textn.Text = Combo1.List(Combo1.ListIndex)

Suerte.

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #2 en: Miércoles 17 de Septiembre de 2003, 20:19 »
0
una vez convertidos tus textbox en matriz colocas el siguiente codigo.

Dim i as integer, ya_esta as boolean
Dim o as integer

for i = 0 to 14
     ya_esta=false
     o=1
     do until ya_esta=true
          if len(textbox.item(o).text)>0 then
             o=o+1
          else
             textbox.item(o).text=combo.list(i)
             ya_esta=true
          endif
     loop
next

Y listo...

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

mexican

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #3 en: Miércoles 17 de Septiembre de 2003, 22:33 »
0
Creo que tu codigo sería el mas sencillo y facil sin despreciar el de Brroz, lo que pasa es que no entiendo eso de matriz de controles, disculpa mi ignorancia, soy novato
Otra cosa me imagino que este codigo que me diste va puesto en el evento del CommandButton

Gracias

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #4 en: Miércoles 17 de Septiembre de 2003, 22:44 »
0
Este codigo ponlo donde tu quieras y funcionara.

En cuanto a una matriz de controles veras...

Cuando tu insertas un objeto en tu formulario este adquiere un nombre autonumerico, ejemplo TEXT1, TEXT2, TEXT3, etc,etc.

Bien...el problema de esto es que si tuvieras que hacer una operacion que involucre a todos estos textbox, tendrias que uno por uno setarlos manualmente, en cambio cuando los conviertes en matriz los puedes recorrer como te indique en el ejemplo simplemente por su nombre y luego por un indice.

Ejemplo.

text1.item(nro de textbox).text="hola"

Pero tu duda hasta este momento debe ser... "Como creo una matriz de controles ?"

Bueno...

Es muy simple..

Solo seleccionas el primer textbox, seleccionas en el menu edicion Copiar y luego Pegar.

Te aparecera automaticamente...

Ya existe un control llamado 'text1'. ¿Desea Crear una matriz de controles?

Y listo Pegas tantos controles como elementos necesites y luego veras que todos se llaman igual Text1.

Debes tener en cuenta que al pertenecer a una matriz de controles, a partir de ese momento cada vez que quieras referirte a alguno de ellos debes indicar TEXT1.ITEM(nro de textbox)

Espero que me hayas entendido.

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

mexican

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #5 en: Jueves 18 de Septiembre de 2003, 15:43 »
0
Hola Chiaravel

No se si me explique bien:

Ya tengo el combox con Items adentro
Quiero que al escoger un item del combox, y luego le doy click a un CommandButton me pase el item que escogi del combox a un textbox, si el primer textbox esta vacio entonces me lo ponga ahí, y si esta lleno entonces me lo pase al segundo textbox, 3, 4, 5, 6 etc.

Estos pasos se repiten cada vez que escoja un item del combox hasta llenar los 14 textbox

El codigo que me diste al darle click al botton me pone este error:

Error '340' en tiempo de ejecucion
El elemento '15' de la matriz de controles no existe

Gracias de antemano

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #6 en: Jueves 18 de Septiembre de 2003, 15:49 »
0
Hola.

En primer lugar el error te esta indicando que no has creado la matriz de controles como yo te explique.

No te habia entendido bien... Disculpa.

La Sintaxis para lo que tu quieres es...

Private Sub Button1_click()

Dim i as integer, ya_esta as boolean
Dim o as integer

ya_esta=false
o=1
do until ya_esta=true
     if len(textbox.item(o).text)>0 then
         o=o+1
     else
         textbox.item(o).text=combo.list(combo.listindex)
         ya_esta=true
     endif
loop


Listo..

Espero que ahora te funcione.

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

mexican

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #7 en: Jueves 18 de Septiembre de 2003, 15:57 »
0
En el codigo que me diste me sujieres que ponga en el Form Load un codigo, como le hago para poner dos codigos diferentes en el Form Load es decir ya tengo un codigo para que me cargue items el combox, como pongo el tuyo

Gracias

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #8 en: Jueves 18 de Septiembre de 2003, 16:36 »
0
Hola mexican.

Imos ver...

El código de ejemplo lo pongo con el fin de que tu lo analices, entiendas y ADAPTES a tus propósitos. El único motivo del código que va en Form_Load es añadir al combo datos de prueba para el ejemplo.

Lo que está claro es que NO TE VALDRÁ DE NADA PEGAR EL CÓDIGO DE EJEMPLO TAL CÚAL. Tienes que adaptarlo a lo que tú necesitas.

De todas formas, como veo que tienes verdaderos problemas para compreder los ejemplos (incluso a pesar de la explicación de Chiaravel), sin que sirva de precedente y con permiso de todos, te adjunto el código que necesitas.

********************************************
Private Sub Command1_Click()
    If Combo1.ListIndex < 0 Then
        MsgBox "Seleccione primero un elemento"
        Exit Sub
    End If
    Dim ctl1 As Control, int1 As Integer
    For int1 = 1 To 15
        Set ctl1 = Me.Controls("Text" & int1)
        If Len(ctl1.Text) = 0 Then
            ctl1.Text = Combo1.List(Combo1.ListIndex)
            Exit For
        End If
    Next int1
    Set ctl1 = Nothing
End Sub
*********************************************

Por favor, intenta comprender el ejemplo para que puedas aprender por ti mismo.

Ánimo y suerte.

mexican

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #9 en: Jueves 18 de Septiembre de 2003, 18:47 »
0
Creo que el probelma esta en la Matriz de Control" pero por mas que le doy Vueltas al codigo no logro entenderlo

No se si puedan darme un ejemplo ya echo con los textbox y el combox

Entenderia si no me lo pueden dar y disculpen otra vez mi ignorancia

Gracias
ramirog@valle.net.mx

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #10 en: Jueves 18 de Septiembre de 2003, 18:58 »
0
mexican, mexican...

Este último ejemplo de código debe de funcionar tal cúal en un formulario como el que decías. No usa ninguna matriz de controles (a diferencia del primero).

En tu formulario dices que tienes un ComboBox (supongo que llamado Combo1, si no es así, sustituye el nombre) y 15 TextBox llamados Text1, Text2, Text3,..., Text14,Text15. Muy bien. El código es para un ComandButton llamado 'Command1'. Si no lo tienes, añádelo. Copia el ejemplo (el último) en el formulario y ya está.

Mira el código hace lo siguiente:

Private Sub Command1_Click() 'Evento Click de un CommandButton llamado Command1
If Combo1.ListIndex < 0 Then 'Si no hay elemento seleccionado en el combo
MsgBox "Seleccione primero un elemento" 'Enviar un mensaje de aviso
Exit Sub 'Salir del evento
End If
Dim ctl1 As Control, int1 As Integer 'Declarar variables: una de tipo 'Control' y otra entero.
For int1 = 1 To 15 'Bucle del 1 al 15 (dices que tienes 15 textbox)
Set ctl1 = Me.Controls("Text" & int1) 'Asignar a la variable cada uno de los textbox (Text1, Text2, Text3 ....)
If Len(ctl1.Text) = 0 Then 'Si la longitud del texto del TextBox al que se refiere la variable es 0 (está vacio)
ctl1.Text = Combo1.List(Combo1.ListIndex) 'Asignar al textbox el valor del elemento seleccionado en el combo
Exit For  'y salir del bucle
End If
Next int1 'Bucle
Set ctl1 = Nothing 'Liberar referencia a objetos
End Sub

Yo creo que debería quedar claro, ¿no?

Chao.

mexican

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Codigo para Pasar Items de un Combox a Varios TextBox
« Respuesta #11 en: Jueves 18 de Septiembre de 2003, 19:41 »
0
Me acabas de resolver el problema, eres un genio

Creo el mayor problema era que cuando ponia los TextBox en formulario los TextBox iban con el Text1 escrito por default y no se los quitaba

Adios gracias, hasta la próxima