345 lines
10 KiB
Plaintext
345 lines
10 KiB
Plaintext
{******************************************************************
|
|
|
|
JEDI-VCL Demo
|
|
|
|
Copyright (C) 2002 Project JEDI
|
|
|
|
Original author:
|
|
|
|
Contributor(s):
|
|
|
|
You may retrieve the latest version of this file at the JEDI-JVCL
|
|
home page, located at http://jvcl.sourceforge.net
|
|
|
|
The contents of this file are used with permission, subject to
|
|
the Mozilla Public License Version 1.1 (the "License"); you may
|
|
not use this file except in compliance with the License. You may
|
|
obtain a copy of the License at
|
|
http://www.mozilla.org/MPL/MPL-1_1Final.html
|
|
|
|
Software distributed under the License is distributed on an
|
|
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
implied. See the License for the specific language governing
|
|
rights and limitations under the License.
|
|
|
|
******************************************************************}
|
|
|
|
unit PageDemo;
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
|
|
Forms, Dialogs, StdCtrls, DBCtrls, DB, DBTables, JvPageManager,
|
|
JvComponent, JvFormPlacement, JvBDEQuery, JvDBCombobox, JvToolEdit,
|
|
JvDBControls, Mask, JvLabel, Grids, DBGrids, ExtCtrls, JvExControls,
|
|
JvDBGrid, JvExStdCtrls, JvExMask, JvExDBGrids;
|
|
|
|
type
|
|
TClientAssistanceMode = (camNew, camEdit, camDelete, camView);
|
|
TClientAssistantPage = (pageToDo, pageSearchConfirm, pageSearchParams,
|
|
pageClientsBrowse, pageClientEdit);
|
|
|
|
TClientAssistant = class(TForm)
|
|
BtnPanel: TPanel;
|
|
Bevel1: TBevel;
|
|
Notebook: TNotebook;
|
|
BackBtn: TButton;
|
|
NextBtn: TButton;
|
|
CloseBtn: TButton;
|
|
SaveBtn: TButton;
|
|
NewBtn: TRadioButton;
|
|
EditBtn: TRadioButton;
|
|
DeleteBtn: TRadioButton;
|
|
ClientsDS: TDataSource;
|
|
Image1: TImage;
|
|
Label1: TLabel;
|
|
Label16: TLabel;
|
|
ViewBtn: TRadioButton;
|
|
Image2: TImage;
|
|
Label17: TLabel;
|
|
Label19: TLabel;
|
|
Label20: TLabel;
|
|
Label21: TLabel;
|
|
Label23: TLabel;
|
|
Label27: TLabel;
|
|
SrchName: TEdit;
|
|
SrchFirstName: TEdit;
|
|
SrchCity: TEdit;
|
|
SrchState: TEdit;
|
|
SrchOccupation: TEdit;
|
|
ExactBtn: TCheckBox;
|
|
DoSearchBtn: TRadioButton;
|
|
SkipSearchBtn: TRadioButton;
|
|
Image3: TImage;
|
|
NewSearchHint: TLabel;
|
|
Label24: TLabel;
|
|
Image4: TImage;
|
|
Label25: TLabel;
|
|
Grid: TJvDBGrid ;
|
|
SearchQuery: TJvQuery ;
|
|
SearchQueryDS: TDataSource;
|
|
FormStorage: TJvFormStorage ;
|
|
PageManager: TJvPageManager ;
|
|
ToDo: TJvPageProxy ;
|
|
SearchConfirm: TJvPageProxy ;
|
|
SearchParams: TJvPageProxy ;
|
|
ClientsBrowse: TJvPageProxy ;
|
|
ClientEdit: TJvPageProxy ;
|
|
Clients: TTable;
|
|
SearchQueryLAST_NAME: TStringField;
|
|
SearchQueryFIRST_NAME: TStringField;
|
|
SearchQueryACCT_NBR: TFloatField;
|
|
SearchQueryADDRESS_1: TStringField;
|
|
SearchQueryCITY: TStringField;
|
|
SearchQuerySTATE: TStringField;
|
|
SearchQueryZIP: TStringField;
|
|
SearchQueryTELEPHONE: TStringField;
|
|
SearchQueryDATE_OPEN: TDateField;
|
|
SearchQuerySS_NUMBER: TFloatField;
|
|
SearchQueryBIRTH_DATE: TDateField;
|
|
SearchQueryRISK_LEVEL: TStringField;
|
|
SearchQueryOCCUPATION: TStringField;
|
|
SearchQueryOBJECTIVES: TStringField;
|
|
SearchQueryINTERESTS: TStringField;
|
|
Image5: TImage;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
Label8: TLabel;
|
|
Label11: TLabel;
|
|
Label12: TLabel;
|
|
Label14: TLabel;
|
|
EditACCT_NBR: TDBEdit;
|
|
EditFIRST_NAME: TDBEdit;
|
|
EditADDRESS_: TDBEdit;
|
|
EditCITY: TDBEdit;
|
|
EditSTATE: TDBEdit;
|
|
EditZIP: TDBEdit;
|
|
EditTELEPHONE: TDBEdit;
|
|
EditOCCUPATION: TDBEdit;
|
|
EditLAST_NAME: TDBEdit;
|
|
Label9: TLabel;
|
|
Label10: TLabel;
|
|
EditSS_NUMBER: TDBEdit;
|
|
Label13: TLabel;
|
|
Label15: TLabel;
|
|
EditOBJECTIVES: TDBEdit;
|
|
EditBIRTH_DATE: TJvDBDateEdit ;
|
|
Label5: TLabel;
|
|
EditINTERESTS: TDBEdit;
|
|
EditIMAGE: TDBImage;
|
|
EditDATE_OPEN: TJvDBDateEdit ;
|
|
RxLabel1: TJvLabel ;
|
|
ClientsLAST_NAME: TStringField;
|
|
ClientsFIRST_NAME: TStringField;
|
|
ClientsACCT_NBR: TFloatField;
|
|
ClientsADDRESS_1: TStringField;
|
|
ClientsCITY: TStringField;
|
|
ClientsSTATE: TStringField;
|
|
ClientsZIP: TStringField;
|
|
ClientsTELEPHONE: TStringField;
|
|
ClientsDATE_OPEN: TDateField;
|
|
ClientsSS_NUMBER: TFloatField;
|
|
ClientsPICTURE: TStringField;
|
|
ClientsBIRTH_DATE: TDateField;
|
|
ClientsRISK_LEVEL: TStringField;
|
|
ClientsOCCUPATION: TStringField;
|
|
ClientsOBJECTIVES: TStringField;
|
|
ClientsINTERESTS: TStringField;
|
|
ClientsIMAGE: TBlobField;
|
|
ComboRISK_LEVEL: TJvDBComboBox;
|
|
procedure SaveBtnClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
|
procedure PageManagerGetNextPage(CurrentPage: Integer;
|
|
var NewPage: Integer);
|
|
procedure PageManagerGetPriorPage(CurrentPage: Integer;
|
|
var NewPage: Integer);
|
|
procedure ToDoLeave(Next: Boolean);
|
|
procedure SearchParamsLeave(Next: Boolean);
|
|
procedure ClientsBrowseLeave(Next: Boolean);
|
|
procedure ClientEditEnter(Next: Boolean);
|
|
procedure ClientEditLeave(Next: Boolean);
|
|
procedure ClientsBrowseShow(Next: Boolean);
|
|
procedure CloseBtnClick(Sender: TObject);
|
|
procedure ClientDataChange(Sender: TField);
|
|
procedure ClientEditShow(Next: Boolean);
|
|
procedure EditChange(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
procedure DoSearch;
|
|
public
|
|
{ Public declarations }
|
|
Mode: TClientAssistanceMode;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses JvDBUtils, JvBdeUtils, Main;
|
|
|
|
{$R *.DFM}
|
|
|
|
{$B-}
|
|
|
|
procedure TClientAssistant.FormCreate(Sender: TObject);
|
|
begin
|
|
Clients.Open;
|
|
end;
|
|
|
|
procedure TClientAssistant.SaveBtnClick(Sender: TObject);
|
|
begin
|
|
Clients.Post;
|
|
PageManager.SetPage(Integer(pageToDo), True);
|
|
end;
|
|
|
|
procedure TClientAssistant.ToDoLeave(Next: Boolean);
|
|
begin
|
|
if NewBtn.Checked then Mode := camNew
|
|
else if EditBtn.Checked then Mode := camEdit
|
|
else if DeleteBtn.Checked then Mode := camDelete
|
|
else if ViewBtn.Checked then Mode := camView;
|
|
end;
|
|
|
|
procedure TClientAssistant.SearchParamsLeave(Next: Boolean);
|
|
begin
|
|
if Next then DoSearch;
|
|
end;
|
|
|
|
procedure TClientAssistant.ClientsBrowseLeave(Next: Boolean);
|
|
begin
|
|
if Next then begin
|
|
if IsDataSetEmpty(SearchQuery) or not
|
|
DataSetFindValue(Clients, SearchQuery.FieldByName('ACCT_NBR').AsString,
|
|
'ACCT_NBR') then DatabaseError('No data found');
|
|
if (Mode = camDelete) and ConfirmDelete then begin
|
|
Clients.Delete;
|
|
RefreshQuery(SearchQuery);
|
|
end;
|
|
end
|
|
else SearchQuery.Close;
|
|
end;
|
|
|
|
procedure TClientAssistant.ClientEditEnter(Next: Boolean);
|
|
begin
|
|
if Mode = camNew then Clients.Append
|
|
else if Mode = camEdit then Clients.Edit;
|
|
SaveBtn.Visible := (Clients.State in [dsInsert, dsEdit]);
|
|
SaveBtn.Enabled := False;
|
|
end;
|
|
|
|
procedure TClientAssistant.ClientEditLeave(Next: Boolean);
|
|
begin
|
|
if not Next then ConfirmDataSetCancel(Clients);
|
|
SaveBtn.Visible := False;
|
|
end;
|
|
|
|
procedure TClientAssistant.DoSearch;
|
|
begin
|
|
with SearchQuery do begin
|
|
Close;
|
|
MacroByName('LAST_NAME').AsString := FormatSQLCondition('LAST_NAME',
|
|
'', SrchName.Text, ftString, ExactBtn.Checked);
|
|
MacroByName('FIRST_NAME').AsString := FormatSQLCondition('FIRST_NAME',
|
|
'', SrchFirstName.Text, ftString, ExactBtn.Checked);
|
|
MacroByName('CITY').AsString := FormatSQLCondition('CITY',
|
|
'', SrchCity.Text, ftString, ExactBtn.Checked);
|
|
MacroByName('OCCUPATION').AsString := FormatSQLCondition('OCCUPATION',
|
|
'', SrchOccupation.Text, ftString, ExactBtn.Checked);
|
|
MacroByName('STATE').AsString := FormatSQLCondition('STATE',
|
|
'', SrchState.Text, ftString, ExactBtn.Checked);
|
|
Open;
|
|
end;
|
|
end;
|
|
|
|
procedure TClientAssistant.FormCloseQuery(Sender: TObject;
|
|
var CanClose: Boolean);
|
|
begin
|
|
Clients.Cancel;
|
|
end;
|
|
|
|
procedure TClientAssistant.PageManagerGetNextPage(CurrentPage: Integer;
|
|
var NewPage: Integer);
|
|
begin
|
|
case TClientAssistantPage(CurrentPage) of
|
|
pageTodo:
|
|
begin
|
|
case Mode of
|
|
camNew:
|
|
NewPage := Integer(pageSearchConfirm);
|
|
camEdit, camDelete, camView:
|
|
NewPage := Integer(pageSearchParams);
|
|
end;
|
|
end;
|
|
pageSearchConfirm:
|
|
begin
|
|
if DoSearchBtn.Checked then
|
|
NewPage := Integer(pageSearchParams)
|
|
else if SkipSearchBtn.Checked then
|
|
NewPage := Integer(pageClientEdit);
|
|
end;
|
|
pageSearchParams: NewPage := Succ(CurrentPage);
|
|
pageClientsBrowse:
|
|
begin
|
|
NewPage := Succ(CurrentPage);
|
|
if Mode = camDelete then NewPage := CurrentPage
|
|
else if Mode in [camEdit, camView] then begin
|
|
if IsDataSetEmpty(SearchQuery) then NewPage := -1;
|
|
end;
|
|
end;
|
|
pageClientEdit: NewPage := -1;
|
|
end;
|
|
end;
|
|
|
|
procedure TClientAssistant.PageManagerGetPriorPage(CurrentPage: Integer;
|
|
var NewPage: Integer);
|
|
begin
|
|
case TClientAssistantPage(CurrentPage) of
|
|
pageTodo: NewPage := -1;
|
|
pageSearchConfirm: NewPage := Pred(CurrentPage);
|
|
pageSearchParams:
|
|
begin
|
|
case Mode of
|
|
camNew:
|
|
NewPage := Integer(pageSearchConfirm);
|
|
camEdit, camDelete, camView:
|
|
NewPage := Integer(pageToDo);
|
|
end;
|
|
end;
|
|
pageClientsBrowse: NewPage := Pred(CurrentPage);
|
|
pageClientEdit:
|
|
begin
|
|
if not DoSearchBtn.Checked and (Mode = camNew) then
|
|
NewPage := Integer(pageSearchConfirm)
|
|
else NewPage := Integer(pageClientsBrowse);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TClientAssistant.ClientsBrowseShow(Next: Boolean);
|
|
begin
|
|
ActiveControl := Grid;
|
|
end;
|
|
|
|
procedure TClientAssistant.CloseBtnClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TClientAssistant.ClientDataChange(Sender: TField);
|
|
begin
|
|
SaveBtn.Enabled := True;
|
|
end;
|
|
|
|
procedure TClientAssistant.ClientEditShow(Next: Boolean);
|
|
begin
|
|
ActiveControl := EditACCT_NBR;
|
|
end;
|
|
|
|
procedure TClientAssistant.EditChange(Sender: TObject);
|
|
begin
|
|
SaveBtn.Enabled := True;
|
|
end;
|
|
|
|
end.
|