こんにちは。
いつも勉強させて頂いています。
ありがとうございます。
お知恵をお貸し下さい。
フォームを下記のようにモーダルで表示させ、
そのフォームを最小化した場合、
親フォームを最小化することができません。
親フォームの最小化を可能にしたいのですが、
何か方法はありますでしょうか。
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もタスクバーに表示させるようにすれば良いですね。
ツイート | ![]() |