Ik had (weer) het probleem dan mijn messageboxen niet verschenen waar ik wou.
Deze messagebox is min of meer een kopie van de MessageDlgPosHelp functie uit de Dialogs unit. Het enige verschil is het instellen van de ParentHandle.

Hierdoor heeft deze melding iets meer de neiging om bovenop te verschijnen dan de gewone ShowMessage, die nog weleens achter andere schermen schuilgaat.
Het is niet de enige manier om dit voor elkaar te krijgen, maar het werkt wel (voor mij). Bovendien zet deze direct het warning-icoon in de messagebox, hetgeen ik persoonlijk ook voor normale messages wel netjes vindt.
Code:
type
  TMegaForm = class(TForm);
function MyMessageDlgPosHelp(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
  const HelpFileName: string): Integer;
var
  f: TMegaForm;
begin
  f := TMegaForm(CreateMessageDialog(Msg, DlgType, Buttons));
  with f do
    try
      Caption := Application.Title;
      HelpContext := HelpCtx;
      HelpFile := HelpFileName;
      if X >= 0 then Left := X;
      if Y >= 0 then Top := Y;
      if (Y < 0) and (X < 0) then Position := poScreenCenter;

      if Assigned(Screen.ActiveForm) then
        ParentWindow := Screen.ActiveForm.Handle
      else
        ParentWindow := GetActiveWindow();

      Result := ShowModal;
    finally
      Free;
    end;
end;

procedure ShowError(AMsg: string);
begin
  MyMessageDlgPosHelp(AMsg, mtError, [mbOK], 0, -1, -1, '');
end;

procedure ShowMsg(AMsg: string);
begin
  MyMessageDlgPosHelp(AMsg, mtWarning, [mbOK], 0, -1, -1, '');
end;