📄 bookinfo.pas
字号:
unit BookInfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ToolWin,ExtCtrls,buttons, ADODB, ImgList,
ExtDlgs, MyComboBox, Mask;
type
TbookInfoForm = class(TForm)
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
ComboBox1: TComboBox;
Label4: TLabel;
Label5: TLabel;
Edit2: TEdit;
Label6: TLabel;
Edit3: TEdit;
Label7: TLabel;
Edit4: TEdit;
Label8: TLabel;
Label9: TLabel;
Edit6: TEdit;
Label10: TLabel;
Edit7: TEdit;
Label11: TLabel;
Edit8: TEdit;
Label12: TLabel;
Edit9: TEdit;
Memo1: TMemo;
Label13: TLabel;
GroupBox1: TGroupBox;
Image1: TImage;
OPDialog1: TOpenPictureDialog;
Label3: TLabel;
ComboBox4: TComboBox;
ComboBox3: TMyComboBox;
ComboBox2: TMyComboBox;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Label14: TLabel;
Label15: TLabel;
procedure CreateParams(var Params: TCreateParams); override;
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure showfield;
procedure SpeedButton2Click(Sender: TObject);
procedure setedit(value:Boolean);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure Customshowfield(const field,str:string);
procedure ComboBox1Select(Sender: TObject);
procedure ComboBox21KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox31KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox31Select(Sender: TObject);
procedure ComboBox21Select(Sender: TObject);
procedure writefield(test:boolean;fieldname:string;value:variant);
procedure imagetotable;
procedure Image1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit8KeyPress(Sender: TObject; var Key: Char);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure Edit7KeyPress(Sender: TObject; var Key: Char);
procedure Edit9KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox4KeyPress(Sender: TObject; var Key: Char);
procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
procedure MaskEdit2KeyPress(Sender: TObject; var Key: Char);
private
procedure WMPAINT1(var msg:TMESSAGE);message WM_PAINT;
procedure WMNCPAINT1(var msg:TWMNCPAINT);message WM_NCPAINT;
procedure Active1(var msg:Tmessage);message WM_ACTIVATE;
procedure WMNCLBUTTONDBLCLK1(var msg:Tmessage);message WM_NCLBUTTONDBLCLK;
{ Private declarations }
public
cbdrawdown:boolean;
titleBmp:Tbitmap;
// procedure FormCreate(Sender: TObject);
{ Public declarations }
end;
var
recordMemory:string;
imagechanged:boolean;
implementation
uses MainForm,DataModule;
{$R *.dfm}
function MyShowmessage(text:Pchar):boolean; external 'resource.dll';
procedure TbookInfoForm.WMNCLBUTTONDBLCLK1(var msg:Tmessage);
begin
//
end;
procedure TbookInfoForm.Active1(var msg:Tmessage);
begin
self.WMPAINT1(msg);
end;
procedure TbookInfoForm.CreateParams(var Params: TCreateParams);
begin
inherited;
params.Style:=params.Style-WS_SYSMENU;
end;
procedure TbookInfoForm.WMPAINT1(var msg:TMESSAGE);
begin
sendmessage(self.Handle,WM_NCPAINT,0,0);
inherited;
end;
procedure TbookInfoForm.WMNCPAINT1(var msg:TWMNCPAINT);
var
dc1:HDC;
y,frame:integer;
oldbrush:HBrush;
oldpen,pen:HPEN;
canvas:Tcanvas;
begin
canvas:=Tcanvas.Create;
dc1:=getwindowdc(Handle);
y:=GetSystemMetrics(SM_CYSIZE);
frame:=GetSystemMetrics(SM_CYSIZEFRAME);
oldbrush:=selectobject(dc1,getstockobject(null_brush));
pen:=createpen(PS_SOLID,1,rgb(155,155,155));
oldpen:=selectobject(dc1,pen);
RoundRect(dc1,0,0,Width,Height,12,12);
pen:=createpen(PS_SOLID,frame*2-5,rgb(255,255,255));
selectobject(dc1,pen);
RoundRect(dc1,2,2,Width-2,Height-2,8,10);
StretchBlt(dc1,frame,frame,Width-2*frame,y+frame div 2,titlebmp.Canvas.Handle,0,0,titlebmp.Width,titlebmp.Height,srccopy);
canvas.Handle:=dc1;
canvas.Brush.Style:=bsclear;
canvas.TextOut(frame*3,(y-frame)div 2,self.Caption);
selectobject(dc1,oldbrush);
selectobject(dc1,oldpen);
deleteObject(pen);
canvas.Handle:=0;
canvas.Free;
releasedc(Handle,dc1);
end;
procedure TbookInfoForm.FormCreate(Sender: TObject);
begin
titlebmp:=Tbitmap.Create;
titlebmp.LoadFromResourceName(main.resource,'TItle');
end;
procedure TbookInfoForm.SpeedButton1Click(Sender: TObject);
begin
setedit(true);
speedbutton1.Enabled:=false;
recordmemory:=combobox1.Text;
combobox1.Enabled:=false;
end;
procedure TbookInfoForm.SpeedButton3Click(Sender: TObject);
begin
data.PublicQuery.Close;
close;
end;
procedure Tbookinfoform.setedit(value:Boolean);
var
i:integer;
begin
for i:=0 to self.panel1.ControlCount-1 do
begin
if self.panel1.Controls[i] is Tedit then
begin
(self.panel1.Controls[i] as Tedit).Enabled:=value;
continue;
end;
end;
maskedit1.Enabled:=value;
maskedit2.Enabled:=value;
combobox4.Enabled:=value;
memo1.Enabled:=value;
end;
procedure TbookInfoForm.FormShow(Sender: TObject);
begin
combobox1.Items.Clear;
combobox2.Items.Clear;
combobox3.Items.Clear;
combobox4.Items.Clear;
with data.PublicQuery do
begin
close;
sql.Clear;
sql.Add('select * from BookKind');
open;
while not eof do
begin
combobox4.Items.Add(fieldbyname('KindName').AsString);
next;
end;
close;
sql.Clear;
sql.Add('select * from bookinfo');
open;
while not eof do
begin
combobox1.Items.Add(fieldbyname('bookID').AsString);
combobox2.Items.Add(fieldbyname('barcode').AsString);
combobox3.items.Add(fieldbyname('bookname').AsString);
next;
end;
first;
end;
showfield;
recordmemory:=combobox1.text;
setedit(false);
end;
procedure TbookInfoForm.showfield;
begin
if data.PublicQuery.Active then
with data.PublicQuery do
begin
combobox1.Text:=fieldbyname('bookid').AsString;
combobox2.Text:=fieldbyname('barcode').AsString;
combobox3.Text:=fieldbyname('bookname').AsString;
edit3.Text:=fieldbyname('AuthorNation').AsString;
maskedit1.Text:=copy(fieldbyname('PrintDate').AsString,0,4);
maskedit2.Text:=copy(fieldbyname('PrintDate').AsString,6,8);
//edit5.Text:=fieldbyname('PrintDate').AsString;
edit8.Text:=fieldbyname('CDCount').AsString;
edit7.Text:=fieldbyname('PageCount').AsString;
edit2.Text:=fieldbyname('AuthorName').AsString;
edit4.Text:=fieldbyname('Compny').AsString;
edit6.Text:=fieldbyname('Version').AsString;
edit9.Text:=fieldbyname('Place').AsString;
Combobox4.Text:=fieldbyname('kindname').AsString;
memo1.Text:=fieldbyname('Memo').AsString;
if fieldbyname('picture').IsNull then
image1.Picture.Assign(nil);
image1.Picture.Assign(fieldbyname('picture'));
end;
end;
procedure TbookInfoForm.SpeedButton2Click(Sender: TObject);
begin
if not speedbutton1.Enabled then
begin // change
speedbutton1.Enabled:=true;
if edit2.Modified then
writefield(false,'AuthorName',edit2.Text);
if edit3.Modified then
writefield(false,'AuthorNation',edit3.Text);
try
if maskedit1.Modified or maskedit2.Modified then
writefield(false,'PrintDate',maskedit1.EditText+'-'+maskedit2.EditText);
except
end;
{if edit5.Modified then
writefield(false,'PrintDate',edit5.Text);}
if edit4.Modified then
writefield(false,'Compny',edit4.Text);
if edit6.Modified then
writefield(false,'Version',edit6.Text);
if edit7.Modified then
writefield(false,'PageCount',strtoint(edit7.Text));
if edit8.Modified then
writefield(false,'CDCount',strtoint(edit8.Text));
if edit9.Modified then
writefield(false,'Place',edit9.Text);
if memo1.Modified then
writefield(false,'Memo',memo1.Text);
writefield(true,'barcode',combobox2.Text);
writefield(true,'bookname',combobox3.Text);
writefield(false,'KindName',Combobox4.Text);
if imagechanged then
imagetotable;
imagechanged:=false;
combobox1.Enabled:=true;
FormShow(self);
end; //change
end;
procedure Tbookinfoform.imagetotable;
begin
with data.PublicQuery do
begin
close;
sql.Clear;
sql.Add('update bookinfo set picture=:value where bookid=:bookid');
parameters.ParamByName('value').Assign(image1.picture);
parameters.ParamByName('bookid').Value:=recordmemory;
execsql;
end;
end;
procedure TbookInfoForm.writefield(test:boolean;fieldname:string;value:variant);
begin
with data.PublicQuery do
begin
if test then
begin
close;
sql.Clear;
sql.add('select * from bookinfo where '+fieldname+'=:value and not bookid=:bookid');
parameters.parambyname('value').value:=value;
parameters.ParamByName('bookid').Value:=recordmemory;
open;
if recordcount > 0 then
begin
myshowmessage(pchar('你所填写的字段值:'+vartostr(value)+' 与其他纪录的重复'));
exit;
end;
end;
close;
sql.Clear;
sql.Add('update bookinfo set '+fieldname+'=:value where bookid=:bookid');
parameters.ParamByName('value').Value:=value;
parameters.ParamByName('bookid').Value:=recordmemory;
execsql;
end;
end;
procedure TbookInfoForm.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
key:=#0;
end;
procedure TbookInfoForm.Customshowfield(const field,str:string);
begin
with data.PublicQuery do
begin
close;
sql.Clear;
sql.Add('select * from bookinfo where '+field+'=:value');
parameters.ParamByName('value').Value:=str;
open;
if recordcount <1 then
begin
myshowmessage('对不起!没有找到您所输入的纪录!');
end;
end;
showfield;
end;
procedure TbookInfoForm.ComboBox1Select(Sender: TObject);
begin
if speedbutton1.Enabled then
Customshowfield('bookid',(sender as TCombobox).Text);
end;
procedure TbookInfoForm.ComboBox21KeyPress(Sender: TObject; var Key: Char);
begin
if speedbutton1.Enabled then
if (key=#13) and (trim((sender as TMyCombobox).Text)<>'')then
begin
if not (sender as TMyCombobox).DroppedDown then
begin
Customshowfield('barcode',(sender as TmyCombobox).Text);
if edit3.Enabled then
edit3.SetFocus;
end;
end
else
(sender as TmyCombobox).DroppedDown:=true;
end;
procedure TbookInfoForm.ComboBox31KeyPress(Sender: TObject; var Key: Char);
begin
if speedbutton1.Enabled then
if (key=#13) and (trim((sender as TMyCombobox).Text)<>'')then
begin
if not combobox3.DroppedDown then
begin
Customshowfield('bookname',(sender as TmyCombobox).Text);
combobox2.SetFocus;
end;
end
else
combobox3.DroppedDown:=true;
end;
procedure TbookInfoForm.ComboBox31Select(Sender: TObject);
begin
if speedbutton1.Enabled then
customshowfield('bookname',(sender as TmyCombobox).Text);
end;
procedure TbookInfoForm.ComboBox21Select(Sender: TObject);
begin
if speedbutton1.Enabled then
Customshowfield('barcode',(sender as TmyCombobox).Text);
end;
procedure TbookInfoForm.Image1Click(Sender: TObject);
begin
if not speedbutton1.Enabled then
if opdialog1.Execute then
begin
imagechanged:=true;
image1.Picture.LoadFromFile(opdialog1.Filename);
end;
end;
procedure TbookInfoForm.SpeedButton4Click(Sender: TObject);
begin
setedit(false);
imagechanged:=false;
showfield;
combobox1.Enabled:=true;
speedbutton1.Enabled:=true;
end;
procedure TbookInfoForm.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
edit2.SetFocus;
end;
procedure TbookInfoForm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
maskedit1.SetFocus;
end;
procedure TbookInfoForm.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
edit4.SetFocus;
end;
procedure TbookInfoForm.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
edit8.SetFocus;
end;
procedure TbookInfoForm.Edit8KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
edit6.SetFocus;
end;
procedure TbookInfoForm.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
edit7.SetFocus;
end;
procedure TbookInfoForm.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
edit9.SetFocus;
end;
procedure TbookInfoForm.Edit9KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
combobox4.SetFocus;
end;
procedure TbookInfoForm.ComboBox4KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
memo1.SetFocus
else
key:=#0;
end;
procedure TbookInfoForm.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
maskedit2.SetFocus;
end;
procedure TbookInfoForm.MaskEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
Edit4.SetFocus;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -