如何移动无边框表格?我尝试在互联网上查找,但没有。非常感谢。
问问题
12019 次
2 回答
25
您可以使用任何包含的控件(包括其自身)来拖动表单。
使用以下示例,您可以通过单击其画布并拖动来移动表单。您可以通过在面板的 MouseDown 事件中放置相同的代码来对表单上的面板执行相同的操作,这样您就可以创建自己的伪标题栏。
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DRAGMOVE = $F012;
begin
if Button = mbLeft then
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;
end;
于 2012-06-06T20:07:38.163 回答
13
如果您的意思是用鼠标拖动窗口,您可以覆盖WM_NCHITTEST
消息处理并返回HTCAPTION
拖动区域。下面将在上部 30 像素内拖动窗口,例如:
type
TForm1 = class(TForm)
private
protected
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
end;
..
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
var
Pt: TPoint;
begin
Pt := ScreenToClient(SmallPointToPoint(Message.Pos));
if Pt.Y < 30 then
Message.Result := HTCAPTION
else
inherited;
end;
于 2012-06-06T19:55:33.497 回答