Ich vergaß noch zu erwähnen, dass die Lösung von @hoika das Problem nicht beseitigt.
Hmm.. nun wie ich schon sagte wenn er ModalResult
NICHT auswertet kann er auch auf ShowModal verzichten ist wohl die beste Lösung.
EnableWindow und SetWindowPos liefern dann das gleiche Ergebnis.
Emuliertes ShowModal.. und fertig.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 =
class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;
end.
Delphi-Quellcode:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 =
class(TForm)
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Form1.Enabled := True;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
Form1.Enabled := False;
SetWindowPos(
Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE
or SWP_NOMOVE
or SWP_NOSIZE);
end;
end.
Man kann jetzt noch das neue Fenster über das alte zentrieren das habe ich mir aber erspart.
gruss