Механизм VCL Position
опирается на другие формы приложения, все из которых работают с одной и той же версией VCL. Это явно не тот случай, и вам придется размещать форму вручную.
Чтобы узнать положение основной формы, позвоните по номеру GetWindowRect()
, передавая дескриптор главной формы. Затем вам нужно выяснить, куда должна идти ваша форма, чтобы оказаться в центре этой формы.
procedure PositionForm(Form: TForm; MainWindow: HWND);
var
MainBounds: TRect;
MainWidth, MainHeight: Integer;
begin
if GetWindowRect(MainWindow, MainBounds) then
begin
MainWidth := MainBounds.Right-MainBounds.Left;
MainHeight := MainBounds.Bottom-MainBounds.Top;
Form.Left := MainBounds.Left + (MainWidth - Form.Width) div 2;
Form.Top := MainBounds.Top + (MainHeight - Form.Height) div 2
end;
Кстати, передаваемая вами ручка - HWND
, а не THandle
. Вы должны изменить свой код соответственно. Это не изменит поведение, но это логично правильно.