Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) OnMouseLeave


João Paulo Taraciuk

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0
Bom Dia a todos, Alguém sabe como poderia fazer para ativar o evento OnMouseLeave em um TPanel ?

Pois tal evento não existe no TPanel, utilizo Delphi 7

Valeu!!!

Substitua o TPanel pelo TGroupBox. O TGroupBox tem o evento que você precisa.

Link para o comentário
Compartilhar em outros sites

  • 0

Infelizmente não deu, aqui não tem este evento no groupbox, pelo menos no Delphi 7 não, o que eu quero fazer é que ao sair com o mouse de dentro do TPanel ou TgroupBox, o componente fique invisível, pois é um painel que informa atalhos, como um popup, então fica alguns segundos e some, a não ser que o mouse esteja dentro dele.

Falow!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

João Paulo Taraciuk, você pode simular o efeito LeaveOut manipulando o evento OnMouseMove e capturando os eventos do mouse ao entrar na área do seu panel.

Segue um exemplo para entender como funciona o efeito:

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 // conferimos se já não estamos monitorando a saída da área do panel
  if GetCaptureControl <> Sender then  // se não estavamos...
  begin
   // capturamos os evento do mouse para este componente
    SetCaptureControl(TPanel(Sender));
   // alteramos o caption para perceber o que ocorre
    TPanel(Sender).Caption := 'Mouse na área do panel';
  end else
  begin
   // alteramos o caption para perceber o que ocorre
    TPanel(Sender).Caption := Format('%d,%d', [X, Y]);
   // caso o cursor do mouse não esteja na área do panel, está fora do mesmo
    if not PtInRect(TPanel(Sender).ClientRect, Point(X, Y)) then
    begin
     // encerramos a captura dos evento do mouse para este componente
      SetCaptureControl(nil);
     // alteramos o caption para perceber o que ocorre
      TPanel(Sender).Caption := 'Mouse fora da área do panel';
    end;
  end;
end;
No seu caso, basta algo como:
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if GetCaptureControl <> Sender then
    SetCaptureControl(TPanel(Sender));
  else
    if not PtInRect(TPanel(Sender).ClientRect, Point(X, Y)) then
    begin
      SetCaptureControl(nil);
      TPanel(Sender).Visible := False;
    end;
end;

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...