Благодарю за ответ, пытался исходник поредактировать — винда на права доступа ругалась. Сделал так:
unit Forms.Persistent;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
{$IF Defined(WIN32) OR Defined(WIN64)}
Winapi.Windows, FMX.Platform.Win, Winapi.Messages,
{$ENDIF}
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs;
type
TfrmPersistent = class(TForm)
{$IF Defined(WIN32) OR Defined(WIN64)}
private
FHwnd: HWND;
FOldWndProc: LONG_PTR;
protected
procedure CreateHandle; override;
procedure DestroyHandle; override;
{$ENDIF}
end;
implementation
{$R *.fmx}
{$IF Defined(WIN32) OR Defined(WIN64)}
{ TfrmPersistent }
procedure TfrmPersistent.CreateHandle;
function WindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
frm: TCommonCustomForm;
begin
frm := FindWindow(hwnd);
Assert(frm.InheritsFrom(TfrmPersistent));
if Assigned(frm) then
begin
if uMsg = WM_GETMINMAXINFO then
begin
with PMinMaxInfo(LParam)^.ptMinTrackSize, frm do
begin
X := 950 + Width - ClientWidth;
Y := 500 + Height - ClientHeight;
end;
Result := 0;
end else
Result := CallWindowProc(Ptr(TfrmPersistent(frm).FOldWndProc), hwnd, uMsg, WParam, lParam);
end else
Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
end;
begin
inherited CreateHandle;
FHwnd := WindowHandleToPlatform(Handle).Wnd;
FOldWndProc := GetWindowLongPtr(FHwnd, GWL_WNDPROC);
SetWindowLongPtr(FHwnd, GWL_WNDPROC, NativeInt(@WindowProc));
end;
procedure TfrmPersistent.DestroyHandle;
begin
Assert(FHwnd <> 0);
SetWindowLongPtr(FHwnd, GWL_WNDPROC, FOldWndProc);
inherited DestroyHandle;
end;
{$ENDIF}
end.
Может кому пригодится.