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


2 participantes

    remover todos os rótulos de um form dinamicamente

    avatar
    pcdesignerce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 24
    Registrado : 14/02/2014

    remover todos os rótulos de um form dinamicamente Empty remover todos os rótulos de um form dinamicamente

    Mensagem  pcdesignerce 26/6/2016, 18:46

    Olá boa tarde a todos.
    é o seguinte addicionei ums rotulos da seguinte forma

    'Cria a controle labl com os dados
           Set ctlText = CreateControl("FormVisualizarContasBancarias", acLabel, acDetail, , campo, esquerdaText, topoText, larguraText, alturaText)
           ctlText.Name = banco & "campo" & j
           
           ' Cria label do controle.
           Set ctlLabel = CreateControl("FormVisualizarContasBancarias", acLabel, acDetail, , rotulo, esquerdaLabel, topoLabel, larguraLabel, alturaLabel)
           ctlLabel.Name = banco & "rotulo" & j

    estou tentando remover conforme código abaixo, mas esta dando o seguinte erro:
    erro de compilação: o tipo definido pelo usuário não foi definido.

    Dim c As Control
       For Each c In Controls
           If TypeOf c Is MSForms.Label Then
               Me.Controls.Remove c.Name
           End If
       Next

    desde já agradeço a atenção
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3877
    Registrado : 04/04/2010

    remover todos os rótulos de um form dinamicamente Empty Re: remover todos os rótulos de um form dinamicamente

    Mensagem  Avelino Sampaio 26/6/2016, 22:47

    Olá!

    use o Application.DeleteControl().  Exemplo:

    Dim ctl As control, frm As Form
    DoCmd.OpenForm "FormVisualizarContasBancarias", acDesign
    Set frm = Forms!FormVisualizarContasBancarias
    For Each ctl In frm.Controls
       If ctl.ControlType = acLabel Then
           Application.DeleteControl frm.Name, ctl.Name
       End If
    Next


    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    pcdesignerce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 24
    Registrado : 14/02/2014

    remover todos os rótulos de um form dinamicamente Empty Re: remover todos os rótulos de um form dinamicamente

    Mensagem  pcdesignerce 29/6/2016, 17:43

    Olá nobre Avelino
    Funcionou em parte só não entendi porque, se todos controles são rótulos e apenas são nomeados diferentes.

    O rótulos criado com esta linha de comando apagou todos até um rótulo criado manualmente como titulo do form.
    'Cria a controle labl com os dados
          Set ctlText = CreateControl("FormVisualizarContasBancarias", acLabel, acDetail, , campo, esquerdaText, topoText, larguraText, alturaText)
          ctlText.Name = banco & "campo" & j

    Os rótulos criados com este comando não apagou
    ' Cria label do controle.
          Set ctlLabel = CreateControl("FormVisualizarContasBancarias", acLabel, acDetail, , rotulo, esquerdaLabel, topoLabel, larguraLabel, alturaLabel)
          ctlLabel.Name = banco & "rotulo" & j

    mas também agora eu dei uma modificado no código, que estava muito extenso, com muitos rótulos sem necessidade, então, substitui a função split() por replace()
    e em vez de criar uns 50 rótulos crio apenas 4, mas continua não deletando e aparece esta mensagem abaixo:

    remover todos os rótulos de um form dinamicamente Teste

    Eu não tenho certeza mas no procedimento que passou acho que não se faz necessário passar o nome dos rótulos já que parte deles foram deletados.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3877
    Registrado : 04/04/2010

    remover todos os rótulos de um form dinamicamente Empty Re: remover todos os rótulos de um form dinamicamente

    Mensagem  Avelino Sampaio 29/6/2016, 23:02

    Olá!

    Experimente assim:

    Dim ctl As control, frm As Form, seq$, k, j%
    DoCmd.OpenForm "frmTeste4", acDesign
    Set frm = Forms!frmTeste4
    For Each ctl In frm.Controls
    If ctl.ControlType = acLabel Then
    seq = seq & "," & ctl.Name
    End If
    Next
    seq = Mid(seq, 2)
    k = Split(seq, ",")
    For j = 0 To UBound(k)
    Application.DeleteControl frm.Name, k(j)
    Next


    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    pcdesignerce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 24
    Registrado : 14/02/2014

    remover todos os rótulos de um form dinamicamente Empty Re: remover todos os rótulos de um form dinamicamente

    Mensagem  pcdesignerce 30/6/2016, 14:15

    Bom dia Avelino,
    Desculpa o trabalho, mas acho que desta vez consegui da um rumo para a solução.
    Continua dando a mesma mensagem conforme imagem a baixo.
    fiz alguns testes e por fim testei um simples botão com uma msgbox, mesmo assim aparecia o aviso
    com isso entendi que o erro é no form, então deletei e recriei o form, então testei o primeiro código que você me passou
    funcionou perfeitamente, mas ai é que esta o problema, após roda o procedimento para apagar os rótulos a primeira vez
    é como deixasse de existir o nome do form, controle ou da instrução do botão dentro do access ou vba.
    Ai quando executo novamente o comando de criar os rótulos funciona corretamente, mas o comando de apagar os rótulos
    ou qualquer outro comando dentro do form por mais simples que seja, aparece a mensagem conforme imagem abaixo.
    Mando a em da mensagem por completo pra você avaliar.
    remover todos os rótulos de um form dinamicamente Captura_de_tela_2016-06-30_093
    avatar
    pcdesignerce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 24
    Registrado : 14/02/2014

    remover todos os rótulos de um form dinamicamente Empty Re: remover todos os rótulos de um form dinamicamente

    Mensagem  pcdesignerce 30/6/2016, 22:01

    Boa Noite Avelino,

    Dei uma mudada aqui nas coisas que funcionou em parte
    fiz de outra forma, acho que o problema é que o forme esta sendo fechado sem salvar a deleção.

    Private Sub Comando0_Click()
    Dim ctl As Control, frm As Form
    DoCmd.OpenForm "FormVisualizarContasBancarias", acDesign
    Set frm = Forms!FormVisualizarContasBancarias

    For Each ctl In frm.Controls
    X = ctl.Name

       If X = "Banco1" Or X = "Banco2" Or X = "Banco3" Or X = "Banco4" Then
       Application.DeleteControl frm.Name, X
       End If
       
    Next

    DoCmd.Save
    DoCmd.OpenForm "FormVisualizarContasBancarias"


    End Sub

    o que esta acontecendo aqui no final é o seguinte:
    com o DoCmd.OpenForm "FormVisualizarContasBancarias" funciona perfeitamente
    se em vez de DoCmd.OpenForm "FormVisualizarContasBancarias" eu colocar DoCmd.Close
    simplesmente fecha o form as vezes apaga, ou apaga somente 1 ou não apaga nenhum rotulo.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3877
    Registrado : 04/04/2010

    remover todos os rótulos de um form dinamicamente Empty Re: remover todos os rótulos de um form dinamicamente

    Mensagem  Avelino Sampaio 30/6/2016, 23:06

    pcdesignerce

    Eu havia detectado problemas ao delatar os campos dentro do For Each.  Por isso, no meu último código exemplo, eu só peguei os nomes no laço For Each e deletei os campos num For simples. SE vc não conseguir amanha faço um exemplo e te mando.


    Última edição por Avelino Sampaio em 1/7/2016, 09:58, editado 1 vez(es)


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    pcdesignerce
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 24
    Registrado : 14/02/2014

    remover todos os rótulos de um form dinamicamente Empty Re: remover todos os rótulos de um form dinamicamente

    Mensagem  pcdesignerce 1/7/2016, 04:23

    blz Avelino, felizmente vou te aguardar, pois já tentei de todas as formas que meu conhecimento permite
    mas não cheguei uma solução. Também queria se possível passar um link com estudo a respeito desse caracteres
    que procedem nas variáveis "$" e "%".

    Desde já agradeço sua atenção
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3877
    Registrado : 04/04/2010

    remover todos os rótulos de um form dinamicamente Empty Re: remover todos os rótulos de um form dinamicamente

    Mensagem  Avelino Sampaio 1/7/2016, 09:57

    Quanto aos caracteres, na minha dica 19

    http://www.usandoaccess.com.br/dicas/dicas-praticas-de-access-parte-2.asp?id=1&idlista=171#inicio

    Bom estudo!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.

    Conteúdo patrocinado


    remover todos os rótulos de um form dinamicamente Empty Re: remover todos os rótulos de um form dinamicamente

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 01:57