gpt4 book ai didi

delphi - Delphi 6中如何检测鼠标何时离开TPanel?

转载 作者:行者123 更新时间:2023-12-03 14:55:41 26 4
gpt4 key购买 nike

我使用 OnMouseMove 事件来检测鼠标指针何时位于我的 TPanel 上,有没有办法知道鼠标指针何时离开它?

我需要面板在鼠标指针悬停在其上方时改变颜色,并在鼠标指针移开时返回其原始颜色?

顺便说一句,我正在使用 Delphi 6。

请帮忙。

最诚挚的问候。

最佳答案

您可以使用 OnMouseEnter/OnMouseLeave 事件对来检测鼠标

procedure TForm1.Panel1MouseEnter(Sender: TObject);
begin
Panel1.Caption:= 'IN';
Panel1.Color:= clBlue;
end;

procedure TForm1.Panel1MouseLeave(Sender: TObject);
begin
Panel1.Caption:= 'OUT';
Panel1.Color:= clWhite;
end;
<小时/>

我无法在Delphi 6中测试以下代码,但我希望它没问题

已更新

添加了 TrackMouseEvent 代码 - 感谢 Sertac Akyuz 的回答

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
FOldWndProc: TWndMethod;
FMouseInPanel: Boolean;
procedure PanelWndProc(var Message: TMessage);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
FOldWndProc:= Panel1.WindowProc;
Panel1.WindowProc:= PanelWndProc;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Panel1.WindowProc:= FOldWndProc;
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
mEvnt: TTrackMouseEvent;
begin
if not FMouseInPanel then begin
mEvnt.cbSize := SizeOf(mEvnt);
mEvnt.dwFlags := TME_LEAVE;
mEvnt.hwndTrack := Panel1.Handle;
TrackMouseEvent(mEvnt);
Panel1.Caption:= 'IN';
FMouseInPanel:= True;
end;
end;

// if not defined in Delphi 6, WM_MOUSELEAVE = $02A3
procedure TForm1.PanelWndProc(var Message: TMessage);
begin
if Message.Msg = WM_MOUSELEAVE then begin
Panel1.Caption:= 'OUT';
FMouseInPanel:= False;
end;
FOldWndProc(Message);
end;

end.

关于delphi - Delphi 6中如何检测鼠标何时离开TPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3176977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com