• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

morsa

[VB 2005 ] Aceder a um arraylist como sendo um Control

14 mensagens neste tópico

Olá a todos!

Estou com um pequeno problema e não sei e será possível solucionar da maneira que eu penso

Preciso de aceder a vários Arraylist de uma forma genérica, isto é, tenho dois Arraylist, por exemplo com o nome arr_1 e arr2. Preciso de aceder a qualquer um deles mediante o contolo onde ocorreu a alteracao (causa -> efeito)

Com os controlos é fácil aceder-lhes

 Dim xpto as Control = Me.Controls("nomedocontrolo") 

Da mesma maneira, gostava de poder aceder, ou pelo menos clonar o Arraylist mediante o parâmetro "name" mas não sei a qual das propriedades recorrer visto que a criação do Arraylist é feita no topo do formulário

 Private arr1 As New Arraylist 

Alguma ideia de como solucionar isto?

Desde já obrigado!

1abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podias ser mais especifico e colocar o Titulo na thread não unicamente a TAG [Vb 2005]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu coloquei assunto. Simplesmente este não apareceu.Tive algumas dificuldades em ver isto em Firefox... até o registo foi complicado. Deviam dar uma vista de olhos nisso (a imagem para despiste de spam nem sequer aparecia  :nono1: )

Adiante... preciso de obter os valores de um arraylist através do seu "nome" por exemplo, o nome da variável que o denomina "arr_1".

tenho algo parecido com

Private arr_1 As New ArrayList

e tal como é possível aceder a um objecto de um form, por exemplo uma ComboBox ou uma TextBox através de um simples

Dim x as new textbox
x = Me.Controls("nome_da_textbox")

gostava de poder fazer o mesmo com um arraylist, por exemplo

 Me.ItemsQueExistemNoFormulario("nome_do_arraylist")!

O que eu gostava de saber era o nome da func/propriedade que denominei por "ItemsQueExistemNoFormulario" :(

Alguma ideia? Tentei ser o mais explicito possível...  :biggrin:

1abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu ja percebi o que pretendes mas sinceramente não sei se é possivel fazer isso.

São assim tantos arraylists, que necessitas de fazer isso dinamicamente ? Não podes simplesmente usar um if para ver qual deves actualizar ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o k ele ta a pedir n e possivel axo.... so se criares  uma dll tu mesmo k faça isso :| mas vai ser dificil porke nao existe nenhuma maneira de buscar todas as arrya list abertas :|

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu pensei criar uma extensão da classe arraylist... usar o conceito de arraylist e associar-lhe uma nova propriedade Name, por exemplo... só não sei como percorrer o form á procura de objectos que a este pertençam...

Eu fiz qq coisa parecida em tempos... mas era em VB6... por isso suponho que dê. Já dei uma olhadela no MSDN da classe arraylist mas não consegui descortinar nada de especial... :|

Fico à espera de uma luz! LOL

1abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

TENS UMA LUZ :(:D Mas essa ta em lisboa :\

O pa se disseres para que queres isso podemos tentar contornar nao?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LOL

Não sei se vai adiantar mas aqui vai:

Tenho um formulário de orçamentação. A partir da BD carrego várias ComboBoxes com os valores dos vários artigos, filtrados por selecção de campos.

Simultâneamente crio instâncias de artigos, através da classe artigo que eu criei mediante as minhas necessidades e faço um ArrayList.Add(novoArtigo) desses produtos que li da base de dados. poderia adicionar tudo no mesmo arraylist mas é minha intenção separar as coisas. Poderia usar os índices de um só arraylist, ou algo semelhante. Ou quiçá criar um até uma propriedade na classe artigo para contornar isto. Mas necessito do índice da combobox para manipular o arraylist que a ele se encontra associado, para não andar com comparações de strings a este nível.

Como o formulário é "quase" «chapa 5» torna-se fácil por um lado mas a porra das nuances é que dão cabo do esquema...

Pode ser que dê uma ajuda...

1abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja tentante pegar nos arrays e fazeres um data binding para a combobox???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usa um dicionario.

Crias um dicionario em que a chave será o nome do array e o valor será o array em si.

Não sei em condições VB mas aqui vai o Código em C#, só precisas de traduzir.

Dictionary<String, ArrayList> arrays = new Dictionary<string, ArrayList>();

Depois é simples ir buscar o array que pretendes.

ArrayList a;
// Verificar se existe o array que queres por questões de segurança
if(arrays.containsKey("arr_1"))
    a = arrays["arr_1"];
else {
    a = new ArrayList();
    arrays.add("arr_1", a);
}
// E podes usar o ArrayList a à vontade. Atenção que se for a primeira vez que o usas o array estará vazio.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok. Vou tentar esse método do dicionário. Vou só ler qq coisa acerca disso :(

Obrigado :D

1abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora