SEPARAR ITEM DA LISTBOX

RAMON 19/04/2004 17:50:17
#21428
Tenho um listbox um textbox e 2 optionbutton


No listbox eu tenho um item duplo carregado Ramon Programador
Quando eu clicar nesse item eu quero que Ramon
carregue para o textbox1 e Programador o optionbutton (cujo o caption sera Programador) vai ser selecionado

Se tiver outra linha Ramon Analista então o optionbutton2 Analista vai ser selecionado.

Como fazer isso

Um amigo me falou para usar a funçao split() mas meu VB é 5 e não tem essa função para separar em vetor

Alguem poderia me dar um exemplo de como fazer
CAJU 19/04/2004 19:29:29
#21435
Resposta escolhida


Public Function Split(ByVal Texto,Optional ByVal SearchStr As String = " ") As Variant
Dim Words() As String, i As Integer
Dim j As Integer, k As Integer

If Len(Texto) Then
k = 0
i = InStr(Texto, SearchStr)
j = 1
Do While i
ReDim Preserve Words(0 To k)
Words(k) = Mid(Texto, j, i - j)
k = k + 1
j = i + 1
i = InStr(j, Texto, SearchStr)
Loop
ReDim Preserve Words(0 To k)
Words(k) = Mid(Texto, j, Len(Texto))
Else
ReDim Words(-1 To -1)
End If
Split = Words
End Function

Para usar defina um array e chame a função , assim :

Dim Matriz as Variant

Matriz = Split(string,delimitador)



Private Sub Command1_Click()
Dim vArray As Variant
For i = 0 To List1.ListCount - 1

vArray = Split(List1.List(i), " ")

For n = LBound(vArray) To UBound(vArray)
If vArray(n) = "Programador" Then Option1.Value = True: Exit For
If vArray(n) = "Analista" Then Option2.Value = True: Exit For
Text1.Text = Text1.Text & " " & vArray(n)

Next n

Next i
End Sub

resolvi?
CAJU 19/04/2004 21:32:47
#21460
eu sei que o VB6 existe essa função Split... sendo o VB do Ramon é o VB5... então mandei o código que imita o split do vb6
CAJU 20/04/2004 11:53:38
#21571
Private Sub Form_Load()
List1.AddItem "Ramon Programador"
List1.AddItem "Ramon é vbmaníaco Programador"

End Sub

Private Sub List1_Click()
Dim vArray As Variant
Text1.Text = ""
vArray = Split(List1.Text, " ")

For n = LBound(vArray) To UBound(vArray)
If vArray(n) = "Programador" Then Option1.Value = True: Exit For
If vArray(n) = "Novato" Then Option2.Value = True: Exit For
Text1.Text = Text1.Text & " " & vArray(n)
Next n

End Sub


-----------------
do seu jeito:

sItem = List1.List(List1.ListIndex)
pos = InStr(1, sItem, " ") 'somente um espaço " "
If pos 0 Then
primeiro = Left(sItem, pos - 1)
segundo = Right(sItem, Len(sItem) - pos)
Text1.Text = primeiro
if segundo = "Programador" then option1.value = true
if segundo = "Novato" then option2.value = true
' Text2.Text = segundo
End If


blz?
CAJU 20/04/2004 11:56:42
#21576
RAMON é melhor vc usar o split, pois no caso se tiver um nome composto não terá problemas:

ex:
Carlos Renato Maia Programador
vc colocando aquele exemplo do split vai pro text1 = Carlos Renato Maia e option programador vai ser selecionado.
CAJU 21/04/2004 10:08:25
#21727
Private Sub Form_Load()
List1.AddItem "Ramon Programador"
List1.AddItem "Ramon é vbmaníaco Programador"

End Sub

Private Sub List1_Click()
Dim vArray As Variant
Text1.Text = ""
vArray = Split(List1.Text, " ")

For n = LBound(vArray) To UBound(vArray)
If vArray(n) = "Programador" Then Option1.Value = True: Exit For
If vArray(n) = "Novato" Then Option2.Value = True: Exit For
Text1.Text = Text1.Text & " " & vArray(n) aqui que está o problema
Next n
Text1.Text = LTrim(Text1.Text) retira os espaços a esquerda
End Sub
CAJU 24/04/2004 10:11:04
#22360
vc pode fazer assim?

no começo de todo nome vc coloca um codigo:
ex:
1-ramon novato
2-carlos da silva Aprendiz
2-Juliana siqueira Aprendiz
2-Vivi Aprendiz
3-rubem programador

'1 = novato; 2= aprendiz; 3= programador
e coloca a propriedade Sorted = true

isso resolve
CAJU 05/05/2004 09:58:55
#23120
http://www.vbmania.com.br/vbmforum.php?varMethod=Abrir&varID=22571
Tópico encerrado , respostas não são mais permitidas