2017-11-15 Delphi でクリックしたフォームの表示の挙動
Delphi XE2 とDelphi 7 で開発を行っていますが、別のフォームを show で表示した時の挙動が異なります。
■Delphi 7
Form1 から Form2.show で別のフォームを表示した後に、Form2 を Form1 の上に移動して、半分位を重ね合わせます。
Form1 をクリックするとフォーカスが移動して、Form1 の全体が表示されます。
■Delphi XE2
Form1 から Form2.show で別のフォームを表示した後に、Form2 を Form1 の上に移動して、半分位を重ね合わせます。
Form1 をクリックするとフォーカスが移動しますが、Form1 のうち、Form2 が重なっている部分は Form2 が表示されます。
本当は、クリックしてので、全体が表示して欲しいと思います。
XE2 で全体を表示するには、以下の対策があります。
■プロジェクトファイルを変更する
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := False; //Falseにする
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
■全てのフォームに記述する
type
TForm1 = class(TForm)
procedure CreateParams(var Params: TCreateParams); override;
{$R *.dfm}
//クリックした時にフォームをアクティブにするために必要
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := Application.Handle;
end;
type
TForm2 = class(TForm)
procedure CreateParams(var Params: TCreateParams); override;
{$R *.dfm}
//クリックした時にフォームをアクティブにするために必要
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := Application.Handle;
end;
以下を参考にしました。有益な情報の提供をしていただき、ありがとうございました。
http://mrxray.on.coocan.jp/Delphi/plSamples/122_PluralForms.htm#list6
http://d.hatena.ne.jp/au2010/20110616/1308233783
2017年11月15日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/181577552
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/181577552
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック