Project MDIVIEW
Project Structure
MDIVIEW.DPR
program MdiView;
uses
Forms,
GridView in 'GridView.pas' {GridForm},
DataM in 'DataM.pas' {CustomerDM},
FormView in 'FormView.pas' {RecordForm},
Main in 'Main.pas' {FrameForm};
{$R *.RES}
begin
Application.CreateForm(TFrameForm, FrameForm);
Application.Run;
end.
GRIDVIEW.PAS
unit GridView;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, Buttons, DBCtrls, DataM, ExtCtrls;
type
TGridForm = class(TForm)
DBGrid1: TDBGrid;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
DM: TCustomerDM;
public
{ Public declarations }
end;
implementation
{$R *.DFM}
procedure TGridForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TGridForm.FormCreate(Sender: TObject);
begin
DM := TCustomerDM.Create (Self);
DBGrid1.DataSource := DM.DataSource1;
end;
end.
DATAM.PAS
unit DataM;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, DB;
type
TCustomerDM = class(TDataModule)
Table1: TTable;
DataSource1: TDataSource;
Table1CustNo: TFloatField;
Table1Company: TStringField;
Table1Addr1: TStringField;
Table1Addr2: TStringField;
Table1City: TStringField;
Table1State: TStringField;
Table1Zip: TStringField;
Table1Country: TStringField;
Table1Phone: TStringField;
Table1FAX: TStringField;
Table1TaxRate: TFloatField;
Table1Contact: TStringField;
Table1LastInvoiceDate: TDateTimeField;
procedure DataSource1DataChange(Sender: TObject; Field: TField);
end;
implementation
{$R *.DFM}
procedure TCustomerDM.DataSource1DataChange(Sender: TObject;
Field: TField);
begin
(Owner as TForm).Caption :=
(Owner as TForm).Hint + ' - ' +
Table1Company.AsString;
end;
end.
FORMVIEW.PAS
unit FormView;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, DBCtrls, StdCtrls, Mask, DataM;
type
TRecordForm = class(TForm)
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
DBEdit9: TDBEdit;
DBEdit10: TDBEdit;
DBEdit11: TDBEdit;
DBEdit12: TDBEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
DBNavigator1: TDBNavigator;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
DM: TCustomerDM;
public
{ Public declarations }
end;
implementation
{$R *.DFM}
procedure TRecordForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TRecordForm.FormCreate(Sender: TObject);
var
I: Integer;
begin
DM := TCustomerDM.Create (Self);
// connect the navigator
DBNavigator1.DataSource := DM.DataSource1;
// connect all DBEdit controls
for I := 0 to ControlCount - 1 do
if Controls [i] is TDBEdit then
TDBEdit (Controls [I]).DataSource :=
DM.DataSource1;
end;
end.
MAIN.PAS
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus;
type
TFrameForm = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
NewRecordView1: TMenuItem;
NewGridView1: TMenuItem;
Close1: TMenuItem;
N1: TMenuItem;
Windows1: TMenuItem;
Tile1: TMenuItem;
Cascade1: TMenuItem;
Help1: TMenuItem;
About1: TMenuItem;
procedure NewRecordView1Click(Sender: TObject);
procedure NewGridView1Click(Sender: TObject);
procedure Tile1Click(Sender: TObject);
procedure Cascade1Click(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure Close1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrameForm: TFrameForm;
implementation
uses FormView, GridView;
{$R *.DFM}
procedure TFrameForm.NewRecordView1Click(Sender: TObject);
begin
with TRecordForm.Create (Application) do
Show;
end;
procedure TFrameForm.NewGridView1Click(Sender: TObject);
begin
with TGridForm.Create (Application) do
Show;
end;
procedure TFrameForm.Tile1Click(Sender: TObject);
begin
Tile;
end;
procedure TFrameForm.Cascade1Click(Sender: TObject);
begin
Cascade;
end;
procedure TFrameForm.About1Click(Sender: TObject);
begin
ShowMessage ('MDI datamodule based demo'#13 +
'from the book "Mastering Delphi 4"');
end;
procedure TFrameForm.Close1Click(Sender: TObject);
begin
Close;
end;
end.
GRIDVIEW.DFM
object GridForm: TGridForm
Left = 286
Top = 234
Width = 479
Height = 300
Hint = 'Grid View'
Caption = 'Grid View'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
FormStyle = fsMDIChild
OldCreateOrder = True
Position = poDefault
Visible = True
OnClose = FormClose
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object DBGrid1: TDBGrid
Left = 0
Top = 0
Width = 471
Height = 273
Align = alClient
DataSource = CustomerDM.DataSource1
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS Sans Serif'
TitleFont.Style = []
end
end
DATAM.DFM
object CustomerDM: TCustomerDM
OldCreateOrder = True
Left = 268
Top = 373
Height = 159
Width = 196
object Table1: TTable
Active = True
DatabaseName = 'DBDEMOS'
IndexName = 'ByCompany'
TableName = 'CUSTOMER.DB'
Left = 24
Top = 16
object Table1CustNo: TFloatField
Alignment = taLeftJustify
DisplayWidth = 7
FieldName = 'CustNo'
DisplayFormat = 'CN 0000'
MaxValue = 9999
MinValue = 1000
end
object Table1Company: TStringField
DisplayWidth = 25
FieldName = 'Company'
Size = 30
end
object Table1Addr1: TStringField
DisplayWidth = 21
FieldName = 'Addr1'
Size = 30
end
object Table1Addr2: TStringField
DisplayWidth = 28
FieldName = 'Addr2'
Size = 30
end
object Table1City: TStringField
DisplayWidth = 15
FieldName = 'City'
Size = 15
end
object Table1State: TStringField
DisplayWidth = 20
FieldName = 'State'
end
object Table1Country: TStringField
DisplayWidth = 20
FieldName = 'Country'
end
object Table1Zip: TStringField
DisplayWidth = 10
FieldName = 'Zip'
Size = 10
AttributeSet = 'ZipCode'
end
object Table1Phone: TStringField
DisplayWidth = 15
FieldName = 'Phone'
EditMask = '!999-000-0000;1;_'
Size = 15
end
object Table1FAX: TStringField
DisplayWidth = 15
FieldName = 'FAX'
EditMask = '!999-000-0000;1;_'
Size = 15
AttributeSet = 'USPhone'
end
object Table1TaxRate: TFloatField
DisplayWidth = 10
FieldName = 'TaxRate'
DisplayFormat = '0.00%'
AttributeSet = 'TaxRate'
end
object Table1Contact: TStringField
DisplayWidth = 20
FieldName = 'Contact'
end
object Table1LastInvoiceDate: TDateTimeField
DisplayWidth = 13
FieldName = 'LastInvoiceDate'
end
end
object DataSource1: TDataSource
DataSet = Table1
OnDataChange = DataSource1DataChange
Left = 88
Top = 16
end
end
FORMVIEW.DFM
object RecordForm: TRecordForm
Left = 506
Top = 209
Hint = 'Form View'
BorderStyle = bsSingle
Caption = 'Form View'
ClientHeight = 333
ClientWidth = 281
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
FormStyle = fsMDIChild
OldCreateOrder = True
Position = poDefault
Visible = True
OnClose = FormClose
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 16
Top = 44
Width = 64
Height = 13
Caption = 'Customer No.'
end
object Label2: TLabel
Left = 16
Top = 68
Width = 44
Height = 13
Caption = 'Company'
end
object Label3: TLabel
Left = 16
Top = 92
Width = 53
Height = 13
Caption = 'Address (1)'
end
object Label4: TLabel
Left = 16
Top = 116
Width = 53
Height = 13
Caption = 'Address (2)'
end
object Label5: TLabel
Left = 16
Top = 140
Width = 17
Height = 13
Caption = 'City'
end
object Label6: TLabel
Left = 16
Top = 164
Width = 25
Height = 13
Caption = 'State'
end
object Label7: TLabel
Left = 16
Top = 188
Width = 17
Height = 13
Caption = 'ZIP'
end
object Label8: TLabel
Left = 16
Top = 212
Width = 36
Height = 13
Caption = 'Country'
end
object Label9: TLabel
Left = 16
Top = 236
Width = 31
Height = 13
Caption = 'Phone'
end
object Label10: TLabel
Left = 16
Top = 260
Width = 20
Height = 13
Caption = 'FAX'
end
object Label11: TLabel
Left = 16
Top = 284
Width = 44
Height = 13
Caption = 'Tax Rate'
end
object Label12: TLabel
Left = 16
Top = 308
Width = 37
Height = 13
Caption = 'Contact'
end
object DBEdit1: TDBEdit
Left = 88
Top = 40
Width = 89
Height = 21
DataField = 'CustNo'
DataSource = CustomerDM.DataSource1
TabOrder = 0
end
object DBEdit2: TDBEdit
Left = 88
Top = 64
Width = 177
Height = 21
DataField = 'Company'
DataSource = CustomerDM.DataSource1
TabOrder = 1
end
object DBEdit3: TDBEdit
Left = 88
Top = 88
Width = 177
Height = 21
DataField = 'Addr1'
DataSource = CustomerDM.DataSource1
TabOrder = 2
end
object DBEdit4: TDBEdit
Left = 88
Top = 112
Width = 177
Height = 21
DataField = 'Addr2'
DataSource = CustomerDM.DataSource1
TabOrder = 3
end
object DBEdit5: TDBEdit
Left = 88
Top = 136
Width = 97
Height = 21
DataField = 'City'
DataSource = CustomerDM.DataSource1
TabOrder = 4
end
object DBEdit6: TDBEdit
Left = 88
Top = 160
Width = 97
Height = 21
DataField = 'State'
DataSource = CustomerDM.DataSource1
TabOrder = 5
end
object DBEdit7: TDBEdit
Left = 88
Top = 184
Width = 97
Height = 21
DataField = 'Zip'
DataSource = CustomerDM.DataSource1
TabOrder = 6
end
object DBEdit8: TDBEdit
Left = 88
Top = 208
Width = 97
Height = 21
DataField = 'Country'
DataSource = CustomerDM.DataSource1
TabOrder = 7
end
object DBEdit9: TDBEdit
Left = 88
Top = 232
Width = 97
Height = 21
DataField = 'Phone'
DataSource = CustomerDM.DataSource1
MaxLength = 12
TabOrder = 8
end
object DBEdit10: TDBEdit
Left = 88
Top = 256
Width = 97
Height = 21
DataField = 'FAX'
DataSource = CustomerDM.DataSource1
MaxLength = 12
TabOrder = 9
end
object DBEdit11: TDBEdit
Left = 88
Top = 280
Width = 97
Height = 21
DataField = 'TaxRate'
DataSource = CustomerDM.DataSource1
TabOrder = 10
end
object DBEdit12: TDBEdit
Left = 88
Top = 304
Width = 177
Height = 21
DataField = 'Contact'
DataSource = CustomerDM.DataSource1
TabOrder = 11
end
object DBNavigator1: TDBNavigator
Left = 16
Top = 8
Width = 250
Height = 25
DataSource = CustomerDM.DataSource1
TabOrder = 12
end
end
MAIN.DFM
object FrameForm: TFrameForm
Left = 227
Top = 187
Width = 696
Height = 480
Caption = 'Mdi View'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
FormStyle = fsMDIForm
Menu = MainMenu1
OldCreateOrder = False
WindowMenu = Windows1
PixelsPerInch = 96
TextHeight = 13
object MainMenu1: TMainMenu
Left = 40
Top = 24
object File1: TMenuItem
Caption = '&File'
object NewRecordView1: TMenuItem
Caption = 'New Record View'
OnClick = NewRecordView1Click
end
object NewGridView1: TMenuItem
Caption = 'New Grid View'
OnClick = NewGridView1Click
end
object N1: TMenuItem
Caption = '-'
end
object Close1: TMenuItem
Caption = 'Close'
OnClick = Close1Click
end
end
object Windows1: TMenuItem
Caption = 'Windows'
object Tile1: TMenuItem
Caption = '&Tile'
OnClick = Tile1Click
end
object Cascade1: TMenuItem
Caption = '&Cascade'
OnClick = Cascade1Click
end
end
object Help1: TMenuItem
Caption = '&Help'
object About1: TMenuItem
Caption = '&About...'
OnClick = About1Click
end
end
end
end
|