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

use*_*132 5 delphi

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

由于某种原因,FMX 中的鼠标看起来与普通 VCL 应用程序中的鼠标非常不同。

小智 0

在 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;
Run Code Online (Sandbox Code Playgroud)

btnRedimensionne 是一个按钮、图像或任何其他用作手柄大小控制的东西。

将其添加到您的班级中:

deplacementX, deplacementY: Single;
Run Code Online (Sandbox Code Playgroud)

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