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


    [Resolvido]Como detectar um clic na barra de título de um formulário

    Paulo Robilotta
    Paulo Robilotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 24/09/2010

    [Resolvido]Como detectar um clic na barra de título de um formulário Empty Como detectar um clic na barra de título de um formulário

    Mensagem  Paulo Robilotta 19/1/2012, 07:05

    Estou criando um programa que utiliza um campo memo.

    Ele tem dois formulários :
    1) Principal (onde está o campo memo)
    2) Menu (Estilo da borda = Nenhum / PopUp)

    O form Menu é colocado por cima do form Principal. Criei uma rotina que faz com que ao mover o form Principal, o form Menu se mova junto e se mantenha na mesma posição relativa ao Principal.

    Para obter o valores de deslocamento do form Principal (que são passados para o form Menu) utilizo o evento No cronômetro em ambos os forms.

    O problema é que esses eventos continuam ocorrendo mesmo quando o form Principal não está sendo movimentado.

    A estratégia que imaginei para evitar esse inconveniente é definir o TimerInterval para o valor desejado nos eventos ao apertar a tecla esquerda do mouse sobre a barra de títulos do form Principal ( então movimentá-lo) e definir o TimerInterval = zero quando soltar a tecla do mouse (o movimento do form acabou). Dito de outra maneira, gostaria de "ligar" o evento No cronômetro ao apertar a tecla esquerda do mouse e "desligar" esse evento ao soltar essa tecla.

    Imagino que a solução seja uma rotina que use API e que :

    1) Detecte que foi dado um clic na barra de título
    2) Detecte qual tecla do mouse está sendo usada
    3) e se foi um "MouseDown" ou um "MouseUp"

    Se alguém souber com se faz isso, eu agradeço a ajuda.

    Obs: A razão dessa configuração é que assim posso usar uma opção do Menu sem que o cursor se desloque da posição em que está dentro do campo memo (ou seja sem que o campo memo perca o foco).
    avatar
    Convidad
    Convidado


    [Resolvido]Como detectar um clic na barra de título de um formulário Empty Re: [Resolvido]Como detectar um clic na barra de título de um formulário

    Mensagem  Convidad 19/1/2012, 10:17

    Olá
    Até onde eu sei, creio não existir uma forma de capturar eventos do mouse na barra de título.
    Uma forma de se fazer isso é:
    - Retirar a barra de título do form.
    - Criar uma barra de título para esse form de maneira que se pareça com uma barra de título normal.
    - No evento AoApertarMouse dessa barra de título criada colocar: Call MoveForm
    - Dessa maneira você poderá capturar os cliques do mouse nessa barra.
    - Poderá então utilizar os eventos AoApertarMouse e AoLiberarMouse para ativar e zerar o TimeInterval do form.

    -Copie o código a seguir em um módulo:
    Código:

     'para mover o form sem barra de título
     Declare Function ReleaseCapture Lib "user32" () As Long
     Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

    Global Const HTCAPTION = 2
    Global Const WM_NCLBUTTONDOWN = &HA1
    Global Const WM_SYSCOMMAND = &H112

    Public Sub MoveForm(Frm As Form)
    ' esta função é usada para mover o form na tela
    Dim hhWnd
    hhWnd = Frm.hWnd

        ReleaseCapture
        SendMessage hhWnd, WM_NCLBUTTONDOWN, _
            HTCAPTION, 0&

        ' Ou use:
        ' SendMessage hhwnd, WM_SYSCOMMAND, _
        ' &HF012&, 0&
    End Sub

    chamar a função:
    Call MoveForm(Me)
    Espero ter ajudado.
    Abraços


    Última edição por Balem em 19/1/2012, 14:15, editado 2 vez(es)
    Paulo Robilotta
    Paulo Robilotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 24/09/2010

    [Resolvido]Como detectar um clic na barra de título de um formulário Empty Não funcionou

    Mensagem  Paulo Robilotta 19/1/2012, 13:18

    Balem

    Obrigado pela resposta.

    Para testar, criei um rótulo em um form sem a barra de título e no evento AoApertarMouse coloquei a chamada da função.

    Testei as duas alternativas do módulo.

    O evento é disparado mas não consigo mover o form ao executar.

    Abraço

    Paulo
    avatar
    Convidad
    Convidado


    [Resolvido]Como detectar um clic na barra de título de um formulário Empty Paulo

    Mensagem  Convidad 19/1/2012, 14:17


    Dei uma inclementada na função, de uma olhadinha no primeiro post.
    Verifique se propriedade "Movível" do teu form está como sim.
    Aguardo teu retorno.
    Abraço
    Paulo Robilotta
    Paulo Robilotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 24/09/2010

    [Resolvido]Como detectar um clic na barra de título de um formulário Empty Movimentar 2 formulários juntos - Funcionou !

    Mensagem  Paulo Robilotta 20/1/2012, 00:14

    Balem

    Os ajustes que você fez deram resultado.

    Estou postando arquivo para quem quiser ver como funciona.

    Mais uma vez , muito obrigado pelo auxílio !

    Paulo

    Atenção : Após testar melhor o arquivo verifiquei que aparentemente a posição do Menu depende da configuração da área de trabalho da janela do Access (da disposição das barras de tarefa nessa janela). Isso implica que dependendo da configuração sua área de trabalho, o menu pode "pular" da sua posição original quando se inicia o movimento do form Principal.

    Vou trabalhar no problema !

    O arquivo com as correções necessárias está num post mais abaixo !

    Anexos
    [Resolvido]Como detectar um clic na barra de título de um formulário AttachmentFormsJuntos2000.zip
    Mostra como mover dois formulários juntos no Access (2000)
    Você não tem permissão para fazer download dos arquivos anexados.
    (56 Kb) Baixado 18 vez(es)


    Última edição por Paulo Robilotta em 20/1/2012, 20:41, editado 2 vez(es)
    avatar
    Convidad
    Convidado


    [Resolvido]Como detectar um clic na barra de título de um formulário Empty Re: [Resolvido]Como detectar um clic na barra de título de um formulário

    Mensagem  Convidad 20/1/2012, 00:23

    Obrigado pelo retorno. Wink

    Sucesso amigo !
    Paulo Robilotta
    Paulo Robilotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 24/09/2010

    [Resolvido]Como detectar um clic na barra de título de um formulário Empty Re: [Resolvido]Como detectar um clic na barra de título de um formulário

    Mensagem  Paulo Robilotta 20/1/2012, 20:38

    Abaixo você encontra o arquivo corrigido.

    No arquivo anterior, as coordenadas usadas para mover o form Menu eram relativas à janela do Access.

    No arquivo atual, as coordenadas são relativas à janela do Windows. Como essas coordenadas não dependem das configurações da janela do Access, qualquer mudança nessa janela não afeta o posicionamento dos dois formulários.
    Anexos
    [Resolvido]Como detectar um clic na barra de título de um formulário AttachmentFormsJuntos2000Corrigido.zip
    Formulários que se movem juntos - Corrigido
    Você não tem permissão para fazer download dos arquivos anexados.
    (56 Kb) Baixado 22 vez(es)

    Conteúdo patrocinado


    [Resolvido]Como detectar um clic na barra de título de um formulário Empty Re: [Resolvido]Como detectar um clic na barra de título de um formulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 01:16