MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    A instrução With

    Compartilhe
    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1708
    Registrado : 11/11/2009

    A instrução With

    Mensagem  Dilson em 24/11/2011, 22:51

    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é study


    Última edição por Dilson em 24/11/2011, 23:35, editado 2 vez(es)
    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11241
    Registrado : 30/12/2009

    Re: A instrução With

    Mensagem  criquio em 24/11/2011, 23:10

    Amigão, legal. Mas, se me permite, só a título de incrementação, podemos formatar mais de um controle tambem, usando uma variável para representá-los juntamente com o For Each:

    Dim C As Control

    For Each C In Me.Controls

    If C.ControlType = acLabel Then
    With C
    .ForeColor = vbRed
    .BackColor = vbGreen
    .FontSize = 16
    .Width = 2500
    .Height = 880
    End With
    End If

    Next


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1708
    Registrado : 11/11/2009

    Re: A instrução With

    Mensagem  Dilson em 24/11/2011, 23:19

    A participação é sempre bem vinda.

    Ótima incrementação, mas, tecnicamente a With continuará agindo um objeto por vez se valendo da variável a cada passada de controle Label.

    Parabéns pela criatividade!
    avatar
    Luís Augusto
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 28/10/2011

    Re: A instrução With

    Mensagem  Luís Augusto em 25/11/2011, 00:21

    Muito obrigado Dilson por compartilhar seu conhecimento conosco.
    Aprendi mais uma sem pagar nada! Very Happy
    É uma pena que o método não aceite como referência um subform pois, estou com problemas em referencia-los. De toda forma é sempre bom aprender.

    Luís Augusto.

      Data/hora atual: 21/8/2018, 14:24