📄 custypeform.pas
字号:
unit CusTypeForm;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs, Controls, StdCtrls,
Buttons, ComCtrls, ExtCtrls, Mask, DBCtrls, DB, DBTables, Menus, BDE;
type
TfrmCusType = class(TForm)
Panel1: TPanel;
dsCusType: TDataSource;
Panel3: TPanel;
Panel2: TPanel;
Panel4: TPanel;
btnOK: TButton;
btnCancel: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Label1: TLabel;
editTypeName: TDBEdit;
tblCusType: TTable;
tblCusTypeCustomerTypeID: TAutoIncField;
tblCusTypeTypeName: TStringField;
qryLastID: TQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure dsCusTypeDataChange(Sender: TObject; Field: TField);
procedure FormShow(Sender: TObject);
procedure Panel2DblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure dsCusTypeUpdateData(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure tblCusTypeBeforePost(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCusType: TfrmCusType;
implementation
uses CusTypesForm, BS1Form;
var
intClientHeight, intClientWidth: Integer;
{$R *.DFM}
procedure TfrmCusType.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if tblCusType.State in [dsInsert, dsEdit] then btnOKClick(sender);
Action := caFree;
end;
procedure TfrmCusType.dsCusTypeDataChange(Sender: TObject;
Field: TField);
begin
if (tblCusTypeCustomerTypeID.AsVariant = null) and (tblCusTypeTypeName.Value = '') then self.Caption := 'New Customer Type'
else self.Caption := tblCusTypeTypeName.value;
end;
procedure TfrmCusType.FormShow(Sender: TObject);
begin
PageControl1.ActivePage := Tabsheet1;
editTypeName.setfocus;
end;
procedure TfrmCusType.Panel2DblClick(Sender: TObject);
begin
ClientHeight := intClientHeight; //Resize form.
ClientWidth := intClientWidth;
end;
procedure TfrmCusType.FormCreate(Sender: TObject);
begin
tblCusType.DatabaseName := strDatabaseName;
qryLastID.DatabaseName := strDatabaseName;
tblCusType.Active := true;
if FontFactor <> 1 then begin //If using large fonts, resize form.
ClientHeight := Trunc(ClientHeight*FontFactor);
ClientWidth := Trunc(ClientWidth*FontFactor);
PageControl1.TabWidth := Trunc(PageControl1.TabWidth*FontFactor);
end;
intClientHeight := ClientHeight; //Store form size.
intClientWidth := ClientWidth;
end;
procedure TfrmCusType.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then begin //Enter key: advance to next control.
if (ActiveControl.ClassType <> TDBMemo) and (ActiveControl.ClassType <> TDBLookupCombobox) then begin
Key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end else if (ActiveControl.ClassType = TDBLookupComboBox) and (TDBLookupComboBox(ActiveControl).ListVisible = false) then begin
Key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
end;
procedure TfrmCusType.dsCusTypeUpdateData(Sender: TObject);
begin
if tblCusTypeTypeName.AsString = '' then begin
with editTypeName do begin Show; SetFocus; end;
raise(exception.create('Field ' + '''Type Name''' + ' must have a value'));
end;
end;
procedure TfrmCusType.btnOKClick(Sender: TObject);
begin
if tblCusType.State in [dsInsert, dsEdit] then begin
try tblCusType.post; DbiSaveChanges(tblCusType.handle);
except
on E: EDBEngineError do
if E.Errors[E.ErrorCount - 1].ErrorCode = 9729 then begin //Key violation (key already exists).
with editTypeName do begin Show; SetFocus; end;
raise(exception.create('Customer Type already exists'));
end else raise;
end;
try
frmCusTypes.tblCusType.refresh;
frmCusTypes.tblCusType.Locate('CustomerTypeID', tblCusTypeCustomerTypeID.AsInteger, []);
frmCusTypes.DBGrid1.Setfocus;
except; end;
end;
Close;
end;
procedure TfrmCusType.btnCancelClick(Sender: TObject);
begin
tblCusType.cancel;
Close;
end;
procedure TfrmCusType.tblCusTypeBeforePost(DataSet: TDataSet);
begin
if tblCusType.state = dsInsert then begin
qryLastID.close;
qryLastID.open;
with qryLastID.Fields[0] do
if IsNull then tblCusTypeCustomerTypeID.value := 1
else tblCusTypeCustomerTypeID.value := AsInteger + 1;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -