Позиция 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), диалоговое окно задачи позиционируется (центрируется) относительно монитора.

Другие вопросы по тегам