前回やったことも少しは思い出しました。これからデータベースの操作をするのかな?
高橋先生:まずは現在のプログラムをもう少し整えよう。ラベルが英語のままなので日本語にしよう。項目コンポーネントのラベルにはフィールド名が採用される。データベースのフィールド名には半角の英数字しか使えないことが多いから、全角の名前がつけられない。そこでフィールド名のほかに項目コンポーネントのプロパティを設定しよう。 |
ナッキー:項目コンポーネントってどんなコンポーネントでしたっけ? |
高橋先生:TSimpleDataSetコンポーネントをダブルクリックして表示する項目エディタで登録したコンポーネントだよ。フォームにドラッグしてコンポーネントを配置したよね。 |
ナッキー:コンポーネントがずらーっと並んで楽しかったです。 |
高橋先生:その項目コンポーネントだよ。それぞれに「DisplayLabel」プロパティで名前を入力すると、ラベル名に採用される。たとえばTDBGridコンポーネントのタイトルにも使われるよ。TDBEditコンポーネントについているラベルは変更されない。配置する前にDisplayLabelプロパティが設定されていないと反映しないんだ。だから、TLabelコンポーネントとTDBEditコンポーネントは、削除してもう1度配置してみよう。コンポーネントの幅を調整して見やすくしてね。 |
ナッキー:えー。せっかく配置したのにもったいないな。でもドラッグするだけだからラベルを全部書き直すよりは楽なのね。 |
|
まずはInterBase サービスマネージャーを起動します。Windows OSのスタートメニューで「Borland InterBase 7.5 Develper [instance = gds_db]」の「InterBase サービスマネージャー [instance = gds_db]」をクリックします。「ステータス(T)」欄に、「InterBaseをWindowsサービスとして起動する」にチェックが付いていないことを確認します。「InterBaseサーバーは停止中」となっていれば、[起動(S)]ボタンをクリックして起動します。「InterBaseサーバーは稼動中」と変化したのを確認して[閉じる](×)ボタンで終了します。

図03 InterBase サービスマネージャー
次にプロジェクトを開きます。Turbo Delphiを起動して、画面中央の「ホームページ」で「ProfileDB.bdsproj」を選択。もし一覧に表示されていなければ、ツールバーの[プロジェクトを開く(Ctrl+F11)]ボタンをクリックします。「プロジェクトを開く」ダイアログボックスから「ProfileDB.bdsproj」を探します。もしも、プロジェクトを開くとき「dbExpressエラー:[0x0015]:接続失敗」といったエラーメッセージが表示されたら、もう1度InterBase サービスマネージャーを起動してInterBaseサーバーが起動しているか確認してみて欲しいんですって。

図04 エラーメッセージ
画面上部の「FormProfileDB」タブを選択して、画面をフォームデザイナに切り替えます。フォーム上に前回作ったデータが表示されていなければ、「SQLConnection1」コンポーネントを探して「データベース」カテゴリで「Connected」プロパティを「True」にします。さらに「SimpleDataSet1」を選択して、「その他」カテゴリの「Active」プロパティを「True」にしておきます。
データベースに接続できたら、項目エディタを表示します。SimpleDataSet1コンポーネントを探してダブルクリック、もしくは右ボタンクリックして「項目の設定(T)...」を選択します。項目エディタに登録した項目コンポーネントを選択して、DisplayLabelプロパティを変更します。「ID」はそのままにして、以下の表を参考に変更します。
FULLNAME
カテゴリ名 |
プロパティ名 |
設定値 |
ローカライズ対象 |
DisplayLabel |
名前 |
|
|
|
ADDRESS
カテゴリ名 |
プロパティ名 |
設定値 |
ローカライズ対象 |
DisplayLabel |
住所 |
|
|
|
BIRTHDAY
カテゴリ名 |
プロパティ名 |
設定値 |
ローカライズ対象 |
DisplayLabel |
誕生日 |
|
|
|
MALE
カテゴリ名 |
プロパティ名 |
設定値 |
ローカライズ対象 |
DisplayLabel |
性別 |
|
|
|
PET
カテゴリ名 |
プロパティ名 |
設定値 |
ローカライズ対象 |
DisplayLabel |
ペットの有無 |
|
|
|
DBGrid1コンポーネントの上部にあるタイトルが変更できたことを確認します。うまく変更できたら、画面上部のTLabelとTDBEditのコンポーネントをすべて削除します。TLabelコンポーネントとTDBEditコンポーネントをすべて選択して、キーボードの[Delete]キーを押します。

図05 コンポーネントの削除
次に、配置を整えるためにTPanelコンポーネントを配置します。データベース接続のSQLConnection1、SimpleDataSet1、DataSource1と、DBGrid1はそのままでいいので、画面右下のツールパレットから「Standard」カテゴリの「TPanel」をDBGrid1上部に1つ配置します。

図06 TPanelコンポーネントの配置
ほかのコンポーネントを配置するためにプロパティも設定します。Panel1を選択して、画面左下のオブジェクトインスペクタ、プロパティページで「ローカライズ対象」カテゴリの「Caption」を削除します。「レイアウト」カテゴリの「Align」プロパティを「alTop」にします。
Panel1
カテゴリ名 |
プロパティ名 |
設定値 |
ローカライズ対象 |
Caption |
内容を削除 |
レイアウト |
Align |
alTop |
|
|
|
さらに高さを広げてDBGrid1の近くまで伸ばします。次にDBGrid1のAlignプロパティも設定します。DBGrid1を選択して、「レイアウト」カテゴリの「Align」プロパティを「alClient」にしておきます。
DBGrid1
カテゴリ名 |
プロパティ名 |
設定値 |
レイアウト |
Align |
alClient |
|
|
|

