📄 ufpbookinfo_update.pas
字号:
unit ufPBookInfo_Update;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DB, DBCtrls, Mask, Grids, DBGrids,ADODB;
type
TfPBookInfo_update = class(TForm)
pltop: TPanel;
plbottom: TPanel;
GroupBox1: TGroupBox;
dedtBarcode: TDBEdit;
StaticText3: TStaticText;
StaticText4: TStaticText;
dedtCnName: TDBEdit;
StaticText5: TStaticText;
dedtPrice: TDBEdit;
StaticText6: TStaticText;
dcbxType: TDBComboBox;
StaticText7: TStaticText;
dedtCode: TDBEdit;
StaticText8: TStaticText;
dedtISBN: TDBEdit;
StaticText17: TStaticText;
dedtQty: TDBEdit;
StaticText18: TStaticText;
dedtAQty: TDBEdit;
StaticText9: TStaticText;
dedtEnName: TDBEdit;
StaticText22: TStaticText;
dtxtOpe: TDBText;
StaticText10: TStaticText;
dedtGetID: TDBEdit;
StaticText11: TStaticText;
dedtInP: TDBEdit;
StaticText12: TStaticText;
dedtPage: TDBEdit;
StaticText13: TStaticText;
dcbxMType: TDBComboBox;
StaticText14: TStaticText;
dcbxZaiti: TDBComboBox;
p_ID: TStaticText;
cbxPro_name: TComboBox;
StaticText21: TStaticText;
dtxtDate: TDBText;
StaticText1: TStaticText;
dsPubBook: TDataSource;
dedtInfo: TDBEdit;
StaticText2: TStaticText;
dedtDID: TDBEdit;
StaticText20: TStaticText;
dchkbxStatus1: TDBCheckBox;
dcbxPro_ID: TDBComboBox;
P_name: TStaticText;
DBGrid1: TDBGrid;
Panel2: TPanel;
UpdateBtn: TBitBtn;
ApplyBtn: TBitBtn;
CancelBtn: TBitBtn;
ExitBtn: TBitBtn;
Splitter1: TSplitter;
Splitter2: TSplitter;
procedure ExitBtnClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure UpdateBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure ApplyBtnClick(Sender: TObject);
procedure dcbxTypeExit(Sender: TObject);
procedure dedtCodeExit(Sender: TObject);
procedure dcbxMTypeExit(Sender: TObject);
procedure dcbxZaitiExit(Sender: TObject);
procedure cbxPro_nameChange(Sender: TObject);
procedure cbxPro_nameExit(Sender: TObject);
procedure dcbxTypeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure dchkbxStatus1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DeleteBtnClick(Sender: TObject);
private
procedure SetStatus(status:boolean); //置控件状态
procedure SetBStatus(status:boolean); //置按钮状态
procedure SEtPstatus(status:boolean); //置供应商对应的控件状态
function check():Boolean;//查看记录输入是否完全
{ Private declarations }
public
{ Public declarations }
end;
const
Ope='张三';
var
fPBookInfo_update: TfPBookInfo_update;
implementation
uses udmpublish, Uglobal;
{$R *.dfm}
procedure TfPBookInfo_update.ExitBtnClick(Sender: TObject);
begin
close;
end;
procedure TfPBookInfo_update.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
fPBookInfo_update:=nil;
action:=cafree;
end;
//窗体初始化
procedure TfPBookInfo_update.FormCreate(Sender: TObject);
begin
//打开表
if c_getid(dmpublish.adsShare,'Value','dict',' Class=''币种'' and Parent=''币种'' and Status',dcbxMType)
and c_getid(dmpublish.adsShare,'Value','dict',' Class=''载体'' and Parent=''载体'' and Status',dcbxZaiti)
and c_getPid2(dmpublish.adsShare,'ID','NAME','PROVIDER','STATUS',dcbxPro_id,cbxPro_name)
then
begin
with dmpublish do
begin
if adspubbook.Active then
adspubbook.Active:=false;
if not adspubbook.Active then
begin
adspubbook.commandtext:='select * from PUBLISH_BOOK where STATUS=''1''';
adspubbook.Active:=true;
end;
end;
end
else
begin
MSG('加入外码出错,请检查数据库!','W');
end;
end;
//窗体显示
procedure TfPBookInfo_update.FormShow(Sender: TObject);
begin
//置控件状态为无效
SetStatus(false);
SetPstatus(false);
//置按钮状态为有效
SetBStatus(true);
//重新查询一遍
dmpublish.adspubbook.Requery();
end;
procedure TfPBookInfo_update.SetBStatus(status: boolean);
begin
UpdateBtn.Enabled:=status;
ExitBtn.Enabled:=status;
Applybtn.Enabled:=not status;
CancelBtn.Enabled:=not status;
end;
procedure TfPBookInfo_update.SEtPstatus(status: boolean);
begin
P_ID.Visible:=not Status;
dcbxPro_ID.Visible:=not Status;
dcbxPro_ID.Enabled:=status;
P_name.Visible:=status;
cbxPro_name.Visible:=status;
cbxPro_Name.Enabled:=status;
end;
procedure TfPBookInfo_update.SetStatus(status: boolean);
begin
dcbxMType.Enabled:=status;
dcbxType.Enabled:=status;
dcbxZaiti.Enabled:=status;
dedtAQty.Enabled:=status;
dedtBarcode.Enabled:=status;
dedtCnname.Enabled:=status;
dedtCode.Enabled:=status;
dedtEnname.Enabled:=status;
dedtGEtID.Enabled:=status;
dedtInp.Enabled:=status;
dedtisbn.Enabled:=status;
dedtpage.Enabled:=status;
dedtprice.Enabled:=status;
dedtqty.Enabled:=status;
dedtinfo.Enabled:=status;
dedtDID.Enabled:=status;
end;
{ TODO : 修改 }
procedure TfPBookInfo_update.UpdateBtnClick(Sender: TObject);
begin
if dmpublish.adspubbook.RecordCount <= 0 then
MSG('数据库为空,修改操作取消!','E')
else
begin
//置按钮状态为无效
SetBStatus(false);
{ TODO : 除了条形码,书名和价格,馆藏数量不能改,其他的信息都能改动 }
setStatus(true);
SetPStatus(true);
dedtbarcode.Enabled:=false;
dedtcnname.Enabled:=false;
dedtprice.Enabled:=false;
dedtqty.Enabled:=false;
dmpublish.adspubbook.Edit;
cbxpro_name.ItemIndex:=dcbxpro_id.Items.IndexOf(trim(dcbxpro_id.Text));
dcbxtype.SetFocus;
end;
end;
procedure TfPBookInfo_update.CancelBtnClick(Sender: TObject);
begin
if Msg('确定要取消操作吗?','Q')then
begin
dmpublish.adspubbook.CancelUpdates;
formshow(fPBookInfo_update);
end;
end;
function TfPBookInfo_update.check: Boolean;
begin
Result:=True;
if trim(dedtBarcode.Text)='' then
result:=false;
if trim(dedtCnName.Text)='' then
result:=false;
if trim(dedtPrice.Text)='' then
result:=false;
if trim(dcbxType.Text)='' then
result:=false;
if trim(dedtQty.Text)='' then
result:=false;
if trim(dedtAQty.Text)='' then
result:=false;
if trim(dcbxMType.Text)='' then
result:=false;
if trim(dcbxZaiti.Text)='' then
result:=false;
if trim(cbxPro_name.Text)='' then
result:=false;
end;
procedure TfPBookInfo_update.ApplyBtnClick(Sender: TObject);
begin
//检查输入记录是否完整
if check() then
begin
//取数据库时间
with dmpublish.l_store do
begin
procedurename:='geddate;1';
parameters.Clear;
parameters.CreateParameter('@out',ftDatetime,pdoutput,0,Unassigned);
Prepared;
execproc;
if parameters[0].Value<>null then
begin
dtxtDate.Field.AsString:=FormatDateTime('YYYY-MM-DD',parameters[0].Value);
end
else
dtxtDate.Field.AsString:=FormatDateTime('YYYY-MM-DD',Now());
end;
dtxtOpe.Field.AsString:=Ope;
{ TODO : 如果书籍类型为标准,保存时isbn为空,则用标准号代替isbn }
if (trim(dcbxtype.Text)='标准') and (trim(dedtisbn.Text)='') then
dedtisbn.Field.asstring:=dedtcode.Field.AsString;
{ TODO : 保存记录 }
try
dmpublish.adspubbook.UpdateBatch(); //保存
MSG('记录修改成功!','I');
formshow(fPBookInfo_update);
except
MSG('操作出错,记录修改失败!','W');
dmpublish.adspubbook.CancelUpdates;
formshow(fPBookInfo_update);
end;
end
else
begin
MSG('信息录入不全,请检查后再保存!','W');
end;
end;
procedure TfPBookInfo_update.dcbxTypeExit(Sender: TObject);
begin
if trim(dcbxtype.Text)<>'' then
begin
if dcbxtype.Items.IndexOf(trim(dcbxtype.Text))<>-1 then
else
begin
MSG('输入的文献类型不存在,请重新输入!','E');
dcbxtype.SetFocus;
end;
end;
end;
procedure TfPBookInfo_update.dedtCodeExit(Sender: TObject);
begin
if (trim(dedtcode.Text)='') and (trim(dcbxtype.Text)='标准') then
begin
MSG('当文献类型为”标准“时,标准号不能为空!','E');
dedtcode.SetFocus;
end;
end;
procedure TfPBookInfo_update.dcbxMTypeExit(Sender: TObject);
begin
if trim(dcbxMType.Text)<>'' then
begin
if dcbxMType.Items.IndexOf(trim(dcbxMType.Text))<>-1 then
else
begin
MSG('输入的币种不存在,请重新输入!','E');
dcbxMType.SetFocus;
end;
end;
end;
procedure TfPBookInfo_update.dcbxZaitiExit(Sender: TObject);
begin
if trim(dcbxZaiti.Text)<>'' then
begin
if dcbxZaiti.Items.IndexOf(trim(dcbxZaiti.Text))<>-1 then
else
begin
MSG('输入的载体不存在,请重新输入!','E');
dcbxZaiti.SetFocus;
end;
end;
end;
procedure TfPBookInfo_update.cbxPro_nameChange(Sender: TObject);
begin
if cbxpro_name.ItemIndex<>-1 then
begin
dcbxpro_id.ItemIndex:=cbxpro_name.ItemIndex;
dcbxpro_id.Field.AsString:=dcbxpro_id.Text;
end;
end;
procedure TfPBookInfo_update.cbxPro_nameExit(Sender: TObject);
begin
if trim(cbxpro_name.Text)<>'' then
begin
if cbxpro_name.Items.IndexOf(trim(cbxpro_name.Text))<>-1 then
begin
dcbxpro_id.ItemIndex:=cbxpro_name.ItemIndex;
dcbxpro_id.Field.AsString:=dcbxpro_id.Text;
end
else
begin
MSG('输入的供应商名称不存在,请重新输入!','E');
// cbxpro_name.Text:='';
cbxpro_name.SetFocus;
end;
end;
end;
procedure TfPBookInfo_update.dcbxTypeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_RETURN)
then SelectNext(ActiveControl, True, True);
end;
procedure TfPBookInfo_update.dchkbxStatus1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
applybtn.SetFocus;
end;
procedure TfPBookInfo_update.DeleteBtnClick(Sender: TObject);
begin
if dmpublish.adspubbook.RecordCount <= 0 then
MSG('数据库为空,删除操作取消!','E')
else
begin
if MSG('确定要删除该记录吗?','Q') then
begin
try
dmpublish.adspubbook.Edit;
dmpublish.adspubbook.FieldByName('status').AsString:='0';
dmpublish.adspubbook.Post;
MSG('删除该记录成功!','I');
formshow(fPBookInfo_update);
except
MSG('操作出错,记录删除失败!','E');
formshow(fPBookInfo_update);
end;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -