Delphi 2007 for win32 と Windows Vista




[リリースノートにある重要と思われる事項]


Windows Vistaに関する注意事項

  • Windows Vista の場合は、インストールを実行する際に、管理者権限を持つユーザーとしてログインする必要があります。これは、Program Files ディレクトリに変更を加えるために、高いセキュリティレベルが必要になるからです。
  • Windows Vista では、製品登録クライアントが動作しない場合があります。この問題を回避するには、Windows Live OneCare Firewall が表示されたときに [このプログラムを許可] を選択します。次に、製品登録クライアントを終了して、それを再起動します。[このプログラムをブロック] を選択しないでください。これを選択すると、それ以降の登録ができなくなります。
  • Windows Vista は古い WinHelp ヘルプビューア(WinHelp.exe)をサポートしません。.HLP ファイルを使用する場合は、
    Microsoft Web サイト(http://www.microsoft.com/downloads/details.aspx?familyid=6ebcfad9-d3f5-4365-8070-334cd175d4bb)を参照してください。
  • TAnimation コンポーネントを Vista で使用するには、[Win32] タブの下の TShellResource コンポーネントをプロジェクトに追加する必要があります。TShellResource を追加すると、次のリソースが追加されます。
    • FindFolder.res
    • FindFile.res
    • FindComputer.res
    • CopyFiles.res
    • CopyFile.res
    • RecycleFile.res
    • EmptyRecycle.res
    • DeleteFile.res
  • Windows Vista で BDE を使用している場合は、BDE が C:\<root> ディレクトリにファイルを書き込まないように、BDE を再設定する必要があります。それには、管理者としてログインし、Program Files\Common Files\Borland Shared\BDE にある bdeadmin.exe を実行します。Native の下の PARADOX をクリックし、NET DIR をルートディレクトリ以外の場所を参照するように変更します。推奨するディレクトリは、C:\Users\Public\Documents\RAD STUDIO です。
  • Windows Vista の拡張子を持つマニフェストを、Windows XP Service Pack 2(SP2)の .exe ファイルまたは .dll ファイルに追加した場合は、コンピュータが再起動する場合があります。この問題およびホットフィックスの詳細については、http://support.microsoft.com/kb/921337 を参照してください。
  • コモンダイアログ コンポーネントを含む既存の VCL アプリケーションを再構築して、Vista システムで実行すると、従来のダイアログ(オープン、保存、メッセージ )ではなく、Vista 形式のダイアログ(ファイルおよびタスク)が使用されます。従来のダイアログを使用したい場合は、プログラムの先頭にあるグローバル変数 UseLatestCommonDialogs を false に設定します。これにより、従来の動作が強制されます。
  • VCL for the Web(IntraWeb)アプリケーションを実行およびデバッグするには、 Windows 2003 または Windows XP を使用する必要があります。Windows Vista を使用している場合は、VCL for the Web アプリケーションをデバッグする際に、ユーザーアカウント制御(UAC)をオフにする必要があります。IntraWeb(VCL for the Web コンポーネントのヘルプを含む)の詳細については、http://www.atozed.com/intraweb/docs/ を参照してください。
  • UAC が有効な Vista 上で、実行可能ファイル名に "setup"、"update"、または "install" が含まれる場合は、IDE が System Administrator アカウントで起動されていない限り、そのプログラムのデバッグはできません。IDE の外で、これらの文字列を含む実行可能ファイルを実行しようとすると、 "ユーザーアカウント制御" のダイアログが表示され、System Administrator アカウント用のパスワードの入力を求められます。IDE 内でデバッグなしで実行すると、このプログラムがより高い特権を必要とすることを示すエラーが表示されます。IDE 内でデバッグありで実行すると、プロセス作成エラーが発生します。詳細については、http://blogs.msdn.com/uac/archive/2006/01/13/512776.aspx を参照してください。

国際化に関する注意事項

  • プロジェクト パスに英語以外の文字を含むソース ファイル名が含まれていると、ブレーク ポイントは認識されず、"無効" とマークされます。
  • IME (input method editor)を使用している場合に、 .NET Framework のバグが原因で本製品がハングアップし、しばらくした(約 5 分)後にエラー メッセージが表示される場合があります。このエラーは、数回発生すると、発生しなくなるようです。すべての言語ウィンドウが影響を受ける可能性があります。

    このエラーを防ぐには、次のレジストリ エントリを作成または更新してください。

    HKEY_CURRENT_USER\Console\LoadConIme

    このエントリの種類は REG_DWORD で、値は 0 に設定する必要があります。


VCL/RTLに関する注意事項

  • Windows Vista 用に次の 3 つの VCL ダイアログが追加されました。
    • TCustomFileOpenDialog
    • TCustomFileSaveDialog
    • TTaskDialog
    これらのコンポーネントはすべて、Windows Vista ダイアログのラッパーです。また、グローバル変数 UseLatestCommonDialogs が true に設定されている場合、Vista システムでは自動的に Vista のダイアログが使用されます。
  • TApplication クラスに、MainFormOnTaskBar という新しいプロパティが追加されました。このプロパティのデフォルト値は、新規アプリケーションの場合は True に、既存アプリケーションの場合は False に設定されます。このプロパティは、VCL による Windows タスクバー ボタンの扱い方を制御します。このプロパティを古いアプリケーションに適用することもできます。ただし、MainForm の Z オーダーに影響を与えるので、従来の動作に影響がないことを確認する必要があります。MainFormOnTaskBar は、アプリケーションの起動時に設定され、アプリケーションの実行中は存続するように設計されています。アプリケーションの実行中にこのプロパティを変更すると、予期しない動作が生じる可能性があります。この変更を行った主な理由は、Windows Vista で利用可能ないくつかの新機能をサポートするためです。

 基本的に"Windows Vista対応アプリを作る"で紹介したTipsは特に意識する必要はありません。



[古いDelphiで作ったプロジェクトの再利用]


 古いDelphi 由来のプロジェクトをDelphi2007で読み込む場合、古いDelphiで生成された*.resが存在すると設計時にTPageControl等のレンダリングが正常に行われない事があります。この現象に遭遇した場合、*.resを削除して再生成すると正常にレンダリングが行われるようになります。

 BDEに依存するデータベースアプリケーションを移行する場合には注意が必要です。dBase/Paradox/ODBC等のネイティブ接続以外でデータベースアプリケーションを作る場合には、BDE接続を代替する手段を探す事から始める必要があります。BDEコンポーネントは下位互換性のためだけに残されており、SQL-Linkドライバを含め、メンテが行われていません。例えば
 のように、代替するコンポーネントが用意されています。なお、CodeGearから"BDEマージモジュール"が提供されています("msiexec /i BDE_PRO.Msm"でインストールできます)。

 レポートツールは、懐かしのQuickReportが用意されています(Rave Reportsもあります)。古いDelphiからの移行にはもってこいでしょう。但し、このQuickReportは英語版で、ラベル等でワードラップを有効にしても日本語を正しく折り返してくれません。速やかに代替レポートツールを探すべきです。

 また、以下のようなDelphi/Kylix両対応コードがある場合、IDEでフォームを開く事ができなくなる場合があります。

{$IF Declared(Forms)}
{$R *.DFM}
{$IFEND}
{$IF Declared(QForms)}
{$R *.xfm}
{$IFEND}

 この場合、Kylix対応コードを除去する必要があります。



[IDE 起動高速化]

 Delphi2007 をDelphi7のVista対応版として使おうと思うとIDEの起動時間に不満を抱く事があります。それでもBDS2006に比べればIDEの起動時間は大幅に短縮されているのですが...。Delphiの新機能を使わないのは非常に勿体ない事なのですが、幾つかの機能をOFFにする事によって起動時間を短縮する事が可能です。

Togetherを使用しなければ若干高速化できる。
 [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages\Delphi]から「$(BDS)\Bin\TGIDE100.bpl」を削除。
 元に戻したければ以下のレジストリファイルをExplorerからダブルクリック。

together.reg
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages\Delphi]
"$(BDS)\\Bin\\TGIDE100.bpl"="Borland Together IDE Integration"

起動時にCodeGearのホームページを表示しなければ若干高速化できる。
 [HKEY_CURRENT_USER\ Software\Borland\BDS\5.0\Known IDE Packages]にある"$(BDS)\Bin\startpageide100.bpl"を削除。
 元に戻したければ以下のレジストリファイルを Explorerからダブルクリック。

startpage.reg
Windows Registry Editor Version 5.00
 [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages]
"$(BDS)\\Bin\\startpageide100.bpl"="Borland Start Page IDE Package"

DataExplorerを使用しなければ若干高速化できる。
 [HKEY_CURRENT_USER\Software\ Borland\BDS\5.0\Known IDE Packages]にある"$(BDS)\Bin\DataExplorer100.bpl"を削除。
 元に戻したければ以下のレジストリファイルを Explorerからダブルクリック。

dataexplorer.reg
Windows Registry Editor Version 5.00
 [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages]
"$(BDS)\\Bin\\DataExplorer100.bpl"="(Untitled)"

リファクタリングを使用しなければ若干高速化できる。
 [HKEY_CURRENT_USER\Software\ Borland\BDS\5.0\Known IDE Packages]にある"$(BDS)\bin\refactoride100.bpl"を削除。
 元に戻したければ以下のレジストリファイルを Explorerからダブルクリック。

