Em 99% das suas aplicações você usa formulários ; geralmente os seus formulários são povoados por controles que realizam diversas tarefas . Já abordamos os formulários no artigo - Usando Formulários no VB - e não esgotamos o assunto . Esta dica pretende mostrar um conceito básico mas que pode lhe ajudar muito.
Você sabe qual o controle ativo em um formulário ( aquele controle que tem o foco) através da propriedade ActiveControl .
A propriedade ActiveControl retorna um handle ( uma referência) para o controle que esta ativo. Assim se o controle ativo for uma caixa de texto Text1 , ActiveControl irá retornar Text1.
Podemos então usar a propriedade ActiveControl para acessar as propriedades de um controle ou para invocar os métodos de um controle. Exemplos :
Screen.ActiveControl.Tag = "0"
form1.ActiveControl.Text = "Teste"
Um exemplo prático da utilidade desta propriedade
é sua utilização na interface MDI onde um botão na barra de ferramentas precisa
iniciar uma ação em um controle de um formulário MDI Child. Quando o usuário
clicar no botão Copiar na barra de ferramentas o seu código pode referenciar o
texto no controle que estiver ativo no formulário MDI Child , algo assim :
ActiveForm.ActiveControl.SelText
.
Vejamos agora um exemplo prático para esta propriedade. Neste exemplo quando clicamos no formulário se o controle ativo form uma caixa de texto , sua propriedade text será alterada para : "Este é o controle ativo"
Private Sub
Form_Click() If TypeOf Screen.ActiveControl Is TextBox Then ActiveControl.Text = "Este é o controle ativo" End If End Sub |
O objeto ActiveControl possui uma propriedade muito importante , a propriedade Parent . Esta propriedade retorna uma referência ( handle) para o objeto no qual o controle ativo esta colocado . Se o controle ativo estiver em um formulário a expressão ActiveControl.Parent irá retornar uma referência ao formulário ativo. Podemos então acessar as propriedades de um objeto usando esta propriedade . Ex:
ActiveControl.Parent.Caption = "Sou o formulário ativo"
command1.Parent.MousePointer = 4 'altera o ponteiro do mouse para o botão de comando ativo
Percebeu o que você pode fazer com isto ? Não ? Você pode acessar todas as propriedades e métodos de um formulário , inclusivo passando-os como argumento para procedimentos e funções. Não percebeu o poder que tens na mão ??? Vou dar um exemplo :
Você pode criar um procedimento genérico que se aplique a todos os formulários de um projeto simplesmente passando a referência para o formulário no qual deseja que o procedimento opere: Veja :
Private Sub
Pinta_Formulario(formulario As Object, cor) MsgBox "Alterando a cor de fundo do formulário " & formulario.Name formulario.BackColor = cor End Sub |
Para usar invocar a função usamos o seguinte código:
Pinta_formulario ActiveControl.Parent , vbgreen |
As possibilidades são muitas , o limite é o seu talento...
Até a próxima... Bye...