MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Bloquear todos os campos

    Compartilhe

    toyebom
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 820
    Registrado : 18/07/2012

    [Resolvido]Bloquear todos os campos

    Mensagem  toyebom em Ter 04 Fev 2014, 22:19

    Preciso bloquear todos os campos do form menos os botões, isso já consegui, falta-me o restante do código, até aqui julgo deve se:

    Private Sub Form_Current()
    If Me.CaixaCombinação885 = "Concluido" Then
    Me.Comando571.SetFocus
    ??????????????????????????????????????????????
    Else
    ??????????????????????????????????????????????
    Me.Comando283.SetFocus
    End If
    End Sub

    O que coloco nos campos vermelhos de ????????

    Obrigado

    para um campo apenas, coloco:

    Private Sub Form_Current()
    If Me.Rótulo615 <> "" Then
    Me.[Caixa de Combinação738].SetFocus
    Me.Rótulo615.Enabled = False
    Else
    Me.Rótulo615.Enabled = True
    Me.Rótulo615.SetFocus
    End If
    If Me.CaixaCombinação885 = "Concluido" Then
    Me.Comando571.SetFocus
    Me.Comando0.Enabled = False
    Else
    Me.Comando0.Enabled = True
    Me.Comando283.SetFocus
    End If
    End Sub


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Bloquear todos os campos

    Mensagem  criquio em Ter 04 Fev 2014, 23:06

    Coloque dentro de um For... Next.

    Código:
    Dim C As Control

    For Each C In Me.Controls
        If C.ControlType <> acCommandBuntton Then
            C.Enabled = False
        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.


    toyebom
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 820
    Registrado : 18/07/2012

    Bloquear todos os campos

    Mensagem  toyebom em Ter 04 Fev 2014, 23:47

    Ok criquio julgo não me ter explicado bem no inicio.

    Tenho uma caixa de combinação com as opções "Pendente"; "Inquérito";"Concluido" e o que quero é quando coloco "Concluido" bloqueie tudo (caixas de texto, de verificação e de combinação) menos os botões.
    Caso coloque "Pendente" ou "Inquérito" não bloqueie nada.

    Já consegui fazer mas se der para reduzir as linhas de comando era bom, dava menos trabalho em outros forms que tenho de fazer o mesmo. Caso não seja possível, paciência e obrigado na mesma.

    Fiz assim

    Private Sub CaixaCombinação93_AfterUpdate()
    If Me.CaixaCombinação93 = "Concluido" Then
    Me.Comando283.SetFocus
    Me.[Caixa de combinação738].Enabled = False
    Me.[Caixa de combinação669].Enabled = False
    Me.[Caixa de combinação665].Enabled = False
    Me.[Caixa de combinação76].Enabled = False
    Me.Caixadecombinação743.Enabled = False
    Me.Texto16.Enabled = False
    Me.Texto350.Enabled = False
    Me.CaixaCombinação852.Enabled = False
    Me.Texto346.Enabled = False
    Me.Texto18.Enabled = False
    Me.Rótulo206.Enabled = False
    Me.Texto207.Enabled = False
    Me.Texto91.Enabled = False
    Me.Texto354.Enabled = False
    Me.Texto356.Enabled = False
    Me.Texto287.Enabled = False
    Me.Texto56.Enabled = False
    Me.[Caixa de combinação770].Enabled = False
    Me.[Caixa de combinação773].Enabled = False
    Me.[Caixa de combinação774].Enabled = False
    Me.[Caixa de combinação304].Enabled = False
    Me.[Caixa de combinação305].Enabled = False
    Me.intr.Enabled = False
    Me.CP.Enabled = False
    Me.postocp.Enabled = False
    Me.Texto741.Enabled = False
    Me.Texto743.Enabled = False
    Me.Texto744.Enabled = False
    Me.Comando0.Enabled = False
    Me.OLEDesvinculado887.Visible = True
    Else
    Me.[Caixa de combinação738].Enabled = True
    Me.[Caixa de combinação669].Enabled = True
    Me.[Caixa de combinação665].Enabled = True
    Me.[Caixa de combinação76].Enabled = True
    Me.Caixadecombinação743.Enabled = True
    Me.Texto16.Enabled = True
    Me.Texto350.Enabled = True
    Me.CaixaCombinação852.Enabled = True
    Me.Texto346.Enabled = True
    Me.Texto18.Enabled = True
    Me.Rótulo206.Enabled = True
    Me.Texto207.Enabled = True
    Me.Texto91.Enabled = True
    Me.Texto354.Enabled = True
    Me.Texto356.Enabled = True
    Me.Texto287.Enabled = True
    Me.Texto56.Enabled = True
    Me.[Caixa de combinação770].Enabled = True
    Me.[Caixa de combinação773].Enabled = True
    Me.[Caixa de combinação774].Enabled = True
    Me.[Caixa de combinação304].Enabled = True
    Me.[Caixa de combinação305].Enabled = True
    Me.intr.Enabled = True
    Me.CP.Enabled = True
    Me.postocp.Enabled = True
    Me.Texto741.Enabled = True
    Me.Texto743.Enabled = True
    Me.Texto744.Enabled = True
    Me.Comando0.Enabled = True
    Me.OLEDesvinculado887.Visible = False
    End If
    End Sub


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Bloquear todos os campos

    Mensagem  criquio em Ter 04 Fev 2014, 23:55

    É exatamente isso que o código acima fará. Basta colocar a condição If para o caso de ser "Pendente" ou não:

    Código:
        If C.ControlType <> acCommandBuntton Then
            If Me.NomeDaCombo.Value = "Pendente" Then
                C.Enabled = False
            Else
                C.Enabled = True
            End If
        End If


    .................................................................................
    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.


    toyebom
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 820
    Registrado : 18/07/2012

    Bloquear todos os campos

    Mensagem  toyebom em Qua 05 Fev 2014, 00:14

    Coloquei o codigo aqui

    Private Sub Form_Current()
    Dim C As Control

    For Each C In Me.Controls
           If Me.CaixaCombinação93.Value = "Concluido" Then
               C.Enabled = False
           Else
               C.Enabled = True
           End If
       End If
    Next
    End Sub


    deu erro


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.

    toyebom
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 820
    Registrado : 18/07/2012

    Bloquear todos os campos

    Mensagem  toyebom em Qua 05 Fev 2014, 02:02

    Up


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Bloquear todos os campos

    Mensagem  Dilson em Qua 05 Fev 2014, 02:30


    Function HabilitaCampos(argFrm As Form)
    'Objetivo: Padroniza a ativação das textBox, comboBox e CheckBox
    On Error GoTo trataerro
       Dim ctl As Control
       For Each ctl In argFrm.Controls
           With ctl
               Select Case .ControlType
                               
                  'Habilitará Caixas de texto
                   Case acTextBox
                           .Enabled = True
                           
                  'Habilitará Caixas de combinação
                   Case acComboBox
                           .Enabled = True
                           
                   'Habilitará Check box
                   Case acCheckBox
                           .Enabled = False
                                                             
               End Select
           End With    
       Next ctl
    sair:
       Exit Function
    trataerro:
       MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, vbCritical, "Aviso", Err.HelpFile, Err.HelpContext
       Resume sair:
    End Function



    Function DesabilitaCampos(argFrm As Form)
    'Objetivo: Padroniza a desativação das textBox, comboBox e CheckBox
    On Error GoTo trataerro
       Dim ctl As Control
       For Each ctl In argFrm.Controls
           With ctl
               Select Case .ControlType
                                     
                   'Desabilitará Caixas de texto
                   Case acTextBox
                           .Enabled = False
                           
                   'Desabilitará Caixas de combinação
                   Case acComboBox
                           .Enabled = False
                           
                   'Desabilitará Check box
                   Case acCheckBox
                           .Enabled = False
                                                             
               End Select
           End With          
       Next ctl
    sair:
       Exit Function
    trataerro:
       MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, vbCritical, "Aviso", Err.HelpFile, Err.HelpContext
       Resume sair:
    End Function



    Para usar chame a função assim a cada condição do if:

    Para habilitar:
    Call HabilitaCampos(Me)

    Para desabilitar:
    Call DesabilitaCampos(Me)


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    toyebom
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 820
    Registrado : 18/07/2012

    Bloquear todos os campos

    Mensagem  toyebom em Qua 05 Fev 2014, 02:54

    Resultou obrigado mas para formes com poucos campos prefiro utilizar o meu código, ocupa menos espaço nesse caso.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Bloquear todos os campos

    Mensagem  Dilson em Qua 05 Fev 2014, 11:54

    Olá,

    Neste caso para não ter a percepção de muito espaço usado, salve as funções num módulo e as chame normalmente nos if's

    Obrigado por informar o resolvido.


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Bloquear todos os campos

    Mensagem  criquio em Qua 05 Fev 2014, 12:32

    Sempre que der erro informe que erro que é para ficar mais fácil adaptar. Já que o colega queria menos linhas de código, a princípio a função que passei funcionaria talvez apenas tratando o erro.


    .................................................................................
    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.


    toyebom
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 820
    Registrado : 18/07/2012

    Re: [Resolvido]Bloquear todos os campos

    Mensagem  toyebom em Qua 05 Fev 2014, 14:35

    Ok criquio peço desculpa.
     
    O erro que dá é na linha:
     
    C.Enabled = True
     
    Fica amarela
    Não consigo dar de momento mais informações visto não estar no meu pc e a base com que estou a trabalhar no momento já a adaptei com o código do Dilson mas obrigado na mesma.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Bloquear todos os campos

    Mensagem  criquio em Qua 05 Fev 2014, 15:58

    Então, isso é porque há controles que não tem a propriedade Enabled. Nesse caso um tratamento de erro seria suficiente para transpor a questão. Ou então, ao invés:

    Código:
    If C.ControlType <> acCommandButton Then

    colocaria os tipos de campos que quer bloquear:

    Código:
    If C.ControlType = acTextBox Or C.ControlType = acCombobox Then

    Dessa forma teria apenas campos que tenham a opção Enabled e não daria esse erro.

    Mas, se está resolvido, resolvido está Laughing


    .................................................................................
    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.


      Data/hora atual: Qui 08 Dez 2016, 23:58