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

    Cursor no final do textbox

    avatar
    Pietrobom
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 13/08/2017

    Cursor no final do textbox Empty Cursor no final do textbox

    Mensagem  Pietrobom 6/5/2021, 05:21

    Olá estou criando um formulário "adchist" com um text.box "historico" onde você coloca algumas informações sobre a compra do cliente e quando você clica no botão "SubmetHist" ele deve copiar o que foi escrito no textbox, fechar o formulário, abrir outro formulário - "Cadastro de Cliente", liberar a text.box "Histórico" colocar o cursor no final do texto que já existe e colar o texto que foi copiado.

    Não consigo fazer o cursor ficar no final do texto da text.box "Histórico", poderiam ajudar? Segue a programação:

    Obs. Não sou programador.

    Private Sub SubmitHist_Click()

        Me.Historico.SetFocus

        Me.Historico.SelStart = 0

        Me.Historico.SelLength = VBA.Len(Me.Historico.Text)

        DoCmd.RunCommand acCmdCopy

            DoCmd.Close

                DoCmd.OpenForm "Cadastro de Clientes", acNormal

                Forms![Cadastro de Clientes].Histórico.Locked = False

                Forms![Cadastro de Clientes].Histórico.SetFocus

                Forms![Cadastro de Clientes].Histórico.SelectionStart = Forms![Cadastro de Clientes].TextLength)

    A última linha dá erro, ainda tenho que criar o código para colar e para bloquear o text.box novamente, mas isso consigo fazer.

    O SetFocus seleciona todo o texto da text.box, se eu mandar colar direto perco o texto que já existia e não é essa a ideia.

    Desde já grato pela ajuda.
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3662
    Registrado : 21/04/2011

    Cursor no final do textbox Empty Re: Cursor no final do textbox

    Mensagem  Marcelo David 6/5/2021, 15:48

    Bom dia Pietro, seja bem vindo ao melhor fórum de Access em língua portuguesa do mundo!

    Se a intenção é apenas passar o valor do textbox Historico do formulário adchist para o textbox Histórico do formulário Cadastro de Clientes,
    seria mais elegante passar via argumento de abertura.

    Veja como ficaria:

    No formulário adchist, no clique do botão SubmitHist:

    Código:

    'Caso haja algum valor no textbox Historico, abro o formulário Cadastro de Clientes passando como
    'argumento o conteúdo do textbox Historico
     
        If Not IsNull(Me.Historico) then DoCmd.OpenForm "Cadastro de Clientes", acNormal, , , , , Me.Historico

    No evento Ao abrir do formulário Cadastro de Clientes:

    Código:

        'Verifico se há argumentos e caso haja, procedo com o código
        If Not IsNull(Me.OpenArgs) Then
        'Uso o With para evitar que escrever Me.Historico todas as vezes que for me referir ao Me.Historico
           With Me.Histórico
               'Desbloqueio o textbox
              .Locked = False
              'Foco o textbox
              .SetFocus
              'Passo o valor do OpenArgs para o textbox (mantendo o que já existe)
              'e removo o espaço em branco a esquerda da concatenação
              .Value = LTrim(.Value & " " & Me.OpenArgs)
              'Movo o curso para frente do último caracter do textbox para evitar abertura
              'que todo o texto fique selecionado
              .SelStart = Len(.txt1.Text)
          End With
        End If


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    Cursor no final do textbox Marcel11
    avatar
    Pietrobom
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 13/08/2017

    Cursor no final do textbox Empty Cursor no final do textbox

    Mensagem  Pietrobom 6/5/2021, 16:49

    Olá Marcelo,

    Muito obrigado pela sua resposta. Coloquei os códigos no adchist e no evento Form_Load no formulário Cadastro de Clientes, porém ele deu um erro de "membros de dados não encontrado" no ".txt1" nessa linha:

    .SelStart = Len(.txt1.Text)

    Eu tinha que substituir esse termo?

    Grato.
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3662
    Registrado : 21/04/2011

    Cursor no final do textbox Empty Re: Cursor no final do textbox

    Mensagem  Marcelo David 6/5/2021, 18:26

    Escrevi errado. Remova o destacado em vermelho:
    .SelStart = Len(.txt1.Text)
    deverá ficar assim:
    .SelStart = Len(.Text)



    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    Cursor no final do textbox Marcel11

    Pietrobom gosta desta mensagem

    avatar
    Pietrobom
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 13/08/2017

    Cursor no final do textbox Empty Re: Cursor no final do textbox

    Mensagem  Pietrobom 6/5/2021, 18:41

    Marcelo, muito obrigado mais uma vez.

    Outra questão, teria como, na concatenação, dar um Enter (descer uma linha) entre o texto já existente e o texto novo que está sendo adicionado do outro formulário?

    Abçs
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3662
    Registrado : 21/04/2011

    Cursor no final do textbox Empty Re: Cursor no final do textbox

    Mensagem  Marcelo David 6/5/2021, 20:15

    Altere essa linha:

    .Value = LTrim(.Value & " " & Me.OpenArgs)
    para
    .Value = .Value & IIf(IsNull(.Value), "", vbNewLine) & Me.OpenArgs

    E caso queira que o cursor do mouse se posicione logo no início do texto, altere essa linha:
    .SelStart = Len(.Text)
    para
    .SelStart = 0

    Agora se quiser que continue indo para o final do texto, deixe como estava.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    Cursor no final do textbox Marcel11

    Pietrobom gosta desta mensagem


      Data/hora atual: 26/1/2023, 22:34