Delphi FMX使用鼠标调整无边框窗体的大小

Delphi FMX使用鼠标调整无边框窗体的大小,delphi,Delphi,在Delphi FMX中是否可以使用鼠标调整无边框窗体的大小? 我曾尝试使用OnMouseDown和OnMouseMove,然后将表单的位置与表单的左侧和顶部进行比较,但我无法使其正常工作 出于某种原因,FMX中的鼠标似乎与普通VCL应用程序中的鼠标非常不同 在Firemonkey中,鼠标的坐标与窗体的上/左像素不相关 您可以使用函数对其进行转换,并使用以下代码模拟sizegrip: procedure TFenetre.btnRedimensionneMouseDown(Sender: TOb

在Delphi FMX中是否可以使用鼠标调整无边框窗体的大小? 我曾尝试使用
OnMouseDown
OnMouseMove
,然后将表单的位置与表单的左侧和顶部进行比较,但我无法使其正常工作


出于某种原因,FMX中的鼠标似乎与普通VCL应用程序中的鼠标非常不同

在Firemonkey中,鼠标的坐标与窗体的上/左像素不相关

您可以使用函数对其进行转换,并使用以下代码模拟sizegrip:

procedure TFenetre.btnRedimensionneMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
  if (ssLeft in Shift) then
  begin
    deplacementX := X;
    deplacementY := Y;
  end;
end;

procedure TFenetre.btnRedimensionneMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Single);
begin
  if (ssLeft in Shift) then
  begin
    Self.width := Self.width - deplacementX + X;
    Self.height := Self.height - deplacementY + Y;
  end;
end;
BTnRedimmene是一个按钮、图像或其他任何用作gripsize控件的东西

将此添加到您的类中:

deplacementX, deplacementY: Single;

这些字段用于计算移动(增加或减少表单/框架的大小)。

如果客户不禁止,您可以在运行时更改边框样式,以便用户能够像正常情况一样调整表单大小。这不会对调整大小造成任何问题,而且当用户不使用此功能时,将不会有边框。用户可以通过按CTRL+R激活此功能,或者您可以只制作一个按钮或选项来激活它


在我的情况下,这很好,因为我只需保存新给定的witdh和height,然后调整表单。Top和Form。Left,使其看起来流畅。

添加一个状态栏,保持其
ShowSizeGrip
为真,您就完成了:)如果它有效,那太好了-您救了我的一天:)@TLama:请回答,这样我们就可以投票了?@Whosrddaddy,抱歉,我一直在忙一些字体的事情。。。嗯,看看这个用户的另一个问题,我认为这不是一个好的建议。OP似乎希望删除表单边框,然后将其功能放回不同的控件。我不知道这样做的原因,但有没有办法重新设计边界?(如果设计有问题)您好,谢谢您的评论。我需要为一个不需要边界的客户申请一张便条。我还没有测试过这个方法。但是我可以让状态栏与应用程序的颜色相同,这样用户就看不到它了——这是最好的。