其他分享
首页 > 其他分享> > DELPHI 拖动窗体

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