|
■画面作成 |
|
|
|
●学習内容 |
|
|
|
|
ここでは、 |
|
|
|
|
・プログラムの動作・機能
・コンポーネントの設定
・コードの記述 |
|
|
|
|
について記述してあります。Imageにリンクが張ってあるのでコンポーネントの使い方と動作が確認できると思います。また、画面ごとに設定とコードの記述について説明がしてあります。 |
|
|
|
|
|
|
|
|
|
●Form1画面1(映画情報一覧) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
説明
|
コード記述
|
設定
|
 |
・検索用BitBtn
検索フォームを表示し、SQL文を生成 |
〇
|
〇
|
 |
・一覧表示用BitBtn
全レコードを表示 |
〇
|
〇
|
 |
映画情報一覧表示用DBGrid |
〇
|
〇
|
|
|
|
|
|
|
|
|
|
|
|
■検索用BitBtn |
|
|
|
|
プロパティ名 |
設定値 |
Caption |
検索 |
Glyph |
Zoomin.bmp |
Name |
BitBtn1 |
|
|
|
|
|
|
|
|
|
|
|
■一覧用BitBtnコンポーネント |
|
|
|
|
プロパティ名 |
設定値 |
Caption |
一覧 |
Glyph |
Table.bmp |
Name |
BitBtn2 |
|
|
|
|
|
|
|
|
|
|
|
■一覧表示用DBGrid |
|
|
|
|
プロパティ名 |
設定値 |
Columns
|
0-cinema_name
1-w_day
2-genre_name |
DataSource |
CinemaDM.CinemaDS |
|
|
|
|
|
|
|
|
|
|
|
●コードの記述 |
|
|
|
|
コンポーネント |
イベント |
発生タイミング |
BitBtn(検索用) |
OnClick |
ボタンを押したとき |
BitBtn(一覧用) |
OnClick |
ボタンを押したとき |
DBGrid |
OnCellClick |
セルをクリックしたとき |
|
|
|
|
|
|
|
|
|
|
|
■検索用BitBtn.OnClickイベント |
|
|
|
|
procedure TForm1.BitBtn1Click(Sender:
TObject);
begin
Form3 := TForm3.Create(Self);
Try
Form3.ShowModal;
if Form3.ModalResult = mrOK then
CinemaDM.SetSearchSQL(Form3.WhereString);
//CinemaQuery.SQLのSQL文に検索条件を追加する
finally
Form3.Release;
end;
end; |
|
|
|
|
|
|
|
|
|
|
|
■一覧表示用BitBtn.OnClickイベント |
|
|
|
|
procedure TForm1.BitBtn2Click(Sender:
TObject);
begin
CinemaDM.ReSetSQLCinemaQuery;
//DefaultSQLを使ってもとのSQLにもどす
end; |
|
|
|
|
|
|
|
|
|
|
|
■DBGrid.OnCellClickイベント |
|
|
|
|
procedure
TForm1.DBGrid1CellClick(Column: TColumn) ;
begin
PageControl1.ActivePageIndex := 1;
//セルをクリックしたときに現在のレコードの詳細情報に移る
end; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
●Form1画面2(映画情報詳細・登録・更新) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
説明
|
コード記述
|
設定
|
 |
・JPEGImage挿入用SpeedButton
Dialogを開きJPEGImageをデータベースに登録 |
〇
|
なし
|
 |
OpenPicutureDialog |
なし
|
なし
|
 |
・CinemaQuery用DBNavigator
映画情報の登録・更新・削除を行う |
なし
|
〇
|
 |
登録日時用DBEdit |
なし
|
〇
|
 |
映画名用DBEdit |
なし
|
〇
|
 |
ジャンル用DBLookupComboBox |
なし
|
〇
|
 |
