|
Delphi Programming / Object Pascal

[掲載 2004年12月11日] [更新 2015年02月16日] Delphi サンプルプログラム集 |
| Delphi サンプルプログラム集 |
| 動作確認等 |
サンプルによって異なる。Delphi は全て Pro 版
全てのサンプルがダウンロード可能 (一部を除き実行ファイル同梱) |
当サイトのサンプルプログラム集は、主に Delphi の VCL のサンプルを掲載しています。
基本的に、Delphi の「コンポーネントの使い方」のような記事はありません。コンポーネントの作成や開発に関係する記事もほとんどありません。主体はコードとしてのサンプルです。
- 記事のページでは、設計時と動作時の画面があり、概要を理解しやすいようにしている
- ほとんどのサンプルに、EXE ファイルを添付しているので、すぐ動作を確認できる
- ソースファイルも添付しているが、各ページにもコードがあり、ネット上でも確認できる
- ソースコードや動作内容の説明はあまり詳しくない
- ソースコードには覚書のためのコメントがあり、見苦しいかも知れない
実行形式ファイルである EXE が添付してあるということは、該当するサンプルコードは、少なくとも筆者の環境では所定の動作をしたということです。
目的の結果を得るためのサンプルコードを複数掲載している記事もあります。全く実用にならないサンプルプログラムもあります。
どのサンプルコードが目的に適しているか、使い物になるかは、基本的に、利用者が判断することです。実際に試してみて、それが実用に耐えるものでなければ、「実用に耐えるコードではない」とか「このコードでは使い物にならない」という情報が得られたことになります。
自分が期待する動作をするコードだけが「情報」とは言えません。
|
[お願い]
記事の中やメールでの返信で「管理者権限」という用語を使用していることがあります。用語の解釈の違いによるトラブルを避けるためにも、以下の記事で確認いただけると幸いです。
「管理者権限で実行」とは「管理者として実行」の意味です。
Windows Vista 以降では「Windows を管理者権限で使用している」という状況は存在しません。
Windows Vista 以降というのは、2015年12月16日現在の時点では、Windows Vista, 7, 8, 8.1, 10 を意味します。 |
サンプルプログラムに番号が付いていますが、この番号は掲載順ではありません。同じような種類、内容のものをなるべく近い番号で掲載するように努力していますが、番号が不足したりした場合は、離れた番号となっていることもあります。
ダウンロードして保存することを考慮して、ファイル名を変更することは極力しないようにしていますが、記事のタイトルは、状況に応じて変更することもあります。フォルダ内の構成も変更することがあります。古いフォルダを削除してから解凍した方がいいかも知れません。 |
コミュニティの場では、環境を明らかにしないのが慣習となっているようです。
しかし、Windows のバージョンや 開発に使用した Delphi のバージョンによって、実装されている機能には違いがあります。したがって、プログラムは、開発環境または、実行環境によっては、期待通りの動作をしない場合があります。
特に Windows Vista、インターネット・エクスプローラ 7 (IE7) 以降、Delphi 2009 では、いろいろな仕様変更があります。
ワードやエクセル操作関係のサンプルコードは、それらのバージョンも影響してきます。コードの修正や更新に伴い、Delphi 2007 以前のバージョンで再コンパイルしても、Windows 98 系、Windows 2000 では動作しないサンプルも増えてきています。
また、動作対象の Windows に対応した Delphi でコンパイルした場合と、そうでない Delphiで作成した EXE とでは、動作が異なることもあります。更に、どの Windows 上でコンパイルしたかによっても実行結果が違うこともあります。 |
古いバージョンの Delphi では、TWebBrowser 等、OLE 関係のコントロールや機能を使用する際、ユニットの最後に、次のような初期化のコードを追加しないと正常に動作しないことがあります。
バージョンによる違いは、プロパティやメソッド、イベント類の有無だけではありません。 |
// OleInitialize等の使用には、usesにActiveXが必要
initialization
OleInitialize(nil);
finalization
OleUninitialize;
end. // ユニット最後のend
当サイトの実行画面例の画像類は、全て、実際に動作確認環境で実行した結果です。そのことを明確にする意味も含めて画像を掲載しています。
画像を掲載しているのは、どのような動作をするサンプルプログラムなのかを、視覚的に容易に確認できるようにする意味もあります。情報の 80 % は視覚から、と言います。広告類が画像であるのもうなづけます。 |
| 手元の Delphi のバージョンでコンパイル可能かを確認 |
[000_コマンドラインコンパイラの実行] のプログラムを使用すると、手元の Delphi でコンパイル可能かを簡単に確認できます。IDE を起動する必要はありません。
ただし、リソースファイル (拡張子が .res) がないプロジェクトはコンパイルできません。また、必要なファイルにはライブラリのパスが通っている必要がありますが、[000] のサンプルでは、IDE とは独立したライブラリのパス設定が可能となっています。 |
| オブジェクト・インスペクタと OnCreate や OnShow での設定 |
オブジェクト・インスペクタでの設定は、「設計時の設定」、OnCreate や OnShow での設定は、「実行時の設定」ということになります。
サンプルプログラム集の記事は、コードをコピペしても利用可能なように、フォームの OnCreate や OnShow イベントでプロパティを設定しているサンプルがあります。
これらのプロパティの多くはオブジェクト・インスペクタで設定可能です。OnCreate や OnShow イベントで設定した場合と、オブジェクト・インスペクタで設定した場合とでは、動作に違いがあることがあります。OnCreate や OnShow イベントは、オブジェクト・インスペクタでの設定が内部で終了してから発生します。
サンプルのコードを実際にアプリケーションで利用する際は、オブジェクト・インスペクタで設定可能なプロパティは、オブジェクト・インスペクタで設定することをお勧めします。大きなトラブルの原因となることは考えられませんが、過去に、フォームのリサイズによるチラつき、TListView に関係する問い合わせがありました。表示サイズやアライメントが決まっているのに、わざわざ OnCreate イベントで設定する必要はありません。 |
サンプルプログラム集にも以下のようなコンポーネントやユニットがあります。
プリンタ設定コンポーネントのようなページ構成にしていませんが、特別な意味がある訳ではありません。単なる成り行きです。 |
サンプルプログラム集のプログラムは、極力独立したプロジェクトで動作するようにしていますが、別ファイルにしているものもあります。下表はその一部です。
下表には、タイプライブラリの取り込みで作成したユニットも含まれています。タイプライブラリの取り込みで作成したユニットには、COM オブジェクトを操作するためのインタフェイスが実装されています。ユニット単独では機能しません。元になる DLL, OCX, ActiveX 等が必要です。
|
表2
サンプルプログラム集で使用しているユニット類 |
Halbow 資料館の中にも以下のようなコンポーネントやユニットがあります。
Halbow 資料館のコード類は、Delphi 3, 4, 5 の時代に作成されたものです。Halbow 資料館の記事は、元の記事をそのまま掲載する方針としています。そのため、Delphi 2009 以降には対応していないコードがあります。 |
[備考]
Halbow 資料館の記事は、2004年1月4日に閉鎖になった Halbow さんのサイトの記事です。Halobw さんから提供を受け、2004年1月19日から当サイトで掲載しています。
|
| クラス名 |
コンポーネント名・機能等 |
| TSubClass |
サブクラス化コンポーネント |
TCPicture
TCStringList |
EXE に画像やテキストを簡単に埋め込むためのコンポーネント
このコンポで EXE に埋め込ん画像やテキストは、起動時にロードするのでサイズが (非常に) 大きいと EXE の起動時間に影響する |
| TKeyHook |
ローカルなキーフック用コンポーネント |
| TDropFiles |
エクスプローラからのドラッグドロップでファイル名を取得するコンポーネント
サンプルプログラム集にも、コンポーネントやコードがある |
| TOneInstance |
二重起動の禁止のためのコンポーネント |
| TSendData |
メッセージによるプロセス間通信用コンポーネント
Delphi 2009 以降には非対応 |
| TCopyPaste |
クリップボードで任意のデータを受け渡すためのコンポーネント |
| TMMTimer |
マルチメディアタイマー関数を使用した高精度タイマーコンポーネント |
| TTrayIcon |
TrayIcon アプリケーション作成用のコンポーネント
Delphit 2006 以降には、同名のコンポーネントが実装されている |
| THintSetter |
ヒントウィンドウのカスタマイズ用コンポーネント
Delphi 2009 以降には、同様の機能を持つコンポーネントとバルーンヒントコンポーネントが実装されている |
| サンプルプログラムのダウンロード方法とブロックの解除 |
各ページの上の方、最初の方に、下図のような画像があります。これをクリックしてください。サンプル単位ではなく、そのページのサンプルの一括ダウンロードとなっています。
各サンプルの個別ダウンロードの要望がありましたが、対応の予定はありません。
ダウンロードしたら [ブロックの解除] をしてください。
|
記事内のコードをコピーして利用する場合は、各サンプルコードの左上の [Copy Code] という表示のコピーボタンをクリックするとクリップボードにコピーできます。
|
各ページからダウンロードできるファイルの他に、以下のファイルがあります。
HalbowProject.zip 書庫ファイルは、全サンプルプログラムのダウンロード用プログラムでもダウンロードできるようになっています。 |
 |
全サンプルプログラムのダウンロード用プログラム
AllSamplesDownLoad.zip [920 KB] 2020年04月06日版 (ソースコード付き) |
 |
Halbow資料館全プロジェクトソース
HalbowProject.zip [48.7 MB] 2008年09月06日版 (EXE 同梱) |
| このサンプルプログラム集は、参考書、また、ML (メーリングリスト) やネット上のサイトの情報、掲示板などの発言を参考にして作成しています。参考書の著者、ネット上で貴重な情報を提供してくださった方々に感謝致します。 |
|