DELPHI 拖动窗体
作者:互联网
我写了一个无边框的窗体.想通过pnlTop实现拖动窗体,与双击时最大化的功能.
最佳的解决方案如下:
procedure TFMain.pnlTopMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(FMain.Handle, WM_SYSCOMMAND, $F011, 0);
end;
procedure TFMain.pnlTopDblClick(Sender: TObject);
begin
self.Top := 0;
self.Left := 0;
self.Width := screen.WorkAreaWidth; //屏幕宽度
self.Height := screen.WorkAreaHeight; //屏幕高度
end;
踩过的坑:
我先声明了一个全局
var P:point;
然后:
procedure TFMain.pnlTopMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
P.X=X;
P.Y=Y;
end;
procedure TFMain.pnlTopMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if shift=[ssLeft] then
begin
self.left:=self.left + x - p.x;
self.top := self.top + y - p.y;
end;
end;
写到这里,程序还是没问题的.
但是后来想通过双击panel来实现窗体最大化就不行了.按下/弹起事件与双击事件有冲突,怎么都实现不了.最后是大佬指明了道路,感谢大佬!
标签:begin,end,Sender,拖动,DELPHI,TObject,窗体,self 来源: https://www.cnblogs.com/yoooos/p/16386925.html