📄 mainform.pas
字号:
format.ShortDateFormat:='时间:yyyy年mm月d日 周ddd ampm h点n分ss ';
format.TwoDigitYearCenturyWindow:=0;
format.ShortDayNames[2]:='一';
format.ShortDayNames[3]:='二';
format.ShortDayNames[4]:='三';
format.ShortDayNames[5]:='四';
format.ShortDayNames[6]:='五';
format.ShortDayNames[7]:='六';
format.ShortDayNames[1]:='日';
try
mainsetini:=Tinifile.Create(dir+'\system.ini');
if mainsetini.ReadInteger('showpage','value',1) = 1 then
n42.Checked:=true
else n42.checked:=false;
except
myshowmessage('system.ini文件丢失!!');
end;
BTBRound:=TBITMAP.Create;
BTBRound.LoadFromFile(self.dir+'\Bround.bmp');
userPurview.username:='';
panel3.Width:=5;
end;
procedure TMain.FormDestroy(Sender: TObject);
begin
titlebmp.Free;
textbmp.Free;
SmallBtnbmp.Free;
maskbmp.Free;
closebtnbmp.free;
quessbtnbmp.Free;
menubmp.Free;
pagebmp.Free;
toolbarbmp.Free;
pagebmp2.Free;
BTBround.Free;
freelibrary(resource);
end;
procedure TMain.N41Click(Sender: TObject);
begin
main.Close;
end;
procedure TMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if not MyShowmessage(pchar(#13+'真的要离开本系统吗?')) then
canclose:=false
else
begin
if label3.Caption <> '' then
begin
dropselltemptable;
end;
if label9.Caption <> '' then
begin
droplendtemptable;
end;
if label7.Caption <>'' then
begin
dropbacktemptable;
end;
end;
end;
procedure TMain.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
pen,oldpen:Hpen;
dc1:hdc;
oldbrush,br1:HBRUSH;
oldfont,newfont:HFont;
LogFontS:taglogfonta;
lb:LOGBRUSH;
// rectyellow:Trect;
i:integer;
strcaption:string;
begin
//setup charfont
logfonts.lfHeight:=18;
logfonts.lfWidth:=0;
logfonts.lfWeight:=1;
logfonts.lfUnderline:=0;
logfonts.lfStrikeOut:=0;
logfonts.lfItalic:=0;
logfonts.lfEscapement:=0;
logfonts.lfOrientation:=0;
logfonts.lfFaceName:='楷体_GB2312';
logfonts.lfCharSet:=gb2312_charset;
//setup charfont end
newfont:=createfontindirect(logfonts);
lb.lbStyle:=BS_SOLID; //setup Brush
lb.lbColor:=rgb(244,243,238);//$F6f6f2;
lb.lbHatch:=HS_BDIAGONAL;
br1:=createbrushindirect(lb);
dc1:=getwindowdc(Control.Handle);
pen:=createpen(PS_SOLID,1,rgb(145,155,156));//$919b9c);
oldbrush:=selectobject(dc1,br1);
oldpen:=selectobject(dc1,pen);
oldfont:=selectobject(dc1,newfont);
//chang log end;
if active then
begin
stretchblt(dc1,rect.Left,rect.Top,Tpagecontrol(control).TabHeight,Tpagecontrol(control).TabWidth,pagebmp.Canvas.Handle,0,0,Tpagecontrol(control).TabHeight,Tpagecontrol(control).TabWidth,srccopy);
for i:=0 to strlen(pchar(Tpagecontrol(control).pages[tabindex].caption))div 2 -1 do
begin
strcaption:=copy(Tpagecontrol(control).pages[tabindex].caption,i*2+1,2);
settextcolor(dc1,clblack);//rgb(20,30,210));
setbkmode(dc1,TRANSPARENT);
textout(dc1,rect.Left+4,rect.Top+4+i*15,pchar(strcaption),2);
strcaption:='';
end;
end
else
begin
stretchblt(dc1,rect.Left,rect.Top,Tpagecontrol(control).TabHeight,Tpagecontrol(control).TabWidth,pagebmp2.Canvas.Handle,0,0,Tpagecontrol(control).TabHeight,Tpagecontrol(control).TabWidth,srccopy);
for i:=0 to strlen(pchar(Tpagecontrol(control).pages[tabindex].caption))div 2 -1 do
begin
strcaption:=copy(Tpagecontrol(control).pages[tabindex].caption,i*2+1,2);
SetBkMode(dc1,TRANSPARENT);
settextcolor(dc1,rgb(170,170,170));
textout(dc1,rect.Left+2,rect.Top+4+i*15,pchar(strcaption),2);
strcaption:='';
end;
end;
selectobject(dc1,oldpen);
selectobject(dc1,oldbrush);
selectobject(dc1,oldfont);
deleteObject(pen);
deleteObject(br1);
deleteobject(newfont);
releasedc(Control.Handle,dc1);
end;
procedure TMain.ToolBar1AdvancedCustomDraw(Sender: TToolBar;
const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
begin
StretchBlt(TToolbar(sender).Canvas.Handle,arect.Left,arect.Top,arect.Right,arect.Bottom,toolbarbmp.Canvas.Handle,0,0,toolbarbmp.Width,toolbarbmp.Height,srccopy);
end;
procedure TMain.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',char(VK_Back),#13]) then
key:=#0;
if (key=#13) and (trim(edit1.Text)<>'')then
begin
with data.publicQuery do
begin
Close;
sql.Clear;
sql.Add('select * from booksave where barcode=:barcode');
Parameters.ParamByName('barcode').Value:=edit1.Text;
open;
if RecordCount<1 then
begin
myshowmessage(#13+'对不起没有该商品!');
exit;
end;
Close;
sql.Clear;
sql.Add('select * from booksave where barcode=:barcode');
Parameters.ParamByName('barcode').Value:=edit1.Text;
open;
if fieldbyname('SumInStore').AsInteger < strtoint(edit6.Text) then
begin
myshowmessage('对不起!!该书库存已经不足!!');
exit;
end;
edit4.Text:=fieldbyname('Bookname').AsString;
edit5.Text:=floattostr(fieldbyname('Price').AsFloat);
if (Trim(edit3.Text)='') then
edit7.Text:='0'
else
if (trim(edit6.Text)='') then
edit7.Text:=floattostr(strtofloat(edit5.Text)*(strtofloat(edit3.text)/10))
else
edit7.Text:=floattostr(strtofloat(edit5.Text)*strtoint(edit6.Text)*(strtofloat(edit3.text)/10));
if label3.Caption='' then
begin
repeat //create temp table
label3.Caption:=codecreate(data.PublicQuery,'xs','SellRecord');
close;
sql.Clear;
sql.Add('select * from sysobjects where name=:name');
parameters.ParamByName('name').Value:=label3.Caption;
open;
until (recordcount<1);
close;
sql.Clear;
sql.Add('create table '+label3.Caption);
sql.Add(' ([Barcode] [varchar] (20),');
sql.Add('[BookName] [varchar] (30),');
sql.Add('[Price] [numeric](6, 2) ,[sellcount] [int],');
sql.Add('[rebate] [numeric](5, 2) ,[PriceSum] [numeric](18, 2),');
sql.Add('[Memo] [varchar] (255))');
execsql; //create temp table
end;
try
close;
sql.Clear;
sql.Add('select * from '+label3.Caption+' where barcode=:barcode');
parameters.ParamByName('Barcode').Value:=edit1.Text;
open;
if recordcount > 0 then
begin // have has the book begin
close;
sql.Clear;
sql.Add('update '+label3.Caption+' set sellcount=sellcount+:num where barcode=:barcode');
parameters.ParamByName('Barcode').Value:=edit1.Text;
parameters.ParamByName('num').Value:=strtoint(Edit6.Text);
execsql;
end //have has the book end
else
begin //has no boook begin
close; // insert selltemp new book
sql.Clear;
sql.Add('insert into '+label3.Caption+' values(:barcode,:Bookname,:price,:sellcount,:rebate,:PriceSum,:memo)');
parameters.ParamByName('Barcode').Value:=edit1.Text;
parameters.ParamByName('Bookname').Value:=edit4.Text;
parameters.ParamByName('price').Value:=strtofloat(edit5.Text);
if trim(edit6.Text)='' then
parameters.ParamByName('sellcount').Value:=1
else
parameters.ParamByName('sellcount').Value:=strtoint(edit6.Text);
parameters.ParamByName('rebate').value:=strtofloat(edit3.Text);
parameters.ParamByName('pricesum').value:=strtofloat(edit7.Text);
parameters.ParamByName('memo').value:='无';
execsql; // insert selltemp
end; //has no book end
tableopen(data.SellQuery,label3.Caption);
except
dropselltemptable;
end;
end; // with publicquery
// clear edit
//resetEdit;
// clear edit
edit6.SetFocus;
SetCount;
end; // if key
end;
procedure TMain.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',char(VK_Back),#13]) then
key:=#0;
if (key=#13) and (trim(edit1.Text)<>'') and (label3.Caption<>'') then
begin //if #13
with data.PublicQuery do
begin
Close;
sql.Clear;
sql.Add('select * from booksave where barcode=:barcode');
Parameters.ParamByName('barcode').Value:=edit1.Text;
open;
if fieldbyname('SumInStore').AsInteger < strtoint((Sender as Tedit).Text) then
begin
myshowmessage('对不起此书的数量已经不足!!');
(Sender as Tedit).Text:=inttostr(fieldbyname('SumInStore').AsInteger);
if (Sender as Tedit).CanFocus then
(Sender as Tedit).SetFocus;
exit;
end;
end;
with data.SellQuery do
begin //with
close;
sql.Clear;
sql.Add('update '+label3.Caption+' set sellcount=:sellcount,rebate=:rebate,pricesum=:PriceSum,Memo=:Memo ');
sql.Add(' where Barcode=:barcode');
parameters.ParamByName('Barcode').Value:=edit1.Text;
parameters.ParamByName('sellcount').Value:=strtoint(edit6.Text);
parameters.ParamByName('rebate').value:=strtofloat(edit3.Text);
parameters.ParamByName('pricesum').value:=strtofloat(edit7.Text);
parameters.ParamByName('Memo').value:=memo1.Text;
execsql;
end; // with
tableopen(data.sellquery,label3.Caption);
memo1.SetFocus;
SetCount;
end; // if #13
end;
procedure TMain.SetCount;
begin
with data.PublicQuery do
begin
close;
sql.Clear;
sql.Add('select sum(PriceSum) as summoney from '+label3.Caption);
open;
if recordcount > 0 then
label6.Caption:=floattostr(fieldbyname('summoney').asfloat)+'元';
end;
end;
procedure TMain.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',char(VK_Back),'.',#13]) then
key:=#0;
if (key=#13) and (trim(edit1.Text)<>'') then
begin
if (Trim(edit6.Text)='')or(Trim(edit3.Text)='') then
edit7.Text:=floattostr(strtofloat(edit5.Text)*strtoint(edit6.Text)*0)
else
edit7.Text:=floattostr(strtofloat(edit5.Text)*strtoint(edit6.Text)*(strtofloat(edit3.text)/10));
with data.PublicQuery do
begin //with
close;
sql.Clear;
sql.Add('update '+label3.Caption+' set sellcount=:sellcount,rebate=:rebate,pricesum=:PriceSum,Memo=:Memo ');
sql.Add(' where Barcode=:barcode');
parameters.ParamByName('Barcode').Value:=edit1.Text;
parameters.ParamByName('sellcount').Value:=strtoint(edit6.Text);
parameters.ParamByName('rebate').value:=strtofloat(edit3.Text);
parameters.ParamByName('pricesum').value:=strtofloat(edit7.Text);
parameters.ParamByName('Memo').value:=memo1.Text;
execsql;
end; // with
tableopen(data.sellquery,label3.Caption);
edit6.SetFocus;
end;
end;
procedure TMain.StaticText10MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
(sender as Tstatictext).BevelKind:=bkflat;
end;
procedure TMain.StaticText10MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
(sender as Tstatictext).BevelKind:=BKsoft;
end;
procedure TMain.DBGrid1CellClick(Column: TColumn);
begin
if data.SellQuery.Active then
begin
with data.SellQuery do
begin
edit1.Text:=fieldbyname('Barcode').AsString;
edit4.Text:=fieldbyname('Bookname').AsString;
edit3.Text:=floattostr(fieldbyname('rebate').asfloat);
edit5.Text:=floattostr(fieldbyname('price').asfloat);
edit6.Text:=inttostr(fieldbyname('sellcount').AsInteger);
edit7.Text:=floattostr(fieldbyname('pricesum').AsFloat);
memo1.Text:=fieldbyname('memo').AsString;
end;
edit3.SetFocus;
end;
end;
procedure TMain.Edit6Change(Sender: TObject);
begin
if (Trim(edit6.Text)='')or(Trim(edit3.Text)='') then
edit7.Text:='0'
else
edit7.Text:=floattostr(strtofloat(edit5.Text)*strtoint(edit6.Text)*(strtofloat(edit3.text)/10));
end;
procedure Tmain.tableopen(var query:TADOQuery;tablename:string);
begin
with query do
begin
Close;
sql.Clear;
sql.Add('select * from '+tablename);
open;
end;
end;
function Tmain.Codecreate(var query:TADOQUERY;const codeclass,table:string):string;
var
code:string;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -