简单总结下两种方法
方法1:HTCLIENT转换为HTCAPTION
函数定义 private
{ Private declarations }
procedure WMNCHitTest(var Msg:TWMNCHitTest);message WM_NCHITTEST;
{ Private declarations }
procedure WMNCHitTest(var Msg:TWMNCHitTest);message WM_NCHITTEST;
procedure TmForm.WMNCHitTest(var Msg:TWMNCHitTest);
var
p: TPoint;
begin
DefaultHandler(Msg);
if Msg.Result = HTCLIENT then begin
with JvHTLabel1 do begin
p.X:= Left; p.Y:= Top;
p := Application.MainForm.ClientToScreen(p);
if (Msg.XPos > p.X) and (Msg.XPos < p.X + Width) and
(Msg.YPos > p.Y) and (Msg.YPos < p.Y + Height) then
begin
Msg.Result:= HTCAPTION;
SetCursor(LoadCursor(0,IDC_SIZEALL));
end;
end;
end;
end;
var
p: TPoint;
begin
DefaultHandler(Msg);
if Msg.Result = HTCLIENT then begin
with JvHTLabel1 do begin
p.X:= Left; p.Y:= Top;
p := Application.MainForm.ClientToScreen(p);
if (Msg.XPos > p.X) and (Msg.XPos < p.X + Width) and
(Msg.YPos > p.Y) and (Msg.YPos < p.Y + Height) then
begin
Msg.Result:= HTCAPTION;
SetCursor(LoadCursor(0,IDC_SIZEALL));
end;
end;
end;
end;
方法2:发送系统消息
给目标控件添加OnMouseDown消息处理函数,实现方法很简单procedure TmForm.JvHTLabel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SetCursor(LoadCursor(0,IDC_SIZEALL));
Perform(WM_SYSCOMMAND,$F012,0);
end;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SetCursor(LoadCursor(0,IDC_SIZEALL));
Perform(WM_SYSCOMMAND,$F012,0);
end;