Criar objeto
A maneira mais fácil de criar um objeto é clicar duas vezes no controle na caixa de ferramentas. Entretanto, para aproveitar ao máximo todos os objetos disponíveis no Visual Basic e em outros aplicativos, você pode usar os recursos de programação do Visual Basic para criar objetos em tempo de execução.
1. Crie referência de objeto com variável de objeto
2. Use módulos de classe para criar seus próprios objetos “do zero”
3. Crie sua própria coleção usando objetos de coleção
Detalhes sobre como acessar objetos são fornecidos em outros capítulos. Por exemplo, as funções CreateObject e GetObject são discutidas no Capítulo 10, “Programação com Componentes”.
Usar variáveis de objeto
Além de armazenar valores, as variáveis podem fazer referência a objetos. Assim como atribuir um valor a uma variável, você pode atribuir um objeto a uma variável pelos mesmos motivos:
1. Os nomes das variáveis tendem a ser mais curtos e fáceis de lembrar do que os valores que contêm (ou, neste caso, os objetos aos quais se referem).
2. Ao executar o código, as variáveis devem ser alteradas para referenciar outros objetos.
3. Fazer referência à variável que contém o objeto é mais eficiente do que fazer referência repetida ao próprio objeto.
Usar variáveis de objeto é o mesmo que usar variáveis regulares, exceto que há uma etapa adicional de atribuição do objeto à variável:
4. Primeiro declare as variáveis:
DimvariávelAsclass
5. Em seguida, atribua o objeto à variável:
Definirvariável=objeto
Declarar variáveis de objeto
O método de declaração de variáveis de objeto é o mesmo de declaração de outras variáveis, utilizando Dim, ReDim, Static, PRivate e Public. A única diferença é a palavra-chave New opcional e os parâmetros Class, que serão introduzidos posteriormente neste capítulo. A sintaxe é:
{Dim|ReDim|Estático|Privado|Público}variávelAs[Nova]classe
Por exemplo, você pode declarar uma variável de objeto que faça referência a um formulário em seu aplicativo chamado frmMain:
DimFormVarAsNewfrmMain 'Declara um tipo como frmMain
'variável de objeto.
Você também pode declarar uma variável de objeto que faça referência a qualquer formulário em sua aplicação:
DimanyFormAsForm 'Variáveis gerais do formulário.
Da mesma forma, você pode declarar uma variável de objeto que pode fazer referência a qualquer caixa de texto em sua aplicação:
DimanyTextAsTextBox 'pode fazer referência a qualquer caixa de texto
' (mas apenas uma caixa de texto).
Você também pode declarar uma variável de objeto, que pode fazer referência a qualquer tipo de controle:
DimanyControlAsControl 'Variáveis de controle gerais.
Observe que você pode declarar uma variável de formulário que faça referência a um formulário específico em seu aplicativo, mas não pode declarar uma variável de controle que faça referência a um controle específico. Você pode declarar uma variável de controle que faça referência a um tipo específico de controle (como TextBox ou ListBox), mas não a um controle específico desse tipo (como txtEntry ou List1). Contudo, controles específicos podem ser atribuídos a variáveis desse tipo. Por exemplo, um formulário com uma caixa de listagem lstSample poderia ser codificado assim:
DimobjDemoAsListBox
SetobjDemo=lstSample
Variável de objeto de atribuição
Use a instrução Set para atribuir o objeto à variável de objeto:
Definirvariável=objeto
Sempre que quiser que uma variável de objeto se refira a um objeto, você pode usar a instrução Set.
Às vezes você pode usar variáveis de objeto, especialmente variáveis de controle, para encurtar diretamente o código digitado. Por exemplo, o código original é assim:
IffrmAccountDisplay!txtAccountBalance.Text<0Then
frmAccountDisplay!txtAccountBalance.BackColor=0
frmAccountDisplay!txtAccountBalance.ForeColor=255
FimSe
Se você usar variáveis de controle, seu programa poderá ser significativamente reduzido:
DimBalAsTextBox
SetBal=frmAccountDisplay!txtAccountBalance
IfBal.Text<0Então
Bal.BackColor=0
Bal.ForeColor=255
FimSe
Tipos de objetos específicos versus tipos de objetos gerais
Uma variável de objeto específica deve referir-se a um tipo específico de objeto ou classe. Uma variável de formulário específica pode fazer referência a apenas um formulário no aplicativo (embora possa ser referenciada em uma das muitas instâncias desse formulário). Da mesma forma, uma variável de controle específica só pode se referir a um tipo específico de controle no aplicativo, como um TextBox ou um ListBox. Veja um exemplo, abra um novo projeto e coloque uma caixa de texto no formulário. Adicione o seguinte código ao formulário:
PrivateSubForm_Click()
DimanyTextAsTextBox
SetanyText=Texto1
anyText.Text=Olá
Fim Sub
Execute o aplicativo e clique no formulário. A propriedade Text da caixa de texto mudará para Hello.
Variáveis de objeto gerais podem fazer referência a um dos vários tipos de objetos específicos. Por exemplo, uma variável de formulário geral pode fazer referência a qualquer formulário no aplicativo; uma variável de controle geral pode fazer referência a qualquer controle em qualquer formulário do aplicativo. Veja um exemplo, abra um novo projeto e coloque vários controles Frame, Label e CommandButton em qualquer ordem no formulário. Adicione o seguinte código ao formulário:
PrivateSubForm_Click()
DimanyControlAsControl
SetanyControl=Form1.Controls(3)
anyControl.Caption=Olá
Fim Sub
Execute o programa e clique no formulário. O título do terceiro controle que você acabou de colocar no formulário mudará para Olá.
Existem quatro objetos gerais no Visual Basic:
Variáveis de objeto gerais são úteis quando não se sabe em tempo de execução se a variável se refere a um objeto de um tipo específico. Por exemplo, se quiser escrever código que funcione em qualquer formulário do seu aplicativo, você deverá usar variáveis de formulário gerais.
Observe que como só pode haver um formulário MDI na aplicação, não é necessário utilizar o tipo MDIForm geral. Sempre que precisar declarar uma variável de formulário que faça referência a um formulário MDI, você poderá usar um tipo MDIForm específico (MDIForm1 ou qualquer nome especificado na propriedade Name do formulário MDI) em vez do tipo MDIForm geral. Na verdade, você deve sempre usar um tipo MDIForm específico porque o Visual Basic pode determinar as propriedades e os métodos que fazem referência a um tipo de formulário específico antes de executar o aplicativo.
O tipo MDIForm geral é fornecido apenas para fins de integridade; será útil em versões futuras do Visual Basic ter vários formulários MDI em um único aplicativo.
forma como objeto
Os formulários são mais comumente usados para construir interfaces de aplicativos, mas também são frequentemente objetos chamados por outros módulos do aplicativo. Os formulários estão intimamente relacionados aos módulos de classe. A principal diferença entre os dois é que os formulários são objetos visuais, enquanto os módulos de classe não possuem interface visual.
Adicione métodos e propriedades personalizados
Métodos e propriedades personalizados podem ser adicionados ao formulário e acessados de outros módulos do aplicativo. Para criar novos métodos para um formulário, adicione um procedimento declarado com Public.
'Método para personalizar o Form1.
PublicSubLateJobsCount()
.
. '<declarações>
.
Fim Sub
O procedimento LateJobsCount pode ser chamado de outros módulos usando a seguinte instrução:
Formulário1.LateJobsCount
Criar novas propriedades para um formulário é tão simples quanto declarar uma variável pública no módulo de formulário:
PublicIDNumberAsInteger
As duas instruções a seguir podem ser usadas para definir e retornar o valor IDNumber do Form1 de outros módulos:
Formulário1.NúmeroID=3
Text1.Text=Formulário1.NúmeroID
Você também pode usar o procedimento Propriedade para adicionar propriedades personalizadas a um formulário.
Detalhes O Capítulo 9, "Programando com Objetos", fornece material detalhado sobre o procedimento Property.
Observe que você pode chamar as variáveis ou métodos personalizados do formulário sem carregar o formulário e também pode definir as propriedades personalizadas do formulário. Como resultado, você pode executar código no formulário sem carregá-lo na memória. Da mesma forma, fazer referência a um controle sem fazer referência às suas propriedades ou métodos não carregará o formulário.
Use a palavra-chave Nova
Use a palavra-chave New para criar um novo objeto, que é tratado como o objeto definido por sua classe. New pode ser usado para criar instâncias de coleções, formulários e classes definidas em módulos de classe.
Use a palavra-chave New em um formulário
Os formulários criados em tempo de design são classes. Novas instâncias desta classe podem ser criadas usando a palavra-chave New. Para ver esse processo em ação, desenhe um botão de comando e vários outros controles no formulário. Na janela Propriedades, defina a propriedade Nome do formulário como Amostra. Adicione o seguinte código no procedimento de evento Click do botão de comando:
DimxAsNewSample
x.Mostrar
Execute o aplicativo e clique no botão de comando várias vezes. Mova o formulário da frente para o lado. Como o formulário é uma classe com interface visual, cópias adicionais ficam visíveis. Cada formulário possui os mesmos controles nos mesmos locais onde o formulário foi projetado.
Observe que para fazer com que sempre existam variáveis de formulário e instâncias de formulários carregados, use variáveis estáticas ou públicas em vez de variáveis locais.
Você também pode usar a palavra-chave New com a instrução Set. Por favor, tente o código no procedimento de evento Click do botão de comando:
DimfAsForm1
Setf=NovoForm1
f.Caption = olá
f.Mostrar
Usar a palavra-chave New com a instrução Set irá acelerar a execução, portanto este método é recomendado.
Use a palavra-chave New com outros objetos
Você pode usar a palavra-chave New para criar coleções e objetos de classes definidas em um módulo de classe. Use o exemplo a seguir para ilustrar esse processo de trabalho.
Este exemplo ilustra como a palavra-chave New cria uma instância de uma classe. Abra um novo projeto e desenhe um controle CommandButton no Form1. Selecione o comando Adicionar Módulo de Classe no menu Projeto para adicionar um módulo de classe ao projeto. Defina a propriedade Name do módulo de classe como ShowMe.
O código a seguir no Form1 cria uma nova instância da classe ShowMe e chama um procedimento contido no módulo da classe.
PublicclsNewAsShowMe
PrivateSubCommand1_Click()
SetclsNew=NewShowMe
clsNew.ShowFrm
Fim Sub
O procedimento ShowFrm no módulo de classe cria uma nova instância da classe Form1, exibe o formulário e o minimiza.
SubShowFrm()
DimfrmNewAsForm1
SetfrmNew=NovoFormulário1
frmNew.Mostrar
frmNew.WindowState=1
Fim Sub
Para aplicar este exemplo, execute o aplicativo e clique várias vezes no botão de comando. Você verá um ícone de formulário minimizado aparecer na área de trabalho à medida que cada nova instância da classe ShowMe for criada.
Para obter mais informações sobre como usar New para criar objetos, consulte o Capítulo 10, “Programando com Componentes”.
Novas restrições de palavras-chave
A tabela a seguir explica o que não pode ser feito com a palavra-chave New.
Liberar a referência ao objeto
Cada objeto usa memória e recursos do sistema. É uma boa prática de programação liberar esses recursos imediatamente quando o objeto não for mais usado.
Use Descarregar para descarregar um formulário ou controle da memória.
Use Nothing para liberar os recursos ocupados pelas variáveis de objeto. Use a instrução Set para atribuir Nothing à variável de objeto.
Para obter mais informações, consulte as seções "Unload Event" e "Nothing" no "Visual Basic 6.0 Language Reference Manual".
Passar objeto para procedimento
Os objetos podem ser passados para procedimentos no Visual Basic. No exemplo de código a seguir, presume-se que o formulário tenha um controle CommandButton:
PrivateSubCommand1_Click()
'Chama a sub-rotina Demo e passa o formulário.
DemoForm1
Fim Sub
PrivateSubDemo(xAsForm1)
'Centralize o formulário na tela.
x.Esquerda=(Tela.Largura-x.Largura)/2
Fim Sub
Você pode passar um objeto para um parâmetro por referência e então definir o parâmetro para um novo objeto dentro do procedimento. Para ver isso em ação, abra o projeto e insira um segundo formulário. Coloque uma caixa de imagem em cada formulário. Os valores de configuração do atributo que precisam ser alterados são mostrados na tabela a seguir:
O procedimento de evento Form1_Click chama o procedimento GetPicture no Form2 e passa uma caixa de imagem vazia.
PrivateSubForm_Click()
Form2.GetPicturePicture1
Fim Sub
O processo GetPicture no Form2 atribui a propriedade Picture da caixa de imagem no Form2 à caixa de imagem vazia no Form1.
PrivateobjXapictureBox
PublicSubGetPicture(xAsPictureBox)
'Atribuir o quadro de imagem passado à variável do objeto.
SetobjX=x
'Atribuir o valor do atributo Imagem à caixa de imagem do Form1.
objX.Picture=picture2.Picture
Fim Sub
Para aplicar este exemplo, execute o programa e clique em Form1. Você verá o ícone do Form2 aparecer na caixa de imagem do Form1.
Detalhes Os tópicos acima têm como objetivo fornecer uma visão geral dos objetos. Para obter mais detalhes, consulte o Capítulo 9, “Programando com Objetos” e o Capítulo 10, “Programando com Componentes”.
->