Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda con ListBox

Estas en el tema de Ayuda con ListBox en el foro de Visual Basic clásico en Foros del Web. Hola amigos! abro este hilo para solicitar su ayuda en un "problema" que me ha surgido, he hecho parte de un codigo declarando una matriz ...
  #1 (permalink)  
Antiguo 13/04/2006, 11:59
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
Ayuda con ListBox

Hola amigos! abro este hilo para solicitar su ayuda en un "problema" que me ha surgido, he hecho parte de un codigo declarando una matriz como cadena de caracteres (String) pero no logro que se presente en la list box, y desgraciadamente es un proyecto para la escuela que tal vez no pueda presentar, bueno espero que alguien pueda ayudarme ;) dejo el codigo comentado para ver si alguien se anima :)

Private Sub Command1_Click()
'Este modulo pide los datos para empezar la ordenacion.
Dim datos (1 To 3, 1 To 4) As String 'aqui declaro la matriz
For a = 1 To 3 'abro el ciclo para que solicite los datos
datos(a, 1) = InputBox("Introduce Matricula" & i)
datos(a, 2) = InputBox("Introduce Nombre" & i)
datos(a, 3) = InputBox("Introduce Apellido Paterno" & i)
datos(a, 4) = InputBox("Introduce Apellido Materno" & i)
Next a
'aqui deberia de ordenar para despues presentar los datos en la lista ya ordenados
Dim datos(a, 3) As String
For datos = 1 To 3

NO SE COMO PRESENTARLOS EN LA LIST BOX! AYUDA POR FAVOOR!
creo que la ordenacion tampoco esta bien, pero no se declararle que ordene por apellido, lo que en la matriz vendria siendo la tercer columna

For j = datos + 1 To 10
If (a(datos) > a(j)) Then
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next j
Next i
Rem visualiza la lista
For i = 1 To 10
Lsta.AddItem Str(a(i))
Next i
End Sub

De antemano muchas gracias.

Saludos!!!
  #2 (permalink)  
Antiguo 13/04/2006, 23:14
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
no sean malos, hechenme una mano, no importa en donde tenga que presentar la matriz, enun textbox, en un list box o en donde sea, me reprueban!!

gracias!!!
  #3 (permalink)  
Antiguo 14/04/2006, 07:58
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
jejeje ya he intentado muchisimas veces y no doy con la solucion, he probado poniendo una caja de texto y no he podido presentar la matriz ahi, haber si alguien sabe como presentar la linea "clave" en mi porblema yo hago asi:

Text1.Text = datos(1 to 3, 1 to 4) as String

siendo "datos" el nombre de la variable o matriz entre parentesis la dimension de la matriz (pequeña en lo que funciona :) ) y el final el tipo de variable, pero me manda un error que dice:

Error de Compilacion, error de sintaxis

como pueden ver soy todavia de nivel primario en esto de la programacion, pero por lo que alcanzo a entender estoy escribiendo mal la linea cierto? osea tal vez este combinando tipos de datos o algo asi... ojala y alguien me pudiera aclarar esto, no es que busqueque me hagan el trabajo (me engañaria a mi mismo) solo necesito un leve empujon, por favor!

muchas gracias!!
  #4 (permalink)  
Antiguo 15/04/2006, 13:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta

Una pregunta, pq tiene q' ser una matriz de dos dimensiones???
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 15/04/2006, 13:31
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación

Además, no tiene sentido q' definas 'datos' 2 veces...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 15/04/2006, 17:15
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Código:
Text1.Text = datos(1 to 3, 1 to 4) as String
¿Qué intentas hacer con eso? Esa línea no tiene sentido, tratas de convertir una matriz doble en una cadena de texto. Además, en VB6 que yo sepa, no se pueden declarar "in situ", deberás hacer Dim antes.
  #7 (permalink)  
Antiguo 15/04/2006, 19:16
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
buuff!! error de cita, lo siento...
  #8 (permalink)  
Antiguo 15/04/2006, 19:18
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
precisamente por eso necesito la ayuda, es que no se como presentar en un list box o en un text box una matriz de 2 dimensiones, osea no se como declararle al VB que necesito que presente la info en el list o text box.

contestando a la pregunta de David el Grande, la matriz tiene que ser asi por que el profesor asi la pidio, el explico exactamente como queria el codigo y desgraciadamente tuvo que ser asi...

en la ultima linea que me citas estoy declarando nuevamente la variable?? segun yo la estaba presentando o llamando al textbox. ayuda por favor que me reprueban!! jejejeje

saludos y gracias por las respuestas ;)

::::::::::::::EDITO (2:55 a.m.):::::::::::

he intentado poner asi:

Text1 = datos(a, 1) = InputBox("Introduce Matricula" & i)

y me da en el textbox "falso" eso que significa??

muchas gracias por la cubetada de humildad que me han dado, los he leido y son GURUS!!! de la programacion...

Última edición por Sirius381; 16/04/2006 a las 01:56
  #9 (permalink)  
Antiguo 16/04/2006, 03:53
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
haber, ya intente poniendo el codigo asi:

Private Sub Command1_Click()
For a = 1 To 2
datos = (matricula + nombre + apellido)
matricula = InputBox("dame matricula" & i)
nombre = InputBox("dame nombre" & i)
apellido = InputBox("dame apellido" & i)
Text1.Text = datos
Next a
End Sub

Private Sub Form_Load()
Dim datos(1 To 2, 1 To 3) As Integer, matricula As Integer, nombre As Integer, apellido As Integer, a As Integer

End Sub

pero la textbox me presenta la info solo del primer ciclo, es decir, si meto en el primero:

Matricula1.-123
nombre1.- juan
apellido1.-perez

matricula2.-456
nombre2.-jose
apellido2.- lopez

solo pone en la text box:

123juanperez

y no asi como necesito:

123 juan perez
456 jose lopez

eso en un ciclo de 2 vueltas, ya no puedo mas, ya son 7 dias de intentos y estoy convenciendome de que no doy mas... ojala y alguien pueda ayudarme, muchas gracias...

saludos!!
  #10 (permalink)  
Antiguo 16/04/2006, 19:08
 
Fecha de Ingreso: noviembre-2005
Mensajes: 43
Antigüedad: 18 años, 5 meses
Puntos: 0
Sonrisa Prueba con un Array dinámico

Aquí te paso un ejemplo para que lo analices y veas si puede ayudarte con tu problema.

Option Explicit
'Creo la estructura TDatos
Private Type TDatos
Nombre As String
Edad As Integer
Promedio As Long
End Type

'Declaración de la variable contador
Dim Cont As Integer

'Este es mi array dinámico una variable de tipo TDatos
Dim Registro() As TDatos

'En el boton 1 Agregar nuevo registro
Private Sub Command1_Click()
'Incremento la variable contador
Cont = Cont + 1
'Redimensiono el array con la cantidad de registros actuales
ReDim Preserve Registro(Cont)
'Voy introduciendo los datos necesarios
Registro(Cont).Nombre = txtNombre
Registro(Cont).Edad = txtEdad
Registro(Cont).Promedio = txtPromedio
'Agrego a un ListBox lo que está en TextBox (txtNombre)
List1.AddItem txtNombre
End Sub

'Boton 2 Muestra el resumen del registro seleccionado en el ListBox
Private Sub Command2_Click()
Dim i As Integer
Dim Msg
If List1.ListIndex > -1 Then
'Recorro la cantidad de registros que hay
For i = 0 To Cont
If List1.List(List1.ListIndex) = Registro(i).Nombre Then
Msg = "No: " & i & vbCrLf
Msg = Msg & "Nombre: " & Registro(i).Nombre & vbCrLf
Msg = Msg & "Edad: " & Registro(i).Edad & vbCrLf
Msg = Msg & "Promedio: " & Registro(i).Promedio & vbCrLf
Exit For
End If
Next i
MsgBox Msg
Else
MsgBox "Debe seleccionar un elemento de la lista.", vbExclamation + vbOKOnly, "Mostrar"
End If
End Sub

