Вроде как простой вариант :
1. Присвоить значение свойству FormStyle главной формы приложения fsStayOnTop;
2. В диалоговом окне создать обработчик события WM_NCHITTEST:
Код:
uses
Messages,
type
TOKRightDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
private
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
public
function Execute : boolean;
end;
implementation
procedure TOKRightDlg.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
with Message do
if Result = HTCAPTION then begin
Result := HTNOWHERE;
end;
end;
3. В методе Execute (диалога) указать :
Код:
function TOKRightDlg.Execute : boolean;
begin
Result:=false;
Application.NormalizeTopMosts; // ЭТО
if ShowModal = mrOk then begin
Result:=true;
end;
end;
4. Вызывать из главной формы так :
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.BringToFront;
OKRightDlg.Execute;
end;
Вроде бы работает ...