DUVIDAS NO LISTBOX
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
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?
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?
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
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