コメント用DBMemo |
なし
|
〇
|
|
|
|
|
|
|
|
|
|
|
|
■映画情報詳細DBNavigator |
|
|
|
|
プロパティ名 |
設定値 |
DataSource |
CinemaDM.CinemaDS |
ShowHint |
True |
VisibleButtons |
nbRefresh |
False |
|
nbFirst |
False |
|
nbLast |
False |
|
|
|
|
|
|
|
|
|
|
■登録日時用DBEdit |
|
|
|
|
プロパティ名 |
設定値 |
DataField |
w_day |
DataSource |
CinemaDM.CinemaDS |
Name |
w_dayDBEdit |
|
|
|
|
|
|
|
|
|
|
|
■映画名用DBEdit |
|
|
|
|
プロパティ名 |
設定値 |
DataField |
cinema_name |
DataSource |
CinemaDM.CinemaDS |
Name |
TitleDBEdit |
|
|
|
|
|
|
|
|
|
|
|
■ジャンル用DBLookupComboBox |
|
|
|
|
プロパティ名 |
設定値 |
DataField |
genre_code |
DataSource |
CinemaDM.CinemaDS |
KeyField |
genre_code |
ListField |
genre_name |
ListSource |
CinemaDM.GenreDS |
|
|
|
|
|
|
|
|
|
|
|
■コメント用DBMemo |
|
|
|
|
プロパティ名 |
設定値 |
DataField |
comment |
DataSource |
CinemaDM.CinemaDS |
|
|
|
|
|
|
|
|
|
|
|
■イメージ挿入用SpeedButton |
|
|
|
|
プロパティ名 |
設定値 |
Glyph |
newfile.bmp |
Hint |
イメージの挿入 |
ShowHint |
True |
|
|
|
|
|
|
|
|
|
|
●コードの記述 |
|
|
|
|
■イベントハンドラ |
|
|
|
|
コンポーネント |
イベント |
発生タイミング |
SpeedButton |
OnClick |
ボタンを押したとき |
|
|
|
|
|
|
|
|
|
|
|
■イメージ挿入用SpeedButton.OnClickイベント |
|
|
|
|
データモジュールを利用している場合、データベース項目をフォームに配置されたコンポーネントが扱うには、Unitファイルのinterface部uses句にDB、DBTableと宣言しておく必要があります。また、JPEGを扱うためにUnitファイルのinterface部uses句でJPEGと宣言しておいてください。そうする事でJPEGイメージを扱えるようになります。 |
|
|
|
|
procedure TForm1.SpeedButton1Click(Sender:
TObject) ;
var
JPG: TJPEGImage;
BlobStream: TBlobStream;
begin
// JPEGファイルの読み出し
OpenPictureDialog1.Filter := 'JPEGファイル(*.jpg)|*.jpg|すべてのファイル(*.*)|*.*';
if OpenPictureDialog1.Execute then
begi
JPG :=TJPEGImage.Create;
JPG.LoadFromFile(OpenPictureDialog1.FileName);
if not (CinemaDM.CinemaQuery.State in [dsEdit, dsInsert]) then
CinemaDM.CinemaQuery.Edit;
// BLOBストリームを作成する
BlobStream := TBlobStream.Create( TBlobField(CinemaDM.CinemaQuery.
FieldByName('image')), bmWrite);
try
// JPEGデータをストリームへ保存する
JPG.SaveToStream(BlobStream);
// Imageオブジェクトに画像を表示する
Image1.Picture.Assign(JPG);
finally
BlobStream.Free;
JPG.Free;
end;
end;
end; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
●Form3(検索条件入力) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
説明
|
コード記述
|
設定
|
 |
映画名検索用Edit |
なし
|
なし
|
 |
ジャンル検索用DBLookupComboBox |
なし
|
〇
|
 |
OK用BitBtn |
なし
|
〇
|
 |
キャンセル用BitBtn |
なし
|
〇
|
 |
検索条件入力フォーム |
〇
|
なし
|
|
|
|
|
|
|
|
|
|
|
|
■ジャンル検索用DBLookupComboBox |
|
|
|
|
プロパティ名 |
設定値 |
KeyField |
genre_code |
ListField |
genre_name |
ListSource |
CinemaDM.GenreDS |
|
|
|
|
|
|
|
|
|
|
|
■OK用BitBtn |
|
|
|
|
プロパティ名 |
設定値 |
Kind |
bkOK |
Name |
BitBtn1 |
|
|
|
|
|
|
|
|
|
|
|
■キャンセル用BitBtn |
|
|
|
|
プロパティ名 |
設定値 |
Kind |
bkCancel |
Name |
BitBtn2 |
|
|
|
|
|
|
|
|
|
|
|
●Form3(検索条件入力フォーム) |
|
|
|
|
■フィールド |
|
|
|
|
可視属性 |
名称 |
型 |
Public |
WhereString |
String |
|
|
|
|
|
|
|
|
|
|
|
■イベントハンドラ |
|
|
|
|
コンポーネント |
イベント |
発生タイミング |
Form3 |
OnClose |
フォームを閉じるとき |
|
|
|
|
|
|
|
|
|
|
|
■Oncloseイベントのコード記述 |
|
|
|
|
procedure TForm3.FormClose(Sender:
TObject; var Action: TCloseAction);
begin
if ModalResult = mrOK then
begin
if DBLookupComboBox2.Text <> '' then //ジャンル検索
WhereString := WhereString + 'AND genre_code =' +
String(DBLookupComboBox2.keyvalue);
if Edit1.Text <> '' then //映画名検索
begin
WhereString := WhereString + 'AND a.cinema_name = '''+Edit1.Text+'''';
end
else
Form1.BitBtn2.Enabled := True;
end;
end; |
|
|
|
|
|
|
|
|
|
|
|
●Form1画面1(検索結果表示) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|