Позиция Delphi TTaskDialog при открытии
Через Delphi 10.2.3: TTaskDialog всегда открывается в центре экрана, и, поскольку у него нет свойства Position, не существует простого способа переопределить это поведение. Я хочу, чтобы все мои TTaskDialogs располагались в poMainFormCenter. Если не считать написания замены для TTaskDialog, есть ли способ заставить это поведение работать?
1 ответ
Возможно, вы не в курсеFlags
свойство и флаг:
Если установлено, [] диалоговое окно задач центрируется по отношению к [его] родительскому окну.
with TTaskDialog.Create(Self) do
try
Caption := Self.Caption;
MainIcon := tdiNone;
Title := 'Do you want to create a new batch of frogs?';
CommonButtons := [tcbYes, tcbNo];
Flags := [tfPositionRelativeToWindow];
Execute;
finally
Free
end;
Строго говоря, это позиционирует диалоговое окно задачи относительно родительской формы, а не основной формы, но я подозреваю, что это именно то, что вам действительно нужно.
The
tfPositionRelativeToWindow
карты флагов наTDF_POSITION_RELATIVE_TO_WINDOW
флаг базового вызова API дляTaskDialogIndirect
:
Указывает, что диалоговое окно задачи расположено (по центру) относительно окна, заданного параметром hwndParent. Если флаг не указан (или не указан член hwndParent), диалоговое окно задачи позиционируется (центрируется) относительно монитора.