ramon Postado Abril 25, 2004 Denunciar Share Postado Abril 25, 2004 è parecido mais não é issoNo load do form eu tenhoPrivate Sub Form_Load()List1.AddItem "Carlos araujo-------Goleiro"List1.AddItem "Rodrigo-------------Zagueiro"List1.AddItem "Paulo Roberto-------Meio"List1.AddItem "Ramom lima----------Atacante"End SubEste tracos ---------- estou simulando um espaco pois aqui no forum não aceita mais de um espaco em brancoEntão eu quero adicionar um nome do jogador (escrevo no textbox Pele) e escolho um optionbutom a posição dele AtacanteEntão tera que aparecer no listbox o nome do jogador espaco em branco seguido da posicão deleFicando Pelé-----------AtacanteIsto em baixo da linha ramon ---------atacanteSe eu escolher goleiro fica embaixo da linha que tem a posicao goeliroEntão o que eu quero é saber como adicionar este item Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 25, 2004 Denunciar Share Postado Abril 25, 2004 Veja bem, o segundo parâmetro do método AddItem permite que você especifique a posição em que o item será inserido. Além disso, como você já deve saber, a propriedade ListIndex guarda a posição do item selecionado atualmente. Com essas duas dicas já dá pra fazer o que você quer.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Abril 25, 2004 Autor Denunciar Share Postado Abril 25, 2004 Veja bem, o segundo parâmetro do método AddItem permite que você especifique a posição em que o item será inserido. Além disso, como você já deve saber, a propriedade ListIndex guarda a posição do item selecionado atualmente. Com essas duas dicas já dá pra fazer o que você quer.Abraços,Graymalkin Cara não consegui fazer Tentei e não deuPesso mais uma vez para você colocar um exemplo pois realmente to com dificuldadeNa boa coloca um exemplo de como fazer isso Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 25, 2004 Denunciar Share Postado Abril 25, 2004 Imagine que você tem 4 itens na listbox e quer inserir um novo item na terceira posição(terceira linha). Lembrando que os índices dos itens começam do 0, você faria:List1.AddItem "novo item", 2 Isso porque 2 é o terceiro item (0, 1, 2). Agora se você quer inserir um item abaixo do item que está atualmente selecionado basta saber qual é o índice do mesmo e somar +1. Podemos comprovar qual o índice do item selecionado verificando a propriedade ListIndex. Um exemplo: Msgbox List1.ListIndex Marque qualquer item e use o código acima para ver o índice do item marcado. Resumindo tudo agora, o código que você quer é: List1.AddItem "novo item", List1.Index+1Entendido?Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Abril 27, 2004 Autor Denunciar Share Postado Abril 27, 2004 Assim não serve para o meu casoPois imagine que eu tenha 10 itens com nomes diferentes porem 4 posições definidas (Goleiro, zagueiro, Meio e Atacante) Ramom Lourenco Goleiro Ramom Louco Goleiro Ramom sssssss Zagueiro Ramom ddddddk zagueiro Cicalno 1 zagueiro Ciclano 2 Meio Fulano 1 Meio Fulano 2 Atacante Fulano 3 Atacante Fulano 4 Atacante Então cada vez que eu adicionar um nome de jogador eu terei apenas 4 posições para definir aonde ele vai aparecer no listbox (que no caso serão os 4 optionbutton)Escrevo no textbox Fulano 5 e escolho o optionbutton Zagueiro. Terá que aparecer no listbox: Fulano 5 Zagueiro na linha que tem a palavra Zagueiro.você no exemplo me indicou a posição por linha 0,1,2 e na verdade eu precizo definir posição que vai aparecer no listbox pelo funcao do jogador (Goleiro, Zagueiro, Meio e Atacante)Aeh que ta a minha duvida?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 28, 2004 Denunciar Share Postado Abril 28, 2004 O problema é que a "função" do jogador é uma abstração que só você tem; para a listbox não importa o que está escrito em cada linha (e os elementos dela só existem em linhas e classificados por linhas). No entanto, isso não é, de fato, um problema. Você pode muito bem percorrer todos os itens da listbox procurando pela "função" e pegar a posição imediatamente posterior à última encontrada linha, cuja a "função" foi encontrada, e inserir o elemento.Em todo o caso você terá sempre que trabalhar com os índices das linhas, mesmo que queira inserir um elemento após outro baseando-se no texto (que é o mesmo que inserir um elemento na posição posterior à posição do elemento procurado). Isso é o que você deve compreender: você fala em "funções", em conteúdos das linhas, mas a listbox só entende os índices das linhas. Portanto, cabe a você criar uma maneira de "traduzir" uma coisa para a outra de forma transparente. Ou seja, tanto faz se você quer chamar a linha de "zagueiro" ou "atacante", o importante é que você se referencie a mesma de acordo com seu índice do elemento.Com tudo que já foi passado aqui é possível fazer o que você quer. Tente aí, e se não conseguir poste aqui a sua tentativa e eu tento ajudar-lhe.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Abril 29, 2004 Autor Denunciar Share Postado Abril 29, 2004 Cara infelizmente não consigui entenderFiz de tudo e não deuAgora fiquei mais confusso aindaDa para você colocar um exemplo dos codigos e se possivel uma explicação? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Maio 1, 2004 Autor Denunciar Share Postado Maio 1, 2004 Eai Graymalkin estou esperando sua ajuda Coloca aeh um exemplo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 1, 2004 Denunciar Share Postado Maio 1, 2004 Segue um exemplo, incompleto é claro (já que não sei os nomes dos seus optionbuttons e nem como você está formatando o nome do jogador e sua posição ao inserir). Veja (delimitei com ** os lugares onde você deve completar com seu código): Dim item As String posição = ** nessa variável deve entrar o texto da OptionButton escolhida ("Goleiro", "Atacante", "Zagueiro" ou "Meio") ** 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 = posição Then ultimo = i End If Next i List1.AddItem ** nome do novo jogador e sua posição **, ultimo + 1(Repare que na explicação abaixo as variáveis estão em itálico para não ter confusão)Esse exemplo acima percorre todos os itens da listbox verificando se a posição (positem) é igual a posição escolhida (posição). Caso positivo, a variável ultimo é atualizada com a posição (linha) do item. Quando o loop tiver terminado a variável ultimo estará com a posição (linha) da listbox em que apareceu pela última vez a posição.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Maio 1, 2004 Autor Denunciar Share Postado Maio 1, 2004 Valeu Graymalkin funcionou certinho.Mas tenho mais uma duvidaQuando a minha litsbox estiver vazia e eu adicionar um item usando o seu exemplo vai dar um erro, pois não tem nehhum item né.Como resolver isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 1, 2004 Denunciar Share Postado Maio 1, 2004 Verifique se ela está vazia pela propriedade ListCount, e caso positivo faça a inserção normal, caso contrário faça a inserção pelo método acima.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Maio 1, 2004 Autor Denunciar Share Postado Maio 1, 2004 mas pelo modo normal ela não vai ficar organizadaGoleiro, zagueiro, meio e atacanteComo fazer isso quando a listbox estiver vazia? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 1, 2004 Denunciar Share Postado Maio 1, 2004 Mas, se ela está vazia como você quer organizar? O primeiro item que aparecerá na ListBox será qualquer um deles. Após inserir as quatro posições (uma de cada) é que ela passará a ficar organizada a medida que você adiciona as demais.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Maio 2, 2004 Autor Denunciar Share Postado Maio 2, 2004 Mas você não entendeuEu sei que não tem nenhum itemdigamos que eu seleciono AtacanteVai aparecer AtacanteSeleciono zagueiro vai aparecer zagueiroFicandoAtacanteZagueiroAgora seelciono meiofica AtacanteMeioZagueiroMas ordem tá errada ela aparece conforme eu selecionoEu quero que fique GoleiroZagueiroMeioAtacanteComo resolver isso???tá ae o meu codigo Private Sub Command1_Click() nome = Text1.Text 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 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 List1.AddItem nome + " " + posicao, ultimo + 1 Else List1.AddItem nome + " f " + posicao End If End Sub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 2, 2004 Denunciar Share Postado Maio 2, 2004 Não, a ordem não está errada. Estaria errada se ela fosse contrária ao que diz o algoritmo, o que não é o caso. Mas, bem complicadinho esse seu esquema, hein? A idéia de agrupar todos eles eu até compreendo (e encorajo isso), mas já essa de definir a ordem acho meio desnecessária. Vou tentar pensar em algo para resolver isso, mas não garanto nada.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Maio 4, 2004 Denunciar Share Postado Maio 4, 2004 cara não dar para fazer isso num listviewSe dar o que eu teria que fazer de alteracao? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 5, 2004 Denunciar Share Postado Maio 5, 2004 Sim, você pode fazer com uma listview também. Todavia o "problema" (reitero que não o considero como tal) da ordem permanecerá. Essa semana dei um exemplo de inserção de dados em uma listview; dê uma olhada nos últimos tópicos.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 maslack Postado Maio 6, 2004 Denunciar Share Postado Maio 6, 2004 Ramon tem varios jeitos para resolver isso!!!Uma simples seria usar uma Collection e uma variavel interira ambos def como Private no topo do Form. Na Collection você armazena o valor da posicao cada vez q inserir um item no List1, assim testando a Collection você decide onde inserir o novo item na List1. To sem tempo para montar um exemplo, mas a galera do forum pode te ajudar com esta dica...AbraçosMaslack Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Maio 8, 2004 Autor Denunciar Share Postado Maio 8, 2004 Não entendiSera que alguém pode me dar um exemplo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 8, 2004 Denunciar Share Postado Maio 8, 2004 Ramon, Tente pensar, da forma mais lógica possível, como deveria ser a inserção de um (apenas um) item na listbox e quais as situações que deverão envolver sua inserção. Mas, antes, leia isso de novo:O problema é que a "função" do jogador é uma abstração que só você tem; para a listbox não importa o que está escrito em cada linha (e os elementos dela só existem em linhas e classificados por linhas). No entanto, isso não é, de fato, um problema. Você pode muito bem percorrer todos os itens da listbox procurando pela "função" e pegar a posição imediatamente posterior à última encontrada linha, cuja a "função" foi encontrada, e inserir o elemento.Em todo o caso você terá sempre que trabalhar com os índices das linhas, mesmo que queira inserir um elemento após outro baseando-se no texto (que é o mesmo que inserir um elemento na posição posterior à posição do elemento procurado). Isso é o que você deve compreender: você fala em "funções", em conteúdos das linhas, mas a listbox só entende os índices das linhas. Portanto, cabe a você criar uma maneira de "traduzir" uma coisa para a outra de forma transparente. Ou seja, tanto faz se você quer chamar a linha de "zagueiro" ou "atacante", o importante é que você se referencie a mesma de acordo com seu índice do elemento.Se você conseguir imaginar uma maneira lógica de se fazer isso, transformo em código pra ti.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Maio 8, 2004 Autor Denunciar Share Postado Maio 8, 2004 - Carregar um listbox com diversos jogadores, sendo que eles precisam estar ordenados por NOME e agrupados por função(Goleiro, Zagueiro,etc...). - Os nomes devem estar alinhados, simulando duas colunas: | NOME | FUNÇÃO |. EX: NOME................FUNÇÃO Andre................Goleiro Carlos...............Goleiro Mario.................Zagueiro Paulo.................Zagueiro Bruno.................Meio Everaldo.............Atacante Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 8, 2004 Denunciar Share Postado Maio 8, 2004 Até aí está praticamente tudo feito (só falta ordenar por nome, o que é, relativamente, fácil). No entanto, você não incluiu nesse caso acima a idéia de que as funções também estarão em uma determinada ordem. É em relação a isso que eu falava.Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Maio 9, 2004 Autor Denunciar Share Postado Maio 9, 2004 Mas ordem esta no exemplo acimaEstive pensando em fazer o seguinteNa minha list tem 4 itens que representam a funcão do jogadorOra se a lista não pode ser ordenada atraves de nomes(da segunda coluna) então por que não acrescentar um numero no nome do jogador1- Andre................Goleiro 1- Carlos...............Goleiro 2- Mario................Zagueiro 2- Paulo................Zagueiro 3- Bruno................Meio 4- Everaldo.............Atacante Ai esta a ordemSendo que teria que ter um jeito de remover estes numeros usando uma lista invisivel eu acho!Agora ta ai a ideia agora como transformar isto em código? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 9, 2004 Denunciar Share Postado Maio 9, 2004 Sim, a ordem está lá. Mas, você não explicou como ela será feita durante a inserção. E eu já disse: não existe uma segunda coluna. Isso é uma abstração que nós temos, para a listbox aquilo é só uma linha com informações e ela não se importa com o que quer que esteja lá.Você quer a ordem de Goleiro, Zagueiro, Meio e Atacante, certo? Pois bem, se você colocar primeiro um Atacante, e for inserir um Goleiro depois, este deve entrar antes do Atacante. Ainda nesse caso, se você for inserir um Meio ele terá de entrar entre os dois já existentes. Por fim, colocando o Zagueiro, ele terá de entrar entre o Goleiro e o Meio.Agora, vamos pensar em outra possibilidade: primeiro você colocou o Meio, depois vai colocar um Zagueiro, que deverá entrar antes do Meio. Colocando um Goleiro, este deverá entrar antes do Zagueiro. E, por fim, colocando um Atacante, este deverá entrar depois do Meio.E existem ainda outras possibilidades. É isso que você ainda não entendeu.A idéia do número, sendo fixo:1 - Goleiro2 - Zagueiro3 - Meio4 - AtacanteVai dar certo, mas isso aí já está praticamente pronto. Você não consegue alterar para que ele inclua o número na frente?Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ramon Postado Maio 9, 2004 Autor Denunciar Share Postado Maio 9, 2004 Você quer a ordem de Goleiro, Zagueiro, Meio e Atacante, certo? Exatamente Agora, vamos pensar em outra possibilidade: primeiro você colocou o Meio, depois vai colocar um Zagueiro, que deverá entrar antes do Meio. Colocando um Goleiro, este deverá entrar antes do Zagueiro. E, por fim, colocando um Atacante, este deverá entrar depois do Meio.Exatamente E existem ainda outras possibilidades. É isso que você ainda não entendeu.Quais as outras possibilidades? A idéia do número, sendo fixo:1 - Goleiro2 - Zagueiro3 - Meio4 - AtacanteVai dar certo, mas isso aí já está praticamente pronto. Você não consegue alterar para que ele inclua o número na frente?isso eu consigo a minha duvida neste cajo e se da para criar uma list invisivel colocando estes dados numerados e depois passar para outra listbox sem os numeros? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 9, 2004 Denunciar Share Postado Maio 9, 2004 Se tenho 4 elementos diferentes, as maneiras possíveis de arranjá-los (em grupos de 4) dá-se pela fórmula 4! / (4-4)! o que resulta em 24 combinações possíveis.Por que colocar em uma listbox invisível e depois colocá-los na outra? De qualquer forma, se você tivesse testado isso veria que dá certo. Exemplo: List1.Visible = False List1.AddItem "teste" List2.AddItem List1.List(0)A primeira listbox fica invisível (claro que você pode mudar a propriedade dela em tempo de desenvolvimento), um item é adicionado e na segunda listbox adiciona-se o item da primeira (que está invisível).Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ramon
è parecido mais não é isso
No load do form eu tenho
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
Este tracos ---------- estou simulando um espaco pois aqui no forum não aceita mais de um espaco em branco
Então eu quero adicionar um nome do jogador (escrevo no textbox Pele) e escolho um optionbutom a posição dele Atacante
Então tera que aparecer no listbox o nome do jogador espaco em branco seguido da posicão dele
Ficando
Pelé-----------Atacante
Isto em baixo da linha ramon ---------atacante
Se eu escolher goleiro fica embaixo da linha que tem a posicao goeliro
Então o que eu quero é saber como adicionar este item
Link para o comentário
Compartilhar em outros sites
27 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.