Delphi FMX使用鼠标调整无边框形式

时间:2014-02-21 12:16:04

标签: delphi

无论如何使用鼠标在Delphi FMX中调整无边框形状的大小? 我曾尝试使用OnMouseDownOnMouseMove,然后使用表单的位置与表单的左侧和顶部进行比较,但我无法使其工作。

由于某些原因,在正常的VCL应用程序中,FMX中的鼠标似乎与鼠标非常不同。

2 个答案:

答案 0 :(得分: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;

btnRedimensionne是一个按钮,图像或其他用作夹点控制的东西。

在课堂上添加:

deplacementX, deplacementY: Single;

这些字段用于计算形式(增加或减少表格/框架的大小)。

答案 1 :(得分:0)

如果您的客户不禁止这样做,则可以在运行时更改BorderStyle,以使用户能够像平常一样调整表单的大小。调整大小不会造成任何问题,并且当用户不使用此功能时,将不会出现边框。用户可以通过按CTRL + R激活此功能,也可以仅使它激活的按钮或选项。

就我而言,这很好,因为我只是保存了新的给定宽度和高度,然后调整Form.Top和Form.Left以使其看起来流畅。