在Delphi FMX中有没有使用鼠标调整无边框窗体大小的方法?我尝试使用OnMouseDown和OnMouseMove,然后使用表单的位置与表单的左侧和顶部进行比较,但我无法正常工作。
由于某些原因,FMX中的鼠标似乎与普通VCL应用程序中的鼠标非常不同。
发布于 2017-08-27 01:59:55
在火猴中,鼠标的坐标在任何时候都不是窗体的左上角像素的相对位置。
您可以使用函数对它们进行转换,并使用如下代码模拟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;这些字段用于计算移动(增加或减小表单/框架的大小)。
发布于 2019-03-07 04:19:27
如果您的客户不禁止这样做,您可以更改BorderStyle while运行时,以使用户能够像往常一样调整表单大小。这对调整大小没有任何问题,虽然用户不使用此功能,但不会有边框。用户可以通过按CTRL +R来激活此功能,或者您可以只做一个按钮或选项来激活它。
在我的例子中,这很好用,因为我只需保存新的给定的witdh和高度,然后调整Form.Top和Form.Left,使其看起来流畅。
https://stackoverflow.com/questions/21934273
复制相似问题