⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.pas

📁 本图书管理系统一sql server为数据库开发平台
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  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 + -