Crear una lista a partir de un texto

Iniciado por Snort, 12 Noviembre 2006, 21:42 PM

0 Miembros y 1 Visitante están viendo este tema.

Snort

   Wenas a todos, pues vereis esqe necesito saber si se pueden meter los datos de un textbox en un listbox o listview, me explico, por ejemplo por ejemplo el text1.text es azul|*|rojo|*|amarillo|*|verde|*|rosa|*|negro|*|..., y qiero qe al pulsar el command1, se cree nu listbox con cada uno como list.text:
azul
rojo
amarillo
verde
...

   Supongo qe esto si qe se podra hacer, pero para complicarlo    aun mas tambien necesito (aparte) hacer lo mismo con dos datos en un list view, por ejemplo, el text1.text es azul|*|carlos\?\rojo|*|eva\?\verdel|*|juan\?\amarillo|*|jose\?\
y al pulsar command1, en el listview tendria qe qedar:

COLOR(Index0)                       NOMBRE(Index1)

azul                                        carlos
rojo                                        eva
verde                                      juan
amarillo                                   jose

   Bueno, espero qe me hallais entendido, si alguien me puede explicar como se podria hacer esto, muchiisimas gracias por adelantado

               Saludos

Gorky

Si te digo la verdad me extraña mucho que TU preguntes esto. Llevas bastante tiempo aqui y se me hace raro que no sepas como leer un archivo de texto y como meterlo en un listbox.

Y si es cierto que no lo sabes pues busca en el foro que se ha respondido mil veces.

CeLaYa

creo que ya muchas veces se ha dicho de funciones para manipular texto, pero hay te va una pista, deberias hacer un ciclo para recorrer todo el textbox (for, do while...etc) y usar instrucciones para separar el texto (mid, Right, Left, InStr) que quieres poner en el ListView, es muy sencillo.

ej

Dim j As Integer
Dim T As String

T = "renglón1|renglón2|renglón3|renglón4|renglón5"
i = 1
While i <= Len(T)
   
    j = InStr(1, T, "|", vbTextCompare)
    If j = 0 Then j = Len(T) + 1
    MsgBox Mid(T, i, j - 1)
    T = Mid(T, j + 1, Len(T))

Wend
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

Snort

   OK, gracias CeLaYa, el codigo va de lujo, voi a buscar lo del listview

CeLaYa

para lo del listview solo tienes que ir agregando items


Dim j As Integer
Dim T As String

T = "renglón1|renglón2|renglón3|renglón4|renglón5"
i = 1
While i <= Len(T)
   
    j = InStr(1, T, "|", vbTextCompare)
    If j = 0 Then j = Len(T) + 1
    ListView1.ListItems.Add ,, Mid(T, i, j - 1)
    T = Mid(T, j + 1, Len(T))

Wend
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

Snort

   Gracias, pero lo qe decia era usando dos columnas  y dos separadores en el texto por ejemplo Francia|Paris*España|Madrid*Italia|Roma*... y qe vayan listandose parejos en dos columnas. Ahora mismo no tengo tiempo pero ya me pondre y os digo...
Gracias CeLaYa

CeLaYa

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

Snort

   Gracias CeLaYa, ya tengo todo lo qe buscaba, al final el codigo lo he sacado a partir del primero qe posteastes, ha qedao asi, por si a alguien le interesa...
Option Explicit
Private Sub form_load()
Dim J As Integer
Dim T As String
Dim N As Integer
T = "españa|madrid|italia|roma|francia|paris|grecia|atenas|holanda|amsterdam"
N = 1
Dim X As ListItem
While N <= Len(T)
    J = InStr(1, T, "|", vbTextCompare)
    If J = 0 Then J = Len(T) + 1
    Set X = ListView1.ListItems.Add(, , Mid(T, N, J - 1))
    T = Mid(T, J + 1, Len(T))
    J = InStr(1, T, "|", vbTextCompare)
    If J = 0 Then J = Len(T) + 1
    X.SubItems(1) = (Mid(T, N, J - 1))
    T = Mid(T, J + 1, Len(T))
Wend
End Sub

Y si se poenen mas columnas solo hay qe repetir la ultima mitad del while...wend

Saludos