Estava procurando alguma caixa de dialogo que exibe no centro da minha aplicação. Não encontrei nenhuma com alguma propriedade nesse sentido.
Ao vasculhar pela Unit dos dialogos "Vcl.Dialogs", encontrei uma função interessante que cria a caixa de dialogo e retorna um TForm, e assim me foi permitido posicionar no centro do form PAI.
Função: CreateMessageDialog
Estou compartilhando aqui com vocês.
unit uCustomMessage;
interface
uses
Vcl.Dialogs, Vcl.Forms, System.SysUtils;
const
mbOK = [mbOK];
type
TCustomMessage = class
public
class procedure ShowCustomDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons);
end;
implementation
{ TFrmMessage }
class procedure TCustomMessage.ShowCustomDlg(const Msg: string;
DlgType: TMsgDlgType; Buttons: TMsgDlgButtons);
var
FCustomMessage :TForm;
begin
FCustomMessage := CreateMessageDialog(Msg, DlgType, Buttons);
try
FCustomMessage.Position := poMainFormCenter;
FCustomMessage.ShowModal;
finally
FreeAndNil(FCustomMessage);
end;
end;
end.
Exemplo de uso:
TCustomMessage.ShowCustomDlg('Sua mensagem aqui', mtError, mbOK);
ou
TCustomMessage.ShowCustomDlg('Sua mensagem aqui', mtInformation, mbOK)
e etc.