住所録
Delphiのデータベース機能を使うと住所録などは簡単に作れます。データベースそのものの作成もDelphiでもできますが、ふつうはDatabase Desktop(プロフェッショナル版以上の場合)や市販データベースアプリケーション(dBase,Paradox,Access etc)を使って行います。データベース形式は、Paradox7形式を使いました。
データベースは、表(テーブル)やフォームなどの集まりですが、基本となるのは「テーブル」です。最初にこのテーブルを定義しなければなりませんが、これはDatabase Desktopで行いました。テーブルAddrBook.dbの定義を表に示します。
フィールド名 | 型 | 幅 |
Number | 長整数 | |
Name | 文字列 | 40 |
Address | 文字列 | 80 |
ZipCode | 文字列 | 10 |
Tel | 文字列 | 16 |
Fax | 文字列 | 16 |
文字列 | 40 |
まず、TableとDatasourceコンポーネントをフォームに貼り付けます。データの表示はDBGridによって行います。これらのコンポーネントをオブジェクトインスペクタでお互いに関連付けます。(下記)
Datasource1.Dataset = Table1
DBGrid1.Datasource = Datasource1
MainMenuコンポーネントをフォームに貼り付け、プロパティエディタでメニューアイテムを追加します。
テーブル(T)
選択(O)
閉じる(C)
編集(E)
追加(A)
削除(D)
OpenDialogコンポーネントをフォームに貼り付け、Filterプロパティと必要ならInitialDirとFileNameを設定しておきます。
Filter = 'Paradox(*.db)|*.db|Other(*.*)|*.*
InitialDir = D:\Database
FileName = AddrBook.db
ソース(青色部分が記述した部分です)
unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, Db, DBTables, Menus; type TForm1 = class(TForm) DataSource1: TDataSource; Table1: TTable; DBGrid1: TDBGrid; OpenDialog1: TOpenDialog; MainMenu1: TMainMenu; Database1: TMenuItem; OpenTable: TMenuItem; N1: TMenuItem; Exit: TMenuItem; Edit1: TMenuItem; Append: TMenuItem; Delete: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure OpenTableClick(Sender: TObject); procedure ExitClick(Sender: TObject); procedure AppendClick(Sender: TObject); procedure DeleteClick(Sender: TObject); procedure DBGrid1ColExit(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} { フォームが作成されたとき ======================== } procedure TForm1.FormCreate(Sender: TObject); begin // テーブルを選択する if OpenDialog1.Execute = True then begin // テーブルを開く Table1.TableName := OpenDialog1.FileName; Table1.Open; end; // フォームの大きさにあわせる DBGrid1.Align := alClient; end; { フォームが閉じるとき ==================== } procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Table1.Close; end; { テーブルを選択する } procedure TForm1.OpenTableClick(Sender: TObject); begin // テーブルを選択する if OpenDialog1.Execute = True then begin // テーブルを開く Table1.TableName := OpenDialog1.FileName; Table1.Open; end; end; { フォームを閉じる } procedure TForm1.ExitClick(Sender: TObject); begin Close; end; { レコードを追加する } procedure TForm1.AppendClick(Sender: TObject); begin Table1.Append; Append.Checked := True; Delete.Checked := False; end; { レコードを削除する } procedure TForm1.DeleteClick(Sender: TObject); begin Table1.Delete; Append.Checked := False; Delete.Checked := True; end; { 別のセルが選択されたとき } procedure TForm1.DBGrid1ColExit(Sender: TObject); begin // 変更を反映 if Table1.State = dsInsert then Table1.UpdateRecord; end; end.