João Paulo Taraciuk Postado Dezembro 10, 2007 Denunciar Share Postado Dezembro 10, 2007 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!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Dezembro 10, 2007 Denunciar Share Postado Dezembro 10, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 João Paulo Taraciuk Postado Dezembro 10, 2007 Autor Denunciar Share Postado Dezembro 10, 2007 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!!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Dezembro 18, 2007 Denunciar Share Postado Dezembro 18, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 João Paulo Taraciuk Postado Dezembro 18, 2007 Autor Denunciar Share Postado Dezembro 18, 2007 (Resolvido)Muito bom, Obrigado Micheus, este procedimento resolve o meu problema, Valeu!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
João Paulo Taraciuk
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!!!
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.