📄 pagedemo.pas
字号:
{******************************************************************
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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -