有没有办法在Delphi FMX中使用鼠标调整无边框窗体的大小?我尝试了 OnMouseDown 和 OnMouseMove 事件,并比较了窗体相对于左侧和顶部的位置,但我无法使其正常工作。由于某种原因,在FMX中的鼠标与普通VCL应用程序中的鼠标似乎非常不同。
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;
这些字段用于计算运动(增加或减小表单/框架的大小)。
如果您的客户没有禁止,您可以在运行时更改BorderStyle,以使用户能够像通常一样调整窗体大小。这不会对调整大小造成问题,而且当用户不使用此功能时,将没有边框。用户可以通过按CTRL + R来激活此功能,或者您可以制作一个按钮或选项来激活它。
在我的情况下,这很好用,因为我只需保存新给定的宽度和高度,然后调整Form.Top和Form.Left以使其看起来流畅。
ShowSizeGrip
设置为 True,然后你就完成了 :) - TLama