Meus caros amigos,
Hoje vamos parar pra falar um pouco da instrução With. Se fizermos uma reflexão, vamos enxergar que é praxe constante o uso dessa instrução nos mais variados módulos e agora vem a pergunta:
Para quê que isso serve?
Resposta:
Executa uma série de instruções em um objeto.
Veja a Sintaxe:
With Objeto
.nComandos envolvendo as propriedade do Objeto
End With
Na prática isso funciona da seguinte forma:
Digamos que em um formulário você tem um rótulo chamado "MeuRotulo". No evento Ao apertar de um botão de comando você gostaria de mudar algumas propriedades desse "MeuRotulo" como por exemplo: Altura, largura, cor da fonte, cor do preenchimento, negritar a fonte e por ultimo gostaria de trocar o caption do rótulo. Abaixo veja duas formas de fazer:
Utilizando a instrução With faríamos assim:
With MeuRotulo
.Height = 2000 'Definindo a altura do controle
.Width = 2000 'Definindo a largura do controle
.ForeColor = 255 'Definindo a cor da fonte
.BackColor = 0 'Definindo o preenchimento
.FontBold = True 'Definindo o negrito
.Caption = "Instrução With executada!" 'Modificando o rótulo no MeuRotulo
'nPropriedades
End With
Veja que foi preciso apenas escrever as várias propriedades (Height, Width, ForeColor, BackColor, FontBold e Caption) que populou as alterações no Objeto "MeuRotulo". Não foi preciso repetir "MeuRotulo" na chamada das propriedades do mesmo objeto.
Agora para matar a charada e fazer você compreender a função dessa instrução, veja abaixo que realizarei as mesmas ações acima sem utilizar a instrução With :
No evento Ao clicar do botão de comando coloque:
Me!MeuRotulo.Height = 2000 'Definindo a altura do controle
Me!MeuRotulo.Width = 2000 'Definindo a largura do controle
Me!MeuRotulo.ForeColor = 255 'Definindo a cor da fonte
Me!MeuRotulo.BackColor = 0 'Definindo o preenchimento
Me!MeuRotulo.FontBold = True 'Definindo o negrito
Me!MeuRotulo.Caption = "Executado SEM a Instrução With!" 'Modificando o rótulo no MeuRotulo
Reparou que ao usar o bloco With, não foi preciso referenciar várias vezes o Objeto; aqui no nosso caso ele é o: Me!MeuRotulo
A instrução With não pode ser usada para modificar propriedades de vários objetos simultaneamente, exemplo:
With Objeto1 Objeto2
Ela funciona e age, apenas um Objeto por instrução, assim:
With Objeto1
'nPropriedades
End With
Ou
With Objeto2
'nPropriedades
End With
Faça download do exemplo comentado neste mini-tutorial:
Download
Até
Hoje vamos parar pra falar um pouco da instrução With. Se fizermos uma reflexão, vamos enxergar que é praxe constante o uso dessa instrução nos mais variados módulos e agora vem a pergunta:
Para quê que isso serve?
Resposta:
Executa uma série de instruções em um objeto.
Veja a Sintaxe:
With Objeto
.nComandos envolvendo as propriedade do Objeto
End With
Na prática isso funciona da seguinte forma:
Digamos que em um formulário você tem um rótulo chamado "MeuRotulo". No evento Ao apertar de um botão de comando você gostaria de mudar algumas propriedades desse "MeuRotulo" como por exemplo: Altura, largura, cor da fonte, cor do preenchimento, negritar a fonte e por ultimo gostaria de trocar o caption do rótulo. Abaixo veja duas formas de fazer:
Utilizando a instrução With faríamos assim:
With MeuRotulo
.Height = 2000 'Definindo a altura do controle
.Width = 2000 'Definindo a largura do controle
.ForeColor = 255 'Definindo a cor da fonte
.BackColor = 0 'Definindo o preenchimento
.FontBold = True 'Definindo o negrito
.Caption = "Instrução With executada!" 'Modificando o rótulo no MeuRotulo
'nPropriedades
End With
Veja que foi preciso apenas escrever as várias propriedades (Height, Width, ForeColor, BackColor, FontBold e Caption) que populou as alterações no Objeto "MeuRotulo". Não foi preciso repetir "MeuRotulo" na chamada das propriedades do mesmo objeto.
Agora para matar a charada e fazer você compreender a função dessa instrução, veja abaixo que realizarei as mesmas ações acima sem utilizar a instrução With :
No evento Ao clicar do botão de comando coloque:
Me!MeuRotulo.Height = 2000 'Definindo a altura do controle
Me!MeuRotulo.Width = 2000 'Definindo a largura do controle
Me!MeuRotulo.ForeColor = 255 'Definindo a cor da fonte
Me!MeuRotulo.BackColor = 0 'Definindo o preenchimento
Me!MeuRotulo.FontBold = True 'Definindo o negrito
Me!MeuRotulo.Caption = "Executado SEM a Instrução With!" 'Modificando o rótulo no MeuRotulo
Reparou que ao usar o bloco With, não foi preciso referenciar várias vezes o Objeto; aqui no nosso caso ele é o: Me!MeuRotulo
A instrução With não pode ser usada para modificar propriedades de vários objetos simultaneamente, exemplo:
With Objeto1 Objeto2
Ela funciona e age, apenas um Objeto por instrução, assim:
With Objeto1
'nPropriedades
End With
Ou
With Objeto2
'nPropriedades
End With
Faça download do exemplo comentado neste mini-tutorial:
Download
Até
Última edição por Dilson em 24/11/2011, 23:35, editado 2 vez(es)