delphi.gif (306 バイト) 住所録


Delphiのデータベース機能を使うと住所録などは簡単に作れます。データベースそのものの作成もDelphiでもできますが、ふつうはDatabase Desktop(プロフェッショナル版以上の場合)や市販データベースアプリケーション(dBase,Paradox,Access etc)を使って行います。データベース形式は、Paradox7形式を使いました。

データベースは、表(テーブル)やフォームなどの集まりですが、基本となるのは「テーブル」です。最初にこのテーブルを定義しなければなりませんが、これはDatabase Desktopで行いました。テーブルAddrBook.dbの定義を表に示します。

フィールド名
Number 長整数  
Name 文字列 40
Address 文字列 80
ZipCode 文字列 10
Tel 文字列 16
Fax 文字列 16
E-Mail 文字列 40

 

wpe7.jpg (17200 バイト)

 

まず、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.