Visual Basic 6 - Usando Coleções
Podemos definir coleção como um agrupamento de itens relacionados. O VB está cheio de coleções , e mesmo sem ter percebido você já deve ter usado coleções no VB. |
As coleções são usadas para que possamos localizar elementos de um determinado grupo. Os formulários lidos em um programa estão na coleção de formulários - Forms , os registros de um recordset lidos estão na coleção de campos- Fields , os controles de um formulário estão na coleção controles - Controls.
Além destas coleções que eu citei acima - Forms , Controls e Fields - existe uma classe genérica de coleção para a definição de nossas próprias coleções; estou falando da classe Collection . È através desta classe que podemos criar muitos objetos de coleção , usando a terminologia da orientação a objeto , dizemos que podemos criar instâncias da classe Collection.
A classe Collection nos permite referenciar um grupo relacionado de itens como um simples objeto.
Para criar uma instância de um objeto do tipo Collection basta usar o código :
Dim Nome_do_Objeto As New Collection
Em seguida temos acesso aos quatro métodos oferecidos pela classe Collection : Add , Count , Item e Remove.
Abaixo temos um exemplo de código onde estou usando o método Add para incluir itens na em uma coleção e em seguida estou exibindo os valores incluídos. Perceba que o método Add permite a inclusão de um item com uma chave associada. Esta chave é usada para localizar e imprimir os itens.
Dim obj As New
Collection Dim Codigo As String Dim Nome As String Dim i As Integer For i = 0 To 5 Codigo = InputBox("Informe o código :") Nome = InputBox("Informe o nome: ") obj.Add Item:=Nome, Key:=Codigo Next |
For i = 1 To 6 Debug.Print obj.Item(i) Next |
Ao declararmos Dim Obj As New Collection a palavra-chave New faz com que o objeto de coleção seja criado na primeira vez em que for referenciado no código. No caso estou declarando a variável obj como sendo do tipo Collection.
Vamos mostrar um exemplo prático do uso de coleções usando formulários.
Vamos criar um novo projeto no VB 6.0 do tipo STANDARD e incluir mais dois formulários além do formulário padrão form1. Teremos então 3 formulários : Form1 , Form2 e Form3,
Inclua também uma caixa de combinação - combo1 - a inclua na combo o nome dos dois formulários : Form2 e Form3.
Finalmente inclua um botão de comando - Exibir Formulário - que será usado para exibir o formulário selecionado na combo.
Na seção General Declarations do formulário Form1 inclua o código abaixo onde declaramos o objeto do tipo Collection:
Option Explicit 'declara o objeto FormObjects como uma variável do tipo Collection Private FormObjects As New Collection |
Agora no evento Load do formulário Form1 inclua o código abaixo onde preenchemos a combo e a coleção com o nome dos formulários Form2 e Form3.
' Carrega a coleção com os objetos formularios usando seus nomes como chave Private Sub Form_Load() 'inclui na combo o nome dos formulários Combo1.AddItem "Form2" Combo1.AddItem "Form3" Combo1.ListIndex = 0 'incluimos na coleção os itens e a chave FormObjects.Add Form2, "Form2" FormObjects.Add Form3, "Form3" End Sub |
Para encerrar no evento Click do botão de comando temos o código a seguir onde atribuímos o nome do formulário selecionado na combo a variável frm que é do tipo coleção Form.
Ao fazermos frm.Show será exibido o formulário cujo nome foi atribuído no código: Set frm = FormObjects(Combo1.Text)
' Exibe o formulário de acordo com o nome na coleção Private Sub cmdExibeFormulario_Click() Dim frm As Form On Error Resume Next Set frm = FormObjects(Combo1.Text) If Err.Number Then MsgBox "Nome do formulário desconhecido" Exit Sub End If On Error GoTo 0 frm.Show End Sub |
O resultado pode ser visto na figura abaixo:
Com isto estou carregando formulários com base no seu nome. Sacou ...
Para descarregar todos os formulário carregados também usamos a coleção Forms. Se você quiser implementar este recurso o código é o seguinte:
' Descarrega todos os formularios Private Sub Form_Unload(Cancel As Integer) Dim frm As Form 'para cada objeto frm na coleção Forms For Each frm In Forms Unload frm Next frm End Sub |
Aqui percorremos a coleção usando For/Each.
Dica : Podemos usar as coleções para simplificar nosso código. Por exemplo , para limpar todos os controles TextBox de um formulário , ao invés de atribuímos a cada um valor vazio (TextBox1.text="" , TextBox2.text="" , etc.) Podemos percorrer a coleção Controls do formulário verificando o tipo de controle ; se ele for do tipo TextBox limpamos o dito cujo. O código pode ser assim escrito:
Sub limpaControles(frm As Form) For i = 0 To frm.Controls.Count - 1 If TypeOf frm.Controls(i) Is TextBox Then frm.Controls(i).Text = "" End If Next End Sub |
Até mais ver...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: