Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月24日] [更新 2010年09月06日] エクセル操作フォームEx
エクセル操作フォームEx
前作エクセル操作フォームとの違い
動作確認等 -







変更内容


基本的な仕様を変更したため、バージョンアップではなく、フォームのクラス名の後にEx を付けて新作としました。移行への参考にしてください。
  • TWebBrowser の使用をやめた
    IE のバージョンの違いによる動作仕様の違いがあるため、TWebBrowser 上に表示する方式を中止しました。特に IE7 では、ブラウザとエクスプローラの機能が分離したため、TWebBrowser 上には表示できません。レジストリを設定すれば可能となりますが、他のアプリケーションにも影響を及ぼす可能性があります。また、レジストリの操作には管理者権限が必要となるため、クライアント端末への導入が面倒となります。
    そこで、新しいエクセル操作フォームExでは、Form上に配置した PanelLeft (TPanel) 上に表示するように変更しました。

    Windows Internet Explorer 7 で 2007 Microsoft Office プログラムのドキュメントを表示すると新しいウィンドウが開く

  • Ini ファイルと拙作コンポーネントの使用を中止
    拙作コンポーネントと Ini ファイルの操作コードが含まれていましたが、これらの「余計なお世話」を中止しました。したがって、これらに関係するプロパティ等もなくなりました。
    必要に応じて、他のコンポーネント類をご利用ください。

  • 全てのプロパティとメソッド類にxlfをつけた
    エクセル操作フォームEx のプロパティとメソッドであることを明確にするために、先頭 (プリフィックス) に xlf をつけました。また、前作と同じ機能のプロパティとメソッドで名前が一部変更となっているものがあります。

  • テストプログラムを整備してEXEを添付
    テストプログラムの全てに実行ファイル (EXE) を添付し、導入前に検討または、動作が確認できるようにしました。

  • 添付の DLL が実行環境にも必要 (Ver.9.10 で不要にした)




TExcelApplication と CreateOleObject と DLL


このエクセル操作フォームEx は Delphi の TExcelApplication を使用しています。これには理由があります。Delphi のコンポーネントは複数のインスタンスを作成することができます。例えばボタン、これは TButton ですが、フォームにいくつでも配置できます。TExcelApplication も同じです。一方CreateOleObject で生成したインスタンスはシステム上に1つしか存在できません。[タイプライブラリの取り込み] でコンポーネントラッパーを作成するにはこの意味もあります。

DLL を使用するバージョンにした際、作者のコーディングのミスでこの利点がなくなってしまいました。いつか修正しようと考えていたのですが (たいした修正ではないのですが)、2010年7月9日 に拙作「テンキーロック」の質問が掲示板に質問があり、確認したところ、改めて Vista 以降でのグローバルフックの動作仕様を確認しました。
そこで、サンプルプログラム集のいくつかのコードの確認と見直しをすると同時に、この機会にエクセル操作フォームEx を DLL を使用しないコードに変更することにしました。