home *** CD-ROM | disk | FTP | other *** search
- {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- (c) TechInsite Pty. Ltd.
- PO Box 429, Abbotsford, Melbourne. 3067 Australia
- Phone: +61 3 9419 6456
- Fax: +61 3 9419 1682
- Web: www.techinsite.com.au
- EMail: peter_hinrichsen@techinsite.com.au
-
- Created: Jan 2000
-
- Notes: Address book application's main form
-
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
- unit FMain;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- Grids, DBGrids, Db, DBTables, IBDatabase, StdCtrls, ComCtrls, tiListView,
- tiTreeView, ExtCtrls, tiTreeViewPlus, ToolWin
- ,Adrs_BOM, ActnList, Menus, ImgList
- ;
-
- type
- TFormMain = class(TForm)
- TV: TtiTreeViewPlus;
- ToolBar1: TToolBar;
- ToolButton1: TToolButton;
- ToolButton3: TToolButton;
- ToolButton2: TToolButton;
- ToolButton4: TToolButton;
- ToolButton5: TToolButton;
- ToolButton6: TToolButton;
- ToolButton7: TToolButton;
- ActionList1: TActionList;
- MainMenu1: TMainMenu;
- File1: TMenuItem;
- N1: TMenuItem;
- N2: TMenuItem;
- aNew: TAction;
- aDelete: TAction;
- aSave: TAction;
- aCancel: TAction;
- aClose: TAction;
- aNew1: TMenuItem;
- aSave1: TMenuItem;
- aDelete1: TMenuItem;
- N3: TMenuItem;
- aClose1: TMenuItem;
- ImageList1: TImageList;
- procedure TVClose(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure TVGetDataPage(pData: TObject; pNode: TTreeNode);
- procedure TVSave(Sender: TObject);
- procedure TVNew(ptiTreeView: TtiTreeView; pNode,pParentNode: TTreeNode; pData: TObject);
- procedure TVDelete(ptiTreeView: TtiTreeView; pNode: TTreeNode;pData: TObject);
- procedure TVCancel(Sender: TObject);
- procedure aNewExecute(Sender: TObject);
- procedure aDeleteExecute(Sender: TObject);
- procedure ActionList1Update(Action: TBasicAction;var Handled: Boolean);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure FormDestroy(Sender: TObject);
- private
- FAddressBook : TAdrsBook ;
- procedure Read;
- public
- end;
-
- var
- FormMain: TFormMain;
-
- implementation
- uses
- Adrs_SRV
- ,tiPtnVisitorMgr
- ,cAdrs
- ,FEditPerson
- ,DBNextOID
- ;
-
- {$R *.DFM}
-
- // Form's OnCreate event
- //------------------------------------------------------------------------------
- procedure TFormMain.FormCreate(Sender: TObject);
- begin
- TV.RegisterChildForm( TPerson, TFormEditPerson ) ;
- Read ;
- end;
-
- // Form's OnDestroy event
- //------------------------------------------------------------------------------
- procedure TFormMain.FormDestroy(Sender: TObject);
- begin
- if FAddressBook <> nil then
- FAddressBook.Free ;
- end;
-
- // Create a TAddressBook object and read it's primary key data
- //------------------------------------------------------------------------------
- procedure TFormMain.Read ;
- begin
- if FAddressBook <> nil then
- FAddressBook.Free ;
- TV.Data := nil ;
- FAddressBook := TAdrsBook.Create ;
- gVisitorCache.Execute( cgsAdrs_Read_PK, FAddressBook ) ;
- TV.Data := FAddressBook ;
- TV.FullExpand ;
- end;
-
- // Form's CloseQuery event
- //------------------------------------------------------------------------------
- procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- var
- lAction : word ;
- begin
- if not FAddressBook.Dirty then begin
- CanClose := true ;
- exit ; //==>
- end ;
-
- if not TV.IsCurrentChildFormValid then
- exit ; //==>
-
- lAction :=
- MessageDlg( 'Do you want to save your changes before exiting?',
- mtWarning,
- [mbYes, mbNo, mbCancel],
- 0 ) ;
- case lAction of
- mrYes : begin
- gVisitorCache.Execute( cgsAdrs_Update, TAdrsBook( TV.Data )) ;
- CanClose := true ;
- end ;
- mrNo : CanClose := true ;
- mrCancel : CanClose := false ;
- end ;
-
- end;
-
- // TtiTreeViewPlus close action
- //------------------------------------------------------------------------------
- procedure TFormMain.TVClose(Sender: TObject);
- begin
- Close ;
- end;
-
- // When a node on the TtiTreeViewPlus is selected, this event is triggered.
- // Read the detailed data associated with the node's data.
- //------------------------------------------------------------------------------
- procedure TFormMain.TVGetDataPage(pData: TObject; pNode: TTreeNode);
- begin
- if pData is TPerson then
- gVisitorCache.Execute( cgsAdrs_Read_Detail, TPerson( pData )) ;
- end;
-
- // TtiTreeViewPlus save event
- //------------------------------------------------------------------------------
- procedure TFormMain.TVSave(Sender: TObject);
- begin
- if not TV.IsCurrentChildFormValid then
- exit ; //==>
-
- if not TAdrsBook( TV.Data ).Dirty then
- exit ; //==>
-
- gVisitorCache.Execute( cgsAdrs_Update, TAdrsBook( TV.Data )) ;
-
- end;
-
- // TtiTreeViewPlus New event
- //------------------------------------------------------------------------------
- procedure TFormMain.TVNew(ptiTreeView: TtiTreeView; pNode,
- pParentNode: TTreeNode; pData: TObject);
- var
- lParentNode : TTreeNode ;
- lOwner : TPersonList ;
- lData : TPerson ;
- lNode : TTreeNode ;
- begin
-
- if pData is TPerson then begin
- lParentNode := pParentNode ;
- lOwner := TPersonList( pParentNode.Data ) ;
- end else if pData is TPersonList then begin
- lParentNode := pNode ;
- lOwner := TPersonList( pData ) ;
- end else
- exit ; //==>
-
- lData := TPerson.CreateNew ;
- lData.FirstName := 'Enter' ;
- lData.LastName := 'Enter' ;
- lOwner.Add( lData ) ;
- lNode := ptiTreeView.Items.AddChildObject( lParentNode, lData.Caption, lData ) ;
- ptiTreeView.Selected := lNode ;
-
- end;
-
- // TtiTreeViewPlus Delete event
- //------------------------------------------------------------------------------
- procedure TFormMain.TVDelete(ptiTreeView: TtiTreeView; pNode: TTreeNode; pData: TObject);
- begin
- if not( pData is TPerson ) then
- exit ; //==>
-
- if MessageDlg( 'Are you sure you want to delete <' +
- TPerson( pData ).Caption + '>?',
- mtConfirmation,
- [mbYes, mbNo],
- 0 ) = mrYes then begin
- TPerson( pData ).Deleted := true ;
- ptiTreeView.Items.Delete( pNode ) ;
- end;
-
- end;
-
- // TtiTreeViewPlus Cancel event
- //------------------------------------------------------------------------------
- procedure TFormMain.TVCancel(Sender: TObject);
- begin
- Read ;
- end;
-
- // ActionList's New event
- //------------------------------------------------------------------------------
- procedure TFormMain.aNewExecute(Sender: TObject);
- begin
- TV.DoNew ;
- end;
-
- // ActionList's Delete event
- //------------------------------------------------------------------------------
- procedure TFormMain.aDeleteExecute(Sender: TObject);
- begin
- TV.DoDelete
- end;
-
- // ActionList's OnUpdate event
- //------------------------------------------------------------------------------
- procedure TFormMain.ActionList1Update(Action: TBasicAction; var Handled: Boolean);
- begin
- aNew.Enabled := true ;
- aDelete.Enabled := ( TV.Selected <> nil ) and
- ( TV.Selected.Data <> nil ) and
- ( TObject( TV.Selected.Data ) is TPerson ) ;
- aSave.Enabled := FAddressBook.Dirty ;
- aCancel.Enabled := FAddressBook.Dirty ;
- aClose.Enabled := true ;
- end;
-
-
- end.
-
-