図07 ベースのレイアウト
設定ができたら、項目エディタからすべての項目をドラッグしてパネルの左上に配置します。今度はラベルが日本語で表示されます。

図08 項目コンポーネントの配置
次に配置したコンポーネントの幅を調整します。住所などはドラッグで調整しにくいのでDBEdit3コンポーネントを選択して、「Width」プロパティに「150」程度を入力してから幅を整えると操作しやすいです。
DBGrid1コンポーネントの項目の幅も調整します。こちらも住所が調整しにくいのでプロパティを使います。プロパティを使うためには「カラムエディタ」を使用します。DBGrid1コンポーネントをダブルクリックするか、右ボタンクリックして「カラムエディタ(L)...」を選択します。

図09 カラムエディタ
ツールバーの左から3番目[すべての項目の追加]ボタンをクリックして項目を追加します。「ADDRESS」を選択してWidthプロパティを「100」程度にします。

図10 幅の調整
ドラッグですべての項目がDBGrid1コンポーネントに表示できるように幅を調整します。設定できたらカラムエディタは閉じておきます。

図11 配置完了
高橋先生:性別やペットの有無は、「True」や「False」では、どちらが何を示しているかがわかりにくいね。わかりやすくするために、項目コンポーネントの「DisplayValues」プロパティに、「Trueのときの値;Falseのときの値」をセットしよう。「MALE」の場合は「男性;女性」、「PET」の場合は「有;無」とする。 |
ナッキー:そうすると、表の中に「男性」とか「無」と表示されるんですね。 |
高橋先生:ただし、この設定はTDBGridコンポーネントしか反映しないんだ。TDBCheckBoxコンポーネントは変化がないよ。 |
|
Boolean型のデータを、値に置き換えて表示できるようにします。項目エディタで「MALE」を選択します。プロパティページの「ローカライズ対象」カテゴリで「DisplayValues」プロパティに、「男性;女性」と入力します。「;」(セミコロン)は半角で入力します。同様にして項目エディタで「PET」を選択します。「DisplayValues」プロパティで「有;無」と入力します。DBGrid1を確認します。正しく設定できたら、性別欄は「男性」か「女性」ペット欄は「有」か「無」となります。

図12 DisplayValuesの設定
高橋先生:もうちょっと、設定をしよう。日付の入力は西暦、年、月の順で間に「/」を入れるんだ。記述の方法がそろっていないとうまくいかないから項目コンポーネントの「EditMask」プロパティを設定する。ここで「!9999/99/00;1;_」と入力すると入力しやすくなる。ダイアログボックスを使って設定してもいいよ。 |
ナッキー:どんなふうに入力しやすいか、よくわからないんですけど。 |
高橋先生:設定用のダイアログボックスの中に「テスト」欄があるので試してみるといいよ。 |
|
じゃあ、設定してみます。項目エディタで「BIRTHDAY」を選択します。プロパティページの「ローカライズ対象」カテゴリで「EditMask」を探します。クリックすると「…」ダイアログボタンが表示されますので、それをクリックします。「入力マスクの設定」ダイアログボックスが表示されます。

図13 入力マスクの設定
右側の「例(S):」から「日付」を選択します。「入力マスク(I):」に「!99/99/00;1;_」と表示されますので、「99」を付け足して「!9999/99/00;1;_」とします。これで西暦を2桁ではなく、4桁で表示することができるんですって。「テスト(T):」欄で試してみることができるんですって。半角数字で入力してみます。「/」は入力しなくてもいいのね。確認できたら[OK]ボタンをクリックします。
このあとコードを記述するので、コンポーネントのNameプロパティを設定します。ついでにフォームのCaptionプロパティも設定します。
※ 手順によってはフォーム名が異なる場合があります。
Form1(フォーム)
カテゴリ名 |
プロパティ名 |
設定値 |
その他 |
Name |
frmProfileDB |
ローカライズ対象 |
Caption |
アンケート |
|
|
|
DBEdit1(ID)
カテゴリ名 |
プロパティ名 |
設定値 |
その他 |
Name |
dbedtID |
|
|
|
DBEdit2(FULLNAME)
カテゴリ名 |
プロパティ名 |
設定値 |
その他 |
Name |
dbedtFullName |
|
|
|
DBEdit3(ADDRESS)
カテゴリ名 |
プロパティ名 |
設定値 |
その他 |
Name |
dbedtAddress |
|
|
|
DBEdit4(BIRTHDAY)
カテゴリ名 |
プロパティ名 |
設定値 |
その他 |
Name |
dbedtBirthday |
|
|
|
DBCheckBox1(MALE)
カテゴリ名 |
プロパティ名 |
設定値 |
その他 |
Name |
dbcbxMale |
|
|
|
DBCheckBox2(PET)
カテゴリ名 |
プロパティ名 |
設定値 |
その他 |
Name |
dbcbxPet |
|
|
|
DBGrid1
カテゴリ名 |
プロパティ名 |
設定値 |
その他 |
Name |
dbgrdProfile |
|
|
|
SimpleDataSet1
カテゴリ名 |
プロパティ名 |
設定値 |
その他 |
Name |
sdsProfile |
|
|
|
できたら保存しておきます。ツールバーの[すべて保存]ボタンをクリックします。sdsProfileコンポーネントの項目エディタも使わないので閉じてしまいます。