住所録
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.