Delphi2007のVCLアプリケーションウィンドウのVista不具合解消対応
|
25 |
VCLonVista |
動作確認 |
Delphi2007 |
更新日 |
2008/06/23(月) |
Delphi2007ではVCLがVista対応されました。
2007以前のDelphiのVCLで作られたアプリケーションは
特殊なウィンドウの親子関係をもっていたので
タスクバー上マウス移動でのサムネイル表示や
Flip 3DといったVistaの新しい機能が正しく動いていないので対応されたのでしょう。
Vista以前のWindowsでも、Delphi製やC++Builder製のアプリは
アプリケーションウィンドウが使われていた為に変な挙動なっていましたが
Delphi2007でコンパイルすることで、これも修正されています。
ソースコードの互換性を実現するために
プロジェクトソースのコードで実現されています。
Delphi2007で新規にVCLフォームアプリケーションをつくったときの
プロジェクトソースは次の通り
────────────────────
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
────────────────────
新設されたMainFormOnTaskbarプロパティを設定する行が追加されています。
今までのVCLは
画面はForm1だが、タスクバーに格納されているのは
Applicationのウィンドウという
少々不格好な構造をしていたのですが
MainFormOnTaskbar := Trueと指定されていると
画面もタスクバーに格納されるのもForm1のウィンドウになります。
この行を削除すると、MainFormOnTaskbar := False になり
Delphi2006以前の旧バージョンのアプリケーションウィンドウを使った
変な挙動のウィンドウの親子関係になります。
修正されて、まともになってよかったです。
既存のプロジェクトはこの1行はないので
Vista対応したい場合は、既存プロジェクトを開いて
プロジェクトソースにこの1行を入れてコンパイルしてください。
参考────────────────────
DelFusaBlog Vista対応VCL、AppWinFix#more
http://delfusa.blog65.fc2.com/blog-entry-36.html#more
D_DevLog アプリケーションウィンドウに対する対処 (1)
http://ddev.blog46.fc2.com/blog-entry-66.html
D_DevLog アプリケーションウィンドウに対する対処 (4)
http://ddev.blog46.fc2.com/blog-entry-70.html#more
|