DUVIDAS NO LISTBOX

RAMON 05/05/2004 16:07:08
#23237
Olha só pessoal eu consigui adicionar os itens conforme a posição do jogador, mas na hora que eu adiciono ele não fica organizado como eu quero

Tipo
teria que cada vez que eu adicionar ficar
Goleiro
Zagueiro
Meio
Atacante

Mas se eu adicionar primeiro Atacante e depois Goleiro
Vai aparecer

Atacante
Goleiro

E na verdade eu quero que na ordem que eu definir e não o que o usuario definir.

Para vc entender ta ae o meu codigo

1 listbox, 1 botão e 4 optionbutton


Private Sub Command1_Click()
Dim item As String
Dim TabStop(0 To 1) As Long

'Posição das tabulações
TabStop(0) = 93
TabStop(1) = 130

'Limpa posições dos tabs
Call SendMessage(List1.hwnd, LB_SETTABSTOPS, 0&, ByVal 0&)

'Define as posição dos tabs
Call SendMessage(List1.hwnd, LB_SETTABSTOPS, 3, TabStop(0))

'Passa o conteudo do textbox para a variavel nome
nome = Text1.Text

'Procura pelo optionbutton selectado
If Option1.Value Then
posicao = Option1.Caption
ElseIf Option2.Value Then
posicao = Option2.Caption
ElseIf Option3.Value Then
posicao = Option3.Caption
ElseIf Option4.Value Then
posicao = Option4.Caption
End If


'Procura pela posicao do jogador
If List1.ListCount Then
For i = 0 To List1.ListCount - 1
item = List1.List(i)
pos = InStr(1, item, " ")
positem = Trim(Mid(item, pos + 1, Len(item) - pos))
If positem = posicao Then
ultimo = i
End If
Next i

'Adiciona os itens no listbox caso ela tenha itens
List1.AddItem nome & vbTab & posicao, ultimo + 1
Else
'Se não tiver nada no listbox então vai para este
List1.AddItem nome & vbTab & posicao
End If

End Sub


[\c]



Tem que ficar
Goleiro
Goleiro
zagueiro
zagueiro
meio
atacante
atacante

Não importa quantos itens tem mas tem que ficar sempre na ordem acima

Agora se vc deixar as 4 posicoes ja carregada no listbox ae funciona perfeitamenbte

[c]
Private Sub Form_Load()
List1.AddItem "Carlos araujo Goleiro"
List1.AddItem "Rodrigo Zagueiro"
List1.AddItem "Paulo Roberto Meio"
List1.AddItem "Ramom lima Atacante"
End Sub



Mas se a lista estiver vazia ae não fica na ordem que eu quero
O que eu poderia fazer para deixar na ordem Goleiro, Zaguiero, Meio, Atacante?


Outra duvida é que usando a constante vbTab no listbox aprece varios espacos em branco separando o nome da posicao (assim que eu quero pois ta definido a posição TabStop(0) = 93) mas na hora que salva em um arquivo ele salva somente com um espaco.
Como eu posso resolver isso?
USUARIO.EXCLUIDOS 05/05/2004 19:16:56
#23262
Resposta escolhida
RAMON, não daria para simplificar? Veja o código abaixo, se não lhe serve.


Option Explicit

Private Enum Posições
[Goleiro]
[Zagueiro]
[Meio]
[Atacante]
End Enum

Private nItem As Posições

Private sPosição(4) As String

Private Sub Form_Load()
sPosição(0) = "Goleiro"
sPosição(1) = "Zagueiro"
sPosição(2) = "Meio"
sPosição(3) = "Atacante"
Option1(0).Caption = "Goleiro"
Option1(1).Caption = "Zagueiro"
Option1(2).Caption = "Meio"
Option1(3).Caption = "Atacante"
Text1.Text = Empty
Command1.Caption = "Gravar"
Option1(0).Value = True
End Sub

Private Sub Option1_Click(Index As Integer)
nItem = Index
End Sub

Private Sub Command1_Click()
Dim nPos As Posições
Dim sNom As String
Dim sSep As String
Dim sPos As String
nPos = nItem
sNom = Mid$(Trim(Text1.Text) & String(20 - Len(Trim(Text1.Text)), " "), 1, 20)
sSep = String(5, " ")
sPos = sPosição(nItem)
List1.AddItem nPos & sSep & sNom & sSep & sPos
List1.Refresh
nPos = Empty
sNom = Empty
sSep = Empty
sPos = Empty
End Sub
Tópico encerrado , respostas não são mais permitidas