refactor.reg
Windows Registry Editor Version 5.00
 [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages]
"$(BDS)\\bin\\refactoride100.bpl"="Borland Core Refactoring Package"

起動時のアップデートチェックを使用しなければ若干高速化できる。
 [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\AutoRun]または [HKEY_LOCAL_MACHINE\Software\Borland\BDS\5.0\AutoRun]にある「UpdateCheck」をキーごと削除。但し、パス及びパスに含まれるGUIDは個別に違う可能性があるので、事前にバックアップを取るようにして下さい。
 あるいはインストール時に「起動時にアップデートの確認を行う」のチェックを外しておく。アップデートのチェックは"[スタート]-[プログラム]-[CodeGear RAD Studio]-[アップデートの確認]"から手動でも行う事ができる。
 元に戻したければ以下のレジストリファイルを Explorerからダブルクリック。

setup.reg
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Borland\BDS\5.0\AutoRun\UpdateCheck]
"ProgramToRun"="C:\\ProgramData\\{AB3EC276-D261-4943-A921-1CC1C6799AED}\\Setup.exe"
"CommandLine"="/update"
[HKEY_LOCAL_MACHINE\Software\Borland\BDS\5.0\AutoRun\UpdateCheck]
"ProgramToRun"="C:\\ProgramData\\{2EB4C530-C94F-4893-ABDC-C1E05A89956E}\\Setup.exe"
"CommandLine"="/update"

 事前に[HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages]のバックアップを取る事をオススメします。

 [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages]以下にはこの他にもIDE用パッケージが登録されています。ご自分のご利用環境に合わせて取捨選択をしてみて下さい。ただし、インストール時に導入した".net framework 2.0"はリファクタリングやMSBuildで使われており、IDE用.netパッケージを2つとも削除するとプロジェクトを開いた時点でエラーになってしまいますのでご注意下さい。

起動時のスプラッシュを表示しなければ若干高速化できる。
 起動のパラメータに"/ns"を渡して起動します。

起動時にプロジェクトを読み込まなければ若干高速化できる。
 起動のパラメータに"/np"を渡して起動します。起動時にプロジェクトを読み込まず、プロジェクトなしで起動しておいて、IDEからプロジェクトを開いた方が早い事があります。

※設定は自己責任でお願いします。
※レジストリの操作に詳しくない方は上記設定を行わないで下さい。
※UpdateやHotFixを行う場合、事前に設定を元の状態に戻して下さい。
※この件についてCodeGear/Borlandへ問い合わせをしないで下さい。



