こんにちは。
いつも勉強させて頂いています。
ありがとうございます。
お知恵をお貸し下さい。
フォームを下記のようにモーダルで表示させ、
そのフォームを最小化した場合、
親フォームを最小化することができません。
親フォームの最小化を可能にしたいのですが、
何か方法はありますでしょうか。
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not Assigned(Form2) then
    Form2 := TForm2.Create(Application);
  Form2.Show;
end;f
一部、訂正します。
Form2.Show; →  Form2.ShowModal;
以下のようにすると一応最小化(?)しますが・・・  ・・・
    { Private 宣言 }
    procedure WM_SYSCOMMAND(var Msg: TWMSYSCOMMAND); message WM_SYSCOMMAND;
  public
    { Public 宣言 }
  end;
var
  Form2: TForm2;
implementation
uses unit1;
{$R *.DFM}
procedure TForm2.WM_SYSCOMMAND(var Msg: TWMSYSCOMMAND);
begin
  if Msg.CmdType = SC_MINIMIZE then
    Form1.WindowState := wsMinimized;
  inherited;
end;
> deldel さん
できました。
ありがとうございました。
しかし、親→モーダル(子)→モーダル(孫)とした場合に、
モーダル(孫)を最小化し、タスクバーから元に戻すと、
モーダル(子)が最前面に表示されて、操作不能っぽくなってしまうのですね。
ちからワザ(?)はやめて、モードレスの方で考えてみようと思います。
それでもこの手法は大変勉強になりました。
ありがとうございました。
こんにちは.
>モーダル(孫)を最小化し、タスクバーから元に戻すと、
>モーダル(子)が最前面に表示されて、操作不能っぽくなってしまうのですね。
このあたりは,Delphi のバージョンと,作成した EXE を実行する環境,
つまり,Windows のバージョンも関係するので,よく検討した方がいいですよ.
> Mr.XRAY さん
それは未確認でした。
ありがとうございました。
記憶があまり確かではないのですが,
少なくても,Delphi 2007 ではアプリケーションウインドウというのがあります.
これが,ちょっと変な動きをします.というと Embarcadero さんに怒られそうですが.
このアプリケーションウインドウの表示制御は,どうもケースバイケース的なので.
Delphi のバージョンの記載がないで先のレスとなりました.
知っていて損はないですからね.
もし,Delphi 2007 よりも前のバージョンでしたら意味のないレスとなると思います.
無視してください.
最小化だけでなく普通に操作できちゃうけど
uses
   Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
    Form2 := TForm2.Create(Self);
    Form2.WindowList := DisableTaskWindows(0);
    if Form2.ShowModal = mrOK then
    begin
    end;
    Form2.Free;
end;
///////////////
  TForm2 = class(TForm)
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
  public
    WindowList: Pointer;
  end;
procedure TForm2.FormShow(Sender: TObject);
begin
    EnableTaskWindows(WindowList);
end;
//////
if not Assigned(Form2) then
    Form2 := TForm2.Create(Application);
    Form1.Hide;
    Form2.ShowModal;
    Form1.Show;
だけでいい気もするけど・・・
>KHE00221 さん
ありがとうございました。
想像の遙か上の手法で頭がボーッとしちゃいました(^^;
if not Assigned(Form2) then  で始まる方も面白いですね。
タスクバーから消えてしまって慌てましたが、
Form2もタスクバーに表示させるようにすれば良いですね。
| ツイート | 
        
         |