MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


3 participantes

    Desativar todos os campos de um formulário.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 20/2/2012, 22:40

    Prezados do forum, boa noite!
    Necessito de mais essa ajuda para a seguinte dificuldade: estou precisando desativar todos os campos de um formulário quando clicar em um botão de comando de localizar. Ou seja, o usuário do banco após clicar no botão, abrirá o frm_geral e, em seguida, abrirá a janela padrão de localizar registros do access, mas já com os campos do formulário desativados. Tentei com a sintaxe abaixo, mas não funcionou.


    Private Sub Localizar_Click()
    On Error GoTo Err_Localizar_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "frm_geral"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

    Forms![frm_geral].AllowAdditions = False
    Forms![frm_geral].AllowDeletions = False
    Forms![frm+geral].AllowEdits = False

    Screen.PreviousControl.SetFocus
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

    Exit_Localizar_Click:
    Exit Sub

    Err_Localizar_Click:
    MsgBox Err.Description
    Resume Exit_Localizar_Click

    Alguém teria uma solução para isto.
    Desde já agradeço.



    avatar
    Convidado
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidado 20/2/2012, 23:01

    Boa noite colega...
    referenciar todos os campos:
    Seucampo.enabled = false

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 20/2/2012, 23:56

    Boa noite, Cafpr.
    Pensei em referenciar todos os campos, mas são muitos (99) aí desanimei um pouco em fazer as referencias e resolvi recorrer a ajuda.
    De qualquer forma, obrigado.
    avatar
    Convidado
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidado 21/2/2012, 03:43

    Colega Oldri precisamos de algumas informações , assim: os 99 campos estão
    No mesmo formulario??? então distribuidos em abas de um controle guia???
    Então seria: o nome do controle guia é ctlGuia52(veja como é no seu), então no botão pesquisar no evento ao clicar use essa função:

    Me.CtlGuia52.Pages(0).Enabled = False.
    e depois Me.SeuCampo ou seuBotão.SetFocus

    se tiver mais de uma aba então
    Me.CtlGuia52.Pages(0).Enabled = False
    Me.CtlGuia52.Pages(1).Enabled = False.
    e

    se houver mais abas, só acrescentar as pages(3,4,5)

    Dica se quer que ao desabilitar o campo não fique esmurecido(cor) troque o Enabled por Locked

    Se os campos não estão no mesmo form ou se não estgiverem distribuidos em abas desconsidere o que acima escrito está e forneça mais detalhes que iremos achar a solução

    Abraço amigão, esperamos seu retorno....
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Dilson 21/2/2012, 04:04

    Olá amigos,

    Experimente assim:

    Salve esta função num módulo novo e salve com o nome que desejar:

    Function BloqueioFrm(argFrm As Form)
    With argFrm
    .AllowAdditions = False
    .AllowDeletions = False
    .AllowEdits = False
    End With
    End Function



    No ao clicar do botão coloque:

    Call BloqueioFrm(Me)
    Me.Refresh
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 21/2/2012, 12:09

    Colega Cafpr, bom dia!
    Os campos a serem desativados estão em um único formulário(frm_cadastro_geral),com um controle guia e 4 páginas. O botão localizar(comando28) está em outro formulário(frm_geral),que funciona como menu principal. Então, ao clicar no botão localizar ele abre o formulário frm_cadastro_geral e em seguida a janela padrão access localizar/substituir.
    O que estou qierendo e precisando é que após realizar a pesquisa através da janela padrão localizar/susbtituir os campos do frm_cadastro_geral se tornem desativados.
    Implementei a sintaxe que vc sugeriu da forma abaixo, mas retorna o erro "O access não pode localizar o ctlguia0.pages(dadospessoais)".

    Private Sub Comando28_Click()
    On Error GoTo Err_Comando28_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "frm_CADASTRO_GERAL"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

    Screen.PreviousControl.SetFocus
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

    Forms![frm_cadastro_geral]![ctlguia1.pages(dadospessoais)].Enabled = False
    Forms![frm_cadastro_geral]![ctlguia1.pages(dadosfuncionais)].Enabled = False
    Forms![frm_cadastro_geral]![ctlguia1.pages(dadossindicais)].Enabled = False
    Forms![frm_cadastro_geral]![ctlguia1.pages(acoesjudiciais)].Enabled = False
    Me.Comando28.SetFocus

    Exit_Comando28_Click:
    Exit Sub

    Err_Comando28_Click:
    MsgBox Err.Description
    Resume Exit_Comando28_Click

    End Sub


    Colega Dilson,
    Fiz também da forma que sugeriu: criei o módulo com o nome BloqueioCampos, copiei e colei o código que mandou sem mudar. Criei uma macro para excutar, mas retornao erro "O objeto não contém o objeto de automação 'argfrm'.

    Senhores,

    Eu utilezei o código a seguir, que funcionou em parte. Ou seja, ele funciona (destiva os campos) até quando o abre o formulário e a janela padrão de localizar/substituir. Após fazer uma pesquisa, os campos são ativados permitindo edição. Abaixo o código:

    On Error GoTo Err_Comando28_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "frm_CADASTRO_GERAL"
    DoCmd.OpenForm stDocName, , , stLinkCriteria


    Screen.PreviousControl.SetFocus
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

    Forms![frm_CADASTRO_GERAL].AllowAdditions = False
    Forms![frm_CADASTRO_GERAL].AllowDeletions = False
    Forms![frm_CADASTRO_GERAL].AllowEdits = False



    Exit_Comando28_Click:
    Exit Sub

    Err_Comando28_Click:
    MsgBox Err.Description
    Resume Exit_Comando28_Click
    end sub


    Assim, colegas, aguardo novos retornos, desde já agradecendo


    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 21/2/2012, 14:47

    Oldri



    Colega Dilson,
    Fiz também da forma que sugeriu: criei o módulo com o nome BloqueioCampos, copiei e colei o código que mandou sem mudar. Criei uma macro para excutar, mas retornao erro "O objeto não contém o objeto de automação 'argfrm'.

    Você criou uma macro?

    Por que não seguiu exatamente a instruções do Dilson?



    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 21/2/2012, 15:44

    Colega Balem,
    fiz,também,como o Dilson instruiu; só que não funcionou.Retornou erro em tempo de execução '424' - O objeto é obrigatorio.
    Qual seria a solução?
    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 21/2/2012, 16:21


    Oldri

    Explique como colocou o código porque aqui não da erro algum.

    Abraços
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Dilson 21/2/2012, 17:50

    Coloquei "Me" como argumento pensando que se tratava do formulário atual a ser desativado. Sendo outro form, terá que escrever o nome dele como argumento, assim:

    Call BloqueioFrm(Form_SeuForm)


    No seu caso, coloque no botão que abre o form chamado "frm_cadastro_geral":

    Call BloqueioFrm(Form_frm_cadastro_geral)

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 21/2/2012, 19:16

    Balem,
    como explanado acima, preciso que o botão(fica no frm_geral) abra o frm_cadastro_geral e abra a janela de localizar/substituir. Desta feita, coloquei o código, no evento ao clicar do botao que fica no frm_geral, da forma abaixo:

    Private Sub Comando28_Click()
    On Error GoTo Err_Comando28_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "frm_CADASTRO_GERAL"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

    Call BloqueioFrm(Form_frm_CADASTRO_GERAL)
    Me.Refresh


    Screen.PreviousControl.SetFocus
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
    Call BloqueioFrm(Form_frm_CADASTRO_GERAL)
    Me.Refresh

    Exit_Comando28_Click:
    Exit Sub

    Err_Comando28_Click:
    MsgBox Err.Description
    Resume Exit_Comando28_Click
    End Sub

    E a função, eu a coloquei em um novo modulo (no BD) com o nome de BloquearCampos da forma que o Dilson enviou

    Function BloqueioFrm(argFrm As Form)
    With argFrm
    .AllowAdditions = False
    .AllowDeletions = False
    .AllowEdits = False
    End With
    End Function


    Após as mudanças indicadas pelo Dilson, funcionou da forma que já citei, ou seja, ele funciona (destiva os campos) até quando o abre o formulário e a janela padrão de localizar/substituir. Após fazer uma pesquisa e fechar a janela, os campos volta a ficar ativados permitindo edição.
    Abraços
    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 21/2/2012, 19:39

    Oldri

    Desculpe,mas não lembro qual é essa janela padrão de localizar/substituir.

    Tem haver com essa linha de código?
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

    procure substitui-la pelo comando similar:
    Docmd.Runcommand accmd...procure na caixa suspensa que se abre o comando em questão.

    Percebi que após essa linha, você repete a chamada da função para bloquear o formulário.
    Mesmo assim, não funfa?
    Talvez tenha que fazer teu próprio formulário de pesquisa.

    No aguardo...

    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Dilson 21/2/2012, 20:21

    Oi OLDRIVG,

    Eu simulei aqui com o código que apresentou por ultimo e funciona no pleno sem apresentar os problemas que relata, veja:
    http://dl.dropbox.com/u/8080696/Integrado/BloquearCamposOLDRIVG.rar

    Consulte 100 ou 102 e feche a janela buscar/substituir.
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 21/2/2012, 21:07

    Balem,
    esta janela é a que abre quando vc clica no icone de localizar que tem na bara de tarefas do BD apos aberto. E a linha de código é esta que vc citou.
    Quanto ao comando similar, não consegui visualizar um que correspondesse ao "localizar registro".
    Mesmo eu repetindo o código após o comando de abrir e pesquisar não funfa.
    Como eu poderia incrementar um formulario de pesquisa? Eu teria que ter, neste formulário, todos os campos da tabela para que, ao pesquisar, me fosse exibido todos os dados do registro. Teria uma idéia para me ajudar?

    Dilson,

    Realmente na sua simulação funciona. Então o problema deve ser no meu formulário. O seu é simples. O meu esta cheio de comandos. Existem campos invisiveis que aparecem sob determinada circunstancia, caixas de combinação, grupo de opções, etc. Talves deva ser por isto que não funciona no meu.
    Vou tentar enviar o BD em questão, caso os senhores possam dar um olhadinha, agradeço penhoradamente.
    No aguardo.
    Obrigadão
    Abraços
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 21/2/2012, 21:12

    Como faço para anexar o BD para enviar? Não consegui.
    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 21/2/2012, 21:20

    Para anexar o BD:

    Compacte-o num arquivo.zip

    Logo abaixo da janela onde vc escreve o post tem um botão Escolher Arquivo.
    Clique nele e procure o arquivo que você zipou.
    Após fazer isso clique no botão Enviar ao lado.
    Aguarde até aparecer somente o nome do teu arquivo.
    Daí é só concluir teu post.
    Você não consegue visualizar o arquivo anexado ao post se clicar em pré visualizar.
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 21/2/2012, 21:30

    Ok, Balem.
    Estava compactando como oformato .zipx.
    Segue o BD.
    Obrigado
    Anexos
    Desativar todos os campos de um formulário. AttachmentOLDRIVG CADASTRO AFILIADOS problema.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (79 Kb) Baixado 26 vez(es)
    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 21/2/2012, 22:02

    Oldri

    Testei e o Form_frm_CADASTRO_GERAL continua com os controles travados mesmo após a janela padrão localizar.

    A propósito, troque a linha:

    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

    Por esta:

    DoCmd.RunCommand acCmdFind

    Abraços
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Dilson 21/2/2012, 22:21

    Oi Balem,

    Ao correr o pesquisar próxima por umas tres vezes, ele realmente destrava os campos.

    Suspeito ser uma ação da própria janela buscar/localizar, pois já procurei entre os vários eventos e não vi nada relacionado.

    Se apertar F9 repare que a função volta ficar ativa.

    Tentarei mudar os eventos após a janela se fechar.
    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 21/2/2012, 22:29

    Oi Dilson

    Testei aqui, várias vezes e diga-se de passagem para testar se os controles continuam bloqueados após a janela localizar, fecha-se o 2º formulário e clica-se novamento no Botão de comando.

    Talvez seja por eu estar usando o A2007.
    Então deixo a bola contigo, bounce Smile

    Abraços
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 21/2/2012, 23:58

    Ok, Balem.
    Eu uso o access 2003. Pode ser está a diferença que no seu teste não apresentou o problema. O código que enviou para substituir, funcionou legal.

    Dilson,

    realmente ao apertar o F9 após pesquisar, os campos se tornam desativados novamente. Então, não há como implementar um código para a ação da tecla F9 sem que precise apertá-la?
    No aguardo.
    Abraços.
    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 22/2/2012, 00:11

    Oldri

    Tentando ajudar:

    Experimente:
    SendKeys "{F9}", True
    DoCmd.RunCommand acCmdFind

    Se não funfar, tente:

    DoCmd.RunCommand acCmdFind
    SendKeys "{F9}", True

    Geralmente a gente usa o envio de carácteres antes do evento.

    Abraços
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 22/2/2012, 00:27

    Colega Balem,
    infelizmente não funcionou nenhuma das duas forma.
    Obrigado e no aguardo. Estou tentando por aqui, mas meu conhecimento de código é muito curto.
    Abraço
    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 22/2/2012, 00:46

    Tente mais isso:

    Na sendkeys, no Lugar de True, coloque false.

    E teste as duas maneiras.

    Vamos tentando, difícil sem o A2003.

    Se não funfar, terá que aguardar o Dilson.

    Abraços
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Dilson 22/2/2012, 01:03

    Eu já descontinuei e desinstalei o Access2003, agora uso somente o 2007.

    Amigos a única solução que encontrei foi declarar "Me.Recalc" no evento ao mover mouse dos controles guias.

    Uma outra saída é ir em todos os controles e deixá-los por defeito a propriedade Bloqueado = Sim - Estaria resolvido a contento nem precisando da função BloqueioFrm

    Abraços,

    Amanhã, poderei ver outras saídas, pois agora vou pular carnaval bounce cheers drunken Laughing

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 22/2/2012, 01:42

    Balem, não funcionou.

    Dilson, as suas sugestões funcionam, mas de forma direta no frm_cadastro_geral. Desta forma não se poderá editar o formulário quando abri-lo diretamente.
    O desativamento dos campos tem que ocorrer somente quando o frm_cadstro_geral for aberto através do frm_geral, no botão localizar já citdao.

    Pesquisando, achei no site deste link (http://www.codelines.com/portugues0/sendkeys.htm) um artigo sobre comandos de tecla. Teria como os senhores dar uma olhada, por favor, e opinarem. Como já disse, sou fraco em códigos.
    Agradeço
    Abraços
    avatar
    João afonso
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 396
    Registrado : 24/05/2011

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  João afonso 22/2/2012, 14:00

    Peço desculpa aos amigos Dilson e Balem

    amigos tente colocar na propiedade do formulário frm_Cadastro_Geral, na aba Evento, no item no atual.

    Private Sub Form_Current()
    SendKeys "{F9}"

    Para baixo continua a mesma coisa

    End sub

    Fiz o teste e deu certo.

    Anexos
    Desativar todos os campos de um formulário. AttachmentOLDRIVG CADASTRO AFILIADOS problema.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (113 Kb) Baixado 21 vez(es)
    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 22/2/2012, 14:02

    Ótimo João

    Resolvido então?


    Boa sorte !!
    avatar
    João afonso
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 396
    Registrado : 24/05/2011

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  João afonso 22/2/2012, 14:04

    Espero que sirva para o colega Balem.
    avatar
    Convidad
    Convidado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Convidad 22/2/2012, 14:21

    Não entendi João

    Pode explicar? Shocked

    avatar
    João afonso
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 396
    Registrado : 24/05/2011

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  João afonso 22/2/2012, 14:53

    Desculpa Balem eu ia colocar o nome do colega OLDRIVG

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 22/2/2012, 16:44

    Prezados colegas Balem e João Afonso, boa tarde!
    O código enviado por você, João Afonso, funciona mas com restrições.
    Funciona da seguinte forma:

    clica-se no botão de comando localizar no frm_geral e abre o frm_cadastro_geral e a janela de localizar (como já dito). Se não mandar localizar, os campos ficam desativados; se mandar localizar e não fechar a janela de localizar, os campos não desativam; Para os campos desativarem de imediato, após mandar pesquisar a 1º vez e fechar a janela de localizar tem que abrir novamente, de imediato, a janela de localizar. Aí sim os campos desativam.

    Colega João Afonso, o seu access e 2003?
    Colegas, há como implementar um código na janela localizar para que ela se feche logo após localizar com sucesso?
    Agradeço
    Abraços
    avatar
    João afonso
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 396
    Registrado : 24/05/2011

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  João afonso 22/2/2012, 18:48

    utilizo o access 2010 OLDRIVG
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 22/2/2012, 19:57

    Pois é João Afonso, estou fazendo o BD em access 2003, que é onde ele vai rodar e no momento é sem chance de trocar.
    Me parece que no access 2007/10, não dá o problema que estamos tentando solucionar.
    Abraços
    avatar
    João afonso
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 396
    Registrado : 24/05/2011

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  João afonso 23/2/2012, 00:56

    Boa noite OLDRIVG

    Segue o exemplo salvo para o access 2000, se você usa 2003 fica otimo.

    testei aqui ficou bom.

    Quando você abrir o exemplo já abre automático o formulário frm_Geral ao selecionar um nome do afiliado e clicar no botão do formulário vai abrir o formulário frm_Cadastro_Geral já filtrado sem precisar abrir junto o formulário pesquisa do office.
    Anexos
    Desativar todos os campos de um formulário. AttachmentOLDRIVG CADASTRO AFILIADOS problema.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (213 Kb) Baixado 31 vez(es)
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Dilson 23/2/2012, 01:04

    Amigos,

    Após pesquisar sobre a Propriedade ControlType e consultar o F1 do access, consegui reescrever a função e fazer funcionar como se deseja.

    OLDRIVG,

    Substitua a primeira função que te diponibilizei, por esta:
    Código:
    Function BloqueioFrm(argFrm As Form)
           
        Dim ctl As Control
         
        For Each ctl In argFrm.Controls
            With ctl
                Select Case .ControlType
                                     
                    'Bloquear todas as caixas de texto
                    Case acTextBox
                            .Locked = True
                   
                    'Bloquear todas as caixas de combinação
                    Case acComboBox
                            .Locked = True
                           
                    'Bloquear todas as caixas de seleção
                    Case acCheckBox
                            .Locked = True
                         
                    'Deixar inativo todos os botões de comando
                    Case acCommandButton
                            .Enabled = False
                   
                    'Bloquear todos os botões de opção
                    Case acOptionButton
                            .Locked = True

                    'Bloquear todos os grupos de opção
                    Case acOptionGroup
                            .Locked = True
                         
                End Select
            End With
        Next ctl
           
    End Function

    No evento ao clicar do botão no seu form chamado "frm_GERAL" coloque assim:
    Código:
    On Error GoTo Err_Comando28_Click
       
        Dim stDocName As String
        Dim stLinkCriteria As String
        stDocName = "frm_CADASTRO_GERAL"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
       
        Screen.PreviousControl.SetFocus
        DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
        Call BloqueioFrm(Form_frm_CADASTRO_GERAL)

    Exit_Comando28_Click:
        Exit Sub

    Err_Comando28_Click:
        MsgBox Err.Description
        Resume Exit_Comando28_Click

    Experimente e nos retorne sobre o resultado.
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 23/2/2012, 01:58

    Grande Dilson,
    Funcionou perfeitamente. É exatamente isto que eu precisava. Agradeço penhoradamente o seu empenho em ajudar. Muitos deveriam tê-lo como exemplo. Não só você, mas todos que dispuseram, aqui, a ajudar.
    Uma pergunta por curiosidade de aprendizado: vc usou "locked" na função e se usar "enabled" também funcionaria?

    Está dando um "bug" na janela de localizar/pesqueisar que quando manda localizar e após clica em qualquer lugar nela, menos nos botões, ela fica toda branca e some os botões. Passando o mouse nos locais onde se posiciona os botões eles vão aparecendo. Mas estou citando isto só a titulo de informação. Não vai atrapalhar o funcionamento do BD. Pode não ficar perfeito, mas fazer o quê?
    Mais uma vez agradeço a todos vocês, Cafpr, Dilson, Balem e João Afonso, que predispuseram em ajudar na solução do problema(dificuldade).
    Obrigado e que Deus ilunine a todos vocês.
    Estarei fechando o tópico.
    Até a próxima
    Abraços
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Dilson 23/2/2012, 02:29

    Que bom que serviu-lhe.

    Sim, basta na função mudar o método e funcionará, faça um teste, vá em "Case acTextBox" e modifique ".Locked = True" para ".Enabled = False" e verá que todos os controles ficarão inativos. Os eventos na função funcionam dentro de uma instrução with, sendo assim, poderá manipular as propriedades e métodos pertencente ao controle aninhando um embaixo do outro, assim exemplo:

    .Locked = True
    .Enabled = False
    .BackColor = VbGreen

    e outros


    Aqui não acontece bugs como relatou; funciona na perfeição. Pode ser pelo seu access ser 2003 ou mesmo recursos de hardware (sobrecarga na alocação de memória), não sei ...

    Abraço!
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 23/2/2012, 11:12

    Prezado João Afonso,

    testei o seu exemplo mas ela não funciona, pois não permite editar o formulário quando o mesmo é aberto diretamente, sem passar pelo botão de localizar. É necessário que o frm_cadstro_geral permita edição e inclusão quando é aberto direto. De qualquer forma,agradeço a seu empenho, mas o colega Dilson achou uma solução que irá atender-me plenamente. Obrigado.

    Ok, Dilson. Obrigado pelo retorno e vou verificar o hardware.
    Abraços
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  OLDRIVG 27/2/2012, 03:32

    Prezado Dilson,
    retornando com a dificuldade: a função que vc me passou post acima, funcionava legal como informei. Acontece que continuei a realizar implementações no BD e agora, quase no final da programação, resolvi verificar a função e, para minha surpresa, ela não funcionou. Está dando erro.

    O erro é o seguinte:
    se ela estiver como vc passou, ao clicar no botão do frm_GERAL, que abre o frm.Cadastro_Geral e a janela de loclizar/substituir, retorna o erro "Voce não pode desativar um controle enquanto ele tiver o foco", e não destiva ou bloqueia.
    Se apagar o código, na função, que bloqueia/desativa os botões de comando ( Case acCommandButton .Enabled = False), para de dar o erro, mas também não bloqueia e nem deativa.
    Já tentei resolver procurando e destivando as implementações que fiz, mas não tive sucesso. Então resolvi recorrer ao forum e a vc para ver o que pode estar ocorrendo.
    Assim sendo, reabro o tópico é aguardo sugestões.
    Colega Dilson, a função está abaixo e a linha em vermelho é a que se retirada para de dar o erro.

    Function BloqueioFrm(argFrm As Form)

    Dim ctl As Control

    For Each ctl In argFrm.Controls
    With ctl
    Select Case .ControlType

    'Bloquear todas as caixas de texto
    Case acTextBox
    .Locked = True

    'Bloquear todas as caixas de combinação
    Case acComboBox
    .Lockedd = True

    'Bloquear todas as caixas de seleção
    Case acCheckBox
    .Locked = True

    'Deixar inativo todos os botões de comando
    Case acCommandButton
    .Enabled = False



    'Bloquear todos os botões de opção
    Case acOptionButton
    .Locked = True


    'Bloquear todos os grupos de opção
    Case acOptionGroup
    .Enabled = True


    End Select
    End With
    Next ctl
    DoCmd.GoToControl "NomeDoAfiliado"

    End Function

    No aguardo, agradeço.
    Abraços


    Conteúdo patrocinado


    Desativar todos os campos de um formulário. Empty Re: Desativar todos os campos de um formulário.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 00:35