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 イベントで設定する必要はありません. |
サンプルプログラム集にも以下のようなコンポーネントやユニットがあります.
プリンタ設定コンポーネントのようなページ構成にしていませんが,特別な意味がある訳ではありません.単なる成り行きです. |
クラス名 |
コンポーネント名・機能等 |
TplJStopWatch |
マイクロ秒ストップウォッチ
タイマーとしても使用可能
Junki さんの提供のユニットを再配布 |
TplVertLabel |
画像表示機能付き縦横両用ラベルコンポーネント |
TplFolderTree
TplFileList |
フォルダツリーとファイルリスト (フォルダリスト) 用コンポ
特殊フォルダ等は操作対象外
簡単な用途向き
Delphi にはシェルコンポーネントが添付されている |
TplContextMenu |
コンテキストメニューコンポーネント |
TplDropSource |
ドロップソースコンポーネント
ドラッグドロップで,エクスプローラへファイルを追加 |
TplFolderWatcher |
フォルダの監視コンポーネント |
TplExplorerFolderView
TplExplorerFolderTree |
シェル名前空間関係のインターフェイスを使用した,フォルダツリーとフォルダリストのコンポーネント
機能追加なしに,そのまま使用すれば何とか利用可能
ただし,Delphi 2010 以降専用で,動作可能 OS は Vista 以降 |
TplSendData |
メッセージによるプロセス間通信用コンポーネント
Halbow 資料館の TSendData コンポを Unicode 対応にしたもの |
TplResizeImage |
移動リサイズ可能な TImage の派生コンポーネント
ラバーバンドとグラブハンドルの表示機能付き |
TplPicturePanel |
移動リサイズ可能な 画像表示機能付き TPanel コンポーネント
ただし,グラブハンドルの表示機能はない
プロパティ,イベントの実装も十分ではない |
TplDateEditPicker |
拙作の元号選択式日付時刻入力コンポを日付ピッカー付きにしたもの
表示サイズやフォント関係のプロパティは未実装 |
TplDateEditPickerEx |
TMaskEdit に日付ピッカー機能を追加したコンポーネント
日付ピッカー表示用のボタンを,TMaskEdit の右側に配置
表示サイズやフォント関係のプロパティは未実装 |
TplDateEditPickerEEx |
TMaskEdit に日付ピッカー機能を追加したコンポーネント
日付ピッカー表示用のボタンを,TMaskEdit 内に配置
表示サイズやフォント関係のプロパティは未実装 |
TplPopupListBox |
TListBox をポップアップ表示するコンポーネント
このようなことも可能であるという例で,実用的な価値はほとんどない |
TplDropStringGrid |
標準の TStringGrid にドロップダウンリストの表示機能と,ダイアログ表示用のボタンの表示機能付き TStringGrid コンポーネント |
TplEdit |
テキストの上下方向の表示位置を設定できる TEdit
左右のインデントも設定可能 |
TplMaskEdit |
テキストの上下方向の表示位置を設定できる TMaskEdit
左右のインデントも設定可能 |
TplBackPictRichEdit |
背景に画像を表示できる TRichEdit |
サンプルプログラム集のプログラムは,極力独立したプロジェクトで動作するようにしていますが,別ファイルにしているものもあります.下表はその一部です.
下表には,タイプライブラリの取り込みで作成したユニットも含まれています.タイプライブラリの取り込みで作成したユニットには,COM オブジェクトを操作するためのインタフェイスが実装されています.ユニット単独では機能しません.元になる DLL, OCX, ActiveX 等が必要です.
|
表2
サンプルプログラム集で使用しているユニット類 |
ユニット名 |
機能 |
plCommandRedirect |
コマンドラインのリダイレクト用ユニット |
plChgCompo |
コンポーネントをインストールしないで使用
派生元のコンポーネントと交換する方法
サンプルプログラム集のサンプルでも多用しているユニット |
plThumImgList |
エクスプーラの縮小表示機能を使用した画像のサムネイル表示専用であるが,クラス名や実装プロパティを変更すれば,他のリスト管理にも使用可能
Halbow 資料館の汎用リストクラスを基に作成したもの |
plSendShortCut |
キー操作をエミュレートすための手続き類のユニット
主に,他のアプリへショートカットキーを送信するために作成 |
plMouseCursorImage |
マウスカーソルだけをキャプチャするためのユーティリティ
Windows 10 以降専用 |
plBalloonHint |
自作のバルーンヒントウィドウ |
MultiLanguage_TLB |
文字フォントやコードページ関係情報の取得と操作用
タイプライブラリの作成と取り込みで作成したコードを修正 |
Accessibility_TLB |
Delphi 2007 よりも前で IAccessible インターフェイスを利用するためのユニット.このユニットを使用したサンプルはない.添付のみ
タイプライブラリの取り込みで作成 |
UIAutomationClient_TLB |
UIAutomation インターフェイスを使用したアプリの情報取得や操作
タイプライブラリの作成と取り込みで作成したコードを修正 |
WbemScripting_TLB |
WMI の機能を使用するためのユニット
タイプライブラリの取り込みで作成 |
Scripting_TLB |
ファイル情報取得,ファイルやフォルダの作成・削除・移動等の操作
ファイルバージョンの取得にも使用
タイプライブラリの取り込みで作成 |
Shell32_TLB |
シェル関係の操作に使用
タイプライブラリの取り込みで作成 |
CREATOROCXLib_TLB |
Excel Create 3.0 (エクセルクリエータ) のコンポーネントラッパー
タイプライブラリの取り込みで作成 |
XlsxCrt_TLB |
Excel Create 3.6 (エクセルクリエータ) のコンポーネントラッパー
Excel Creator 3.6 は Excel 2007 以降のブック形式専用
タイプライブラリの取り込みで作成 |
ADOX_TLB |
JET データベースの新規作成で使用
タイプライブラリの取り込みで作成 |
JRO_TLB |
JET データベースの最適化で使用
タイプライブラリの取り込みで作成 |
plTaskbarList_TLB |
Delphi 2009 以前で,タスクバー関係操作を行うためのインターフェイスの実装.このユニットを使用したサンプルはない.添付のみ
タイプライブラリの取り込みで作成したユニットから必要な部分のみを取り出したコード |
AcroPDFLib_TLB |
PDF 文書表示用のコントロール
タイプライブラリの取り込みで作成
EXE 終了時に発生する例外とメモリリーク対策のコードを追加 |
Acrobat_TLB |
PDF 文書操作用
タイプライブラリの取り込みで作成 |
WinHttp_TLB |
WinHTTP 関係のインターフェイスを使用するためのユニット
タイプライブラリの取り込みで作成 |
IWshRuntimeLibrary_TLB |
WSH (Windows Script Host) の WshShell オブジェクト等を利用するためのユニット
タイプライブラリの取り込みで作成 |
MSScriptControl_TLB |
VBScript (Microsoft Visual Basic Scripting Edition:VBS) を利用するためのユニット
タイプライブラリの取り込みで作成 |
VBScript_RegExp_55_TLB |
VBScript の正規表現を使用するためのユニット
タイプライブラリの取り込みで作成 |
IDesktopWallpaper_TLB |
Windows 8, 8.1 の壁紙スライドショー用
タイプライブラリの取り込みで作成したユニットから必要な部分のみを取り出したコード |
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 以降には,同様の機能を持つコンポーネントとバルーンヒントコンポーネントが実装されている |
ユニット名 |
機能 |
SearchStrUnits |
文字列の操作用
一部は Delphi 2009 以降では正常動作しない |
DataObjectListUnit |
汎用リストクラス
使用するクラス専用のコードに修正した方が,使い勝手はよいだろう
Delphi 2007 以降であれば,ジェネリックが便利 |
CommonMemoryUnit |
共有メモリクラス
Delphi XE2 まで使用可能であることを確認 |
DebugWndUnit |
簡易デバッグウィンドウ
Delphi XE2 までは使用可能であることを確認 |
サンプルプログラムのダウンロード方法とブロックの解除 |
各ページの上の方,最初の方に,下図のような画像があります.これをクリックしてください.サンプル単位ではなく,そのページのサンプルの一括ダウンロードとなっています.
各サンプルの個別ダウンロードの要望がありましたが,対応の予定はありません.
ダウンロードしたら [ブロックの解除] をしてください.
|
記事内のコードをコピーして利用する場合は,各サンプルコードの左上の [Copy Code] という表示のコピーボタンをクリックするとクリップボードにコピーできます.
|
各ページからダウンロードできるファイルの他に,以下のファイルがあります.
HalbowProject.zip 書庫ファイルは,全サンプルプログラムのダウンロード用プログラムでもダウンロードできるようになっています. |
|
全サンプルプログラムのダウンロード用プログラム
AllSamplesDownLoad.zip [920 KB] 2020年04月06日版 (ソースコード付き) |
|
Halbow資料館全プロジェクトソース
HalbowProject.zip [48.7 MB] 2008年09月06日版 (EXE 同梱) |
このサンプルプログラム集は,参考書,また,ML (メーリングリスト) やネット上のサイトの情報,掲示板などの発言を参考にして作成しています.参考書の著者,ネット上で貴重な情報を提供してくださった方々に感謝致します. |
|