[IDE をDelphi7以前のIDEライクに]
 

 ガリレオIDE(Delphi8以降のIDE)には素晴らしい機能が追加されています。ただ、私のように以前からDelphiを使っていた人間はガリレオに少なからず違和感を覚えると思います。

 Delphi6/7辺りのユーザがいきなりDelphi2007を購入すると大幅に変更になったIDEに面食らう事もあるでしょう。そんな方々にオススメの設定です。

  1. [表示]-[デスクトップの配置]で「Classic Undocked」を選択。
    これでコードエディタとプロジェクトマネージャ等が分離されます。
     
  2. [ツール]-[オプション]の[環境オプション]-[ツールデザイナ]で「埋め込みデザイナ」のチェックを外す。
    これでフォームとコードエディタが分離し、旧IDE同等になります。
     
  3. 要らないウィンドウを消したり、自分の好きなようにウィンドウをドックさせたりする。
     
  4. [表示]-[デスクトップの配置]で「保存」を選び、適当な名前を付ける。
    ("Customize"とか)
     
  5. [表示]-[デスクトップの配置]の「デバッグ時に使う」で4.で選択したプロファイルを選択する。
    必要であれば一旦実行してデバッグ状態にし、必要なウィンドウを表示させてから、新しいプロファイル名で保存しておきます。
     
  6. 「オブジェクトインスペクタ」を右クリックし、[表示形式]を「名前順」に変更。
     
  7. [ツール]-[オプション]の[エディタ設定]-[支援機能]でソースファイル「Pascal」を選択し、上2つ(あるいは3つ)以外のチェックを外す。
     
  8. [IDE起動高速化]のTipsで" 起動時にCodeGearのホームページを表示しない"にすると、起動時に"EditWindow_0"が出て見苦しいので、Delphi7以前のように新規フォーム作成状態にする。
    [ファイル]-[新規作成]-[カスタマイズ]で、「メニュー項目」にある"VCLフォームアプリケーション Delphi for Win32"を「起動時デフォルトアプリケーション」へドラッグ&ドロップ。
     
  9. [ツール]-[オプション]の[エディタ設定]-[色]で旧IDEの色と同じにします。
    これはお好みで。
     
  10. [ツール]-[オプション]の[エディタ設定]-[表示]で「行番号を表示」のチェックを外します。 
    起動時間はそれ程変わりませんが、ブレークポイントは付けやすくなります。
     
  11. コードエディタの折りたたみを無効にする。
     
    disable_elisions.reg
    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Editor\Options]
    "Enable Elisions"="False"
     
    起動時間はそれ程変わりませんが、編集時のストレスは少なくなります。元に戻すには下のレジストリファイルを実行。
     
    enable_elisions.reg
    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Editor\Options]
    "Enable Elisions"="True"
      
※11.の設定は自己責任でお願いします。
※レジストリの操作に詳しくない方は11.の設定を行わないで下さい。
※UpdateやHotFixを行う場合、事前に11.の設定を元に戻して下さい。
※11.の設定の件についてCodeGear/Borlandへ問い合わせをしないで下さい。

2007/06/16 追記:
 以上の設定でUpdate1を適用すると、プロジェクトを開いた状態で新規プロジェクトを作成するか別のプロジェクトを開こうとすると"リストのインデックスが範囲を超えています (0)"エラーが出る事があります(QC#47609)。この現象に遭遇した場合には
 以上、いずれかの回避策を採って下さい。要は
 この条件下で件のエラーが出ます。

2007/12/25 追記:
 "2007 December Update"を適用すると、プロジェクトを開いた状態でホームページタブを閉じ、新規プロジェクトを作成したり、さらに新規プロジェクトを作成するとフォームが表示されなくなったり'coreide100.bpl'のエラーになったりします(QC#56217)。この現象に遭遇した場合にはホームページタブを閉じないようにして下さい。


[Helpが読みにくい]

 できるだけ読みやすいように"Microsoft Document Explorer"をカスタマイズするしかありません。以下にWinHelp/HtmlHelpに慣れたユーザがそれなりに使えるであろう設定を記します。 TYPE1の設定は左ペインのタブが下になります。TYPE2ではタブが上にあり、WinHelpやHtmlHelpに近いレイアウトになります。

 TYPE1:
  1. [ウィンドウ(W)]-[ウィンドウレイアウトのリセット(R)]を行う。
  2. ツールバーの[検索(S)]ボタンを押下。
  3. [検索]タブを右クリック、「ドッキング可能(K)」を選択。
  4. [検索]ペインを左ペインの"目次/キーワード/ヘルプのお気に入り"のタブの所へドラッグ&ドロップ。
 TYPE2:
  1. [ウィンドウ(W)]-[ウィンドウレイアウトのリセット(R)]を行う。
  2. 左ペインのタブを覚えておく。
  3. ツールバーの[検索(S)]ボタンを押下。
  4. 左ペイン下部の"目次/キーワード/ヘルプのお気に入り"タブをすべてそれぞれ右クリックして「タブ付きドキュメント(T)」に変更。
  5. 「2.」のタブを右クリックして「垂直タブグループの新規作成(V)」を選択。
 共通設定:
  1. 右ペインと左ペインの比率を調整。
  2. 左ペインの"目次/キーワード/ヘルプのお気に入り/検索"のタブを好きなように入れ替える。
  3. 左ペインの"検索"タブで適当に検索。
  4. 検索結果の右側にある「ローカルのヘルプ」タブを選択(見落としがちです)。
  5. 左ペインの"キーワード"タブで適当に検索。
  6. 下ペインに「キーワード検索の結果」が表示されるので、サイズ変更したり、画鋲アイコンで自動的に隠す設定にする。
  7. [ツール(T)]-[オプション(O)...]の「オンライン」で不要な情報がヒットしないように設定する。
  8. [表示(V)]-[ツールバー(T)]や[ツール(T)]-[ユーザー設定(C)...]でツールバーをカスタマイズする。
 "キーワード"タブと"検索"タブにはフィルタ機能がある事を忘れないで下さい。統合開発環境でない限り、フィルタを適切に指定して余計な情報がヒットしないように設定すべきです。但し、ここまでやってもヘルプコンテンツ自体のアクセシビリティの面で辛いものがあります。  等々。CodeGearをちょっとだけ擁護してみると、  ...という事です。Windowsに於けるヘルプシステムの迷走っぷりは"Windows Vista対応アプリを作る"にも記述がありますのでご一読下さい。


[Delphi2007 を Vista で動作させる事のメリット]

[フォームのデフォルトフォントとリポジトリ]
 

 DelphiはIDEがガリレオになってからというもの、新規作成フォームのフォントが初期値で"Tahoma"になっており、フォント設定を忘れたりすると実行ファイルを古いOSへ持っていった時などに文字化けが起きたりします。

 Kylixも同様だったのですが、Linuxでは標準で利用できる日本語フォントが各ディストリビューション毎に異なるため"やむなし"と諦めもつきました。

 前置きが長くなりましたが、Delphi2007には新規作成フォームのデフォルトフォントを指定する方法がありません。これでは煩わしくて仕方がないと思うので、リポジトリを使うことをオススメします。

[リポジトリとメニューの設定]
  1. [ファイル | 新規作成 | VCLフォームアプリケーション]でプロジェクトを新規作成。
  2. フォームのフォントを変更したり、クラス宣言部のコメントを日本語にしたり、フォームポジションを設定したり...お好きにカスタマイズして下さい。
  3. [ファイル | プロジェクトに名前を付けて保存]場所はデフォルトで構いません。
  4. フォームを右クリックし[リポジトリに追加]。
  5. タイトルに"フォーム(日本語)"と入れてOKボタンを押下。
  6. 保存ダイアログが出るのでそのまま保存。
  7. [ファイル | 新規作成 | カスタマイズ]
  8. [ギャラリ項目]で"Delphiファイル"を選択。
  9. その中にある"フォーム(日本語)"を右ペインの[メニュー項目]へD&D。
  10. 右ペインの[メニュー項目]にある"フォーム(元々あったもの)"を適当な場所へD&Dして削除。
  11. OKボタンを押下。
[使い方]
  1. [ファイル | 新規作成 | VCLフォームアプリケーション]でプロジェクトを新規作成。
  2. コードエディタを閉じ、デフォルトのユニットを破棄。 (デフォルトのユニットは設定が元のままなので)
  3. [ファイル | 新規作成 | フォーム(日本語)]でフォーム作成。
[リポジトリから削除]
  1. [ツール | リポジトリ]を開きます。
  2. 左ペインの[カテゴリ] から"Delphi ファイル"を選択し、右ペインで目的のオブジェクトを選択してから「削除」ボタンを押します。

type
  TForm1 = class(TForm)
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

なんだかしっくりきますね(^-^)v
 BACK