'Boton 3 Salir del programa
Private Sub Command3_Click()
Unload Me
End
End Sub

'Boton 4 Borrar registros
Private Sub Command4_Click()
Dim i As Integer, R As Integer
'Verificar si hay algún elemento seleccionado
If List1.ListIndex > -1 Then
For i = 0 To Cont
If List1.List(List1.ListIndex) = Registro(i).Nombre Then
Exit For
End If
Next i
'Verifico si la variable i es mayor que la cantidad de registros
If i > Cont Then Exit Sub
For R = i To Cont - 1
'Elimino el registro seleccionado y actualizo los registros existentes
Registro(R) = Registro(R + 1)
Next R
'Disminuyo un registro
Cont = Cont - 1
'Elimino el elemento seleccionado de la lista
List1.RemoveItem List1.ListIndex
Else
'Por si no hay ningún elemento seleccionado
MsgBox "Debe seleccionar un elemento de la lista.", vbExclamation + vbOKOnly, "Borrar"
End If
End Sub


Espero que puedas sacar algo de esto... y que tengas suerte.
Puedes escribirme a mi correo [email protected] para intercambiar ideas. Nos vemos.
  #11 (permalink)  
Antiguo 16/04/2006, 19:18
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
muchisimas gracias victor, lo reviso y te comento que ha pasado, de verdad muchas gracias.

ahora he hecho esto:

Private Sub Command1_Click()
Dim a(1 To 2, 1 To 3) As Integer
For i = 1 To 2
a(i, 1) = InputBox("matricula: ")
a(i, 2) = InputBox("nombre: ")
a(i, 3) = InputBox("apellido: ")
Next i

tratando de que se establezcan los campos nombre, matricula y tal en su debido especio dentro de la matriz, pero al querer presentarlo en text ò list box, me da errores (y que raro XD!)

vere si con el ejemplo que me mandas puedo armar algo ;)

de nuevo mil gracias! ya posteare resultados :)

saludos!!!
  #12 (permalink)  
Antiguo 16/04/2006, 21:51
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
de nuevo muchisimas gracias Victor pero esta vez no podre hacer uso del codigo que me mandas... :( hable (via Mail) con un colega de la escuela (que va mas atrasado que yo!!) y me dijo que obligatoriamente tenia que usar la declaracion de la matriz de 2 dimensiones y tal... he hecho esto:

Código:
Dim a(1 To 2, 1 To 3) As String
For i = 1 To 1
    a(i, 1) = InputBox("matricula:")
    List1.AddItem (a(1, 1))
    a(i, 2) = InputBox("nombre:")
    List1.AddItem (a(2, 1))
    a(i, 3) = InputBox("apellido:")
    List1.AddItem (a(3, 2))
Next i
For i = 1 To 1
a(2, 1) = InputBox("matricula:")
List1.AddItem (a(1, 2))
a(2, 1) = InputBox("nombre:")
List1.AddItem (a(2, 2))
a(2, 3) = InputBox("apellido")
List1.AddItem (a(3, 2))
Next i
y parece que estoy llegando a la solucion, el problema vendra al meter 50 registros! y no solo 2 como ahora...

haber si alguien me puede ayudar a corregir mi codigo, necesito que al introducir los datos estos se ordenen por el apellido... desde ya muchas gracias a todos!!

saludos!!
  #13 (permalink)  
Antiguo 17/04/2006, 08:12
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
bueno, creo que nadie sabe como presentar una matriz de 2 dimensiones en VB 6.0, es una lastima, hoy es lunes y mañana termina el plazo para entregar el trabajo... ni aunque me dijeran como se hace lo acabaria, falta la busqueda, la ordenacion etc... y yo creyendo que era tan facil jejeje bueno solo queria decir a Victor muchas gracias amigo! por el intento

y a David y Max, gracias! por dar esperanza jejejeje

saludos!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:52.