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

📄 select_goods.pas

📁 商场管理系统源码 一套值得初学者学习的源码包含全部源码,控件
💻 PAS
字号:
unit SELECT_GOODS;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  SELECT_TEMPLET, Grids, Buttons, ExtCtrls, Db, DBTables,stdctrls,myself,
  ComCtrls, MenuBar, ToolWin;

type
  TFrm_select_goods = class(TFrm_select_templet)
    Query_basemess: TQuery;
    Label2: TLabel;
    CB_NAME: TComboBox;
    Panel2: TPanel;
    Label1: TLabel;
    SB_next: TSpeedButton;
    E_find: TEdit;
    Query_data: TQuery;
    procedure FormCreate(Sender: TObject);
    procedure SG_dataSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure SG_dataDblClick(Sender: TObject);
    procedure E_findChange(Sender: TObject);
    procedure SB_nextClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure E_findKeyPress(Sender: TObject; var Key: Char);
    procedure User_addlist(S_name:string);
    procedure CB_NAMEChange(Sender: TObject);
    procedure SB_addClick(Sender: TObject);
    procedure SB_PRINTClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frm_select_goods: TFrm_select_goods;

implementation

uses EDIT_goods, frmmain;

{$R *.DFM}

procedure TFrm_select_goods.FormCreate(Sender: TObject);
var
   I_temp:integer;
   B_find:Boolean;
begin
  inherited;
   self.Caption :=Application.Title +' - 产品列表';
   Query_basemess.DatabaseName :=HWSHOPDATA;
   query_data.DatabaseName :=HWSHOPDATA;
   with sg_data do
   begin
      colcount:=8;
      colwidths[0]:=width*8 div 100;
      colwidths[1]:=width*25 div 100;
      colwidths[2]:=width*25 div 100;
      colwidths[3]:=width*25 div 100;
      colwidths[4]:=width*25 div 100;
      colwidths[5]:=width*15 div 100;
      colwidths[6]:=width*15 div 100;
      colwidths[7]:=width*25 div 100;
      cols[0].Text :='序号';
      cols[1].text :='产品编码';
      cols[2].text :='产品名称';
      cols[3].text :='产品型号';
      cols[4].text :='最近单价';
      cols[5].text :='提成';
      cols[6].text :='单位';
      cols[7].text :='备注';
   end;
   with query_data do
   begin
      close;
      sql.Clear ;
      sql.text:='select * from goodsmessage order by name';
      open;
      CB_NAME.Items.add('所有商品');
      while not eof do
      begin
         B_find:=false;
         for I_temp:=0 to CB_NAME.items.Count-1 do
         begin
           if CB_NAME.Items[I_temp]=fieldbyname('name').asstring then
             B_find:=true;          //找到相同名称
         end;
         if not B_find then        //没有找到时增加
           CB_NAME.Items.add(fieldbyname('name').asstring);
         next;
      end;
      close;
   end;
   User_addlist('所有商品');
end;

procedure TFrm_select_goods.SG_dataSelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  inherited;
   if sg_data.Cells[1,arow]='' then
      canselect:=false
   else
      e_find.SetFocus ;
end;

procedure TFrm_select_goods.SG_dataDblClick(Sender: TObject);
begin
  inherited;
   ModalResult := mrOK;
end;

procedure TFrm_select_goods.E_findChange(Sender: TObject);
var
   I_line:integer;
   S_source,S_find:string;
begin
  inherited;
   if trim(e_find.text)='' then
   begin
      if sg_data.RowCount >1 then
         sg_data.Row :=1
      else
         sg_data.Row :=0;
   end
   else
   begin
      S_find:=uppercase(trim(e_find.Text ));
      for I_line:=1 to sg_data.RowCount - 1 do
         begin
            S_SOURCE:='';
            S_source:=uppercase(trim(sg_data.cells[1,I_line]+sg_data.cells[2,I_line]+sg_data.cells[3,I_line]));
            if (strpos(pchar(getstringpy(s_source)),pchar(S_find))<>nil) or
               (strpos(pchar(s_source),pchar(s_find))<>nil) then
            begin
               sg_data.row :=I_line;
               exit;
            end;
         end;
      messagedlg('所有商品信息中没有找到含“'+e_find.text+'”字符的记录!',mtwarning,[mbok],0);
      e_find.Text:='';
   end;
end;

procedure TFrm_select_goods.SB_nextClick(Sender: TObject);
var
   I_line:integer;
   S_source,S_find:string;
begin
  inherited;
   if sg_data.RowCount <1 then
      exit;
   if trim(e_find.text)='' then
   begin
      if sg_data.row <sg_data.RowCount -1 then
         sg_data.Row :=sg_data.Row +1
      else
         sg_data.Row :=1;
   end
   else
   begin
      if sg_data.Row =sg_data.RowCount -1 then
         sg_data.Row :=1;
      S_find:=uppercase(trim(e_find.Text ));
      for I_line:=sg_data.Row+1  to sg_data.RowCount - 1 do
         begin
            S_SOURCE:='';
            S_source:=uppercase(trim(sg_data.cells[1,I_line]+sg_data.cells[2,I_line]+sg_data.cells[3,I_line]));
            if (strpos(pchar(getstringpy(s_source)),pchar(S_find))<>nil) or
               (strpos(pchar(s_source),pchar(s_find))<>nil) then
            begin
               sg_data.row :=I_line;
               exit;
            end;
         end;
      messagedlg('没有再找到含“'+e_find.text+'”字符的记录!',mtwarning,[mbok],0);
      sg_data.Row :=sg_data.RowCount -1;
   end;

end;

procedure TFrm_select_goods.FormShow(Sender: TObject);
begin
  inherited;
   SB_PRINT.Enabled :=Checkrights(USERRIGHTS,'编辑');
   SB_ADD.Enabled :=Checkrights(USERRIGHTS,'增加');
   E_find.SetFocus ;
end;

procedure TFrm_select_goods.E_findKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
   if word(key)=13 then sb_select.Click ;
end;

procedure Tfrm_select_goods.User_addlist(S_name:string);
var
   I_lines:integer;
begin
   for I_lines:=1 to sg_data.RowCount do
   begin
      sg_data.Rows[I_lines].Clear ;
   end;
   //增加查找列表
   with query_basemess do
   begin
      close;
      if (s_name='所有商品') or (trim(s_name)='') then
         sql.text:='select * from goodsmessage order by name'
      else
         sql.text:='select * from goodsmessage where name="'+s_name+'" order by name';
      open;
      if recordcount>0 then
         sg_data.rowcount:=recordcount+1
      else
         sg_data.RowCount :=2;
      first;
      I_lines:=1;
      while not eof do
      begin
         sg_data.Cells[0,I_lines]:=inttostr(I_lines);
         sg_data.cells[1,I_lines]:=fieldbyname('id').asstring;
         sg_data.cells[2,I_lines]:=fieldbyname('name').asstring;
         sg_data.Cells[3,I_lines]:=fieldbyname('type').asstring;
         sg_data.Cells[4,I_lines]:=fieldbyname('price').asstring;
         sg_data.Cells[5,I_lines]:=fieldbyname('sellprice').asstring;
         sg_data.Cells[6,I_lines]:=fieldbyname('unit').asstring;
         sg_data.Cells[7,I_lines]:=fieldbyname('memo').asstring;
         I_lines:=I_lines+1;
         next;
      end;
      close;
   end;
   sg_data.Row :=1;
   if sg_data.RowCount >1 then
      sg_data.FixedRows :=1
   else
      sg_data.FixedRows :=0;
end;

procedure TFrm_select_goods.CB_NAMEChange(Sender: TObject);
begin
  inherited;
   User_addlist(cb_name.Text );
end;

procedure TFrm_select_goods.SB_addClick(Sender: TObject);
var
   I_temp:integer;
   B_find:Boolean;
begin
  inherited;
  Application.CreateForm(TFrm_edit_goods, Frm_edit_goods);
  Frm_edit_goods.E_name.Text :=SG_data.Cells[2,SG_data.Row];
  frm_edit_goods.Caption :='商品信息(增加)';
  Frm_edit_goods.P_state :=0;
  Frm_edit_goods.showmodal;
   with query_data do
   begin
      close;
      sql.Clear ;
      sql.text:='select * from goodsmessage order by name';
      open;
      CB_NAME.Items.add('所有商品');
      while not eof do
      begin
         B_find:=false;
         for I_temp:=0 to CB_NAME.items.Count-1 do
         begin
           if CB_NAME.Items[I_temp]=fieldbyname('name').asstring then
             B_find:=true;          //找到相同名称
         end;
         if not B_find then        //没有找到时增加
           CB_NAME.Items.add(fieldbyname('name').asstring);
         next;
      end;
      close;
   end;
  Frm_edit_goods.free;
  CB_NAMEChange(self);
end;

procedure TFrm_select_goods.SB_PRINTClick(Sender: TObject);
var
   I_temp:integer;
   B_find:Boolean;
begin
  inherited;
  if SG_data.Cells[1,1]='' then exit;
  Application.CreateForm(TFrm_edit_GOODS, Frm_edit_goods);
  frm_edit_goods.Caption :='商品信息(编辑)';
  frm_edit_goods.P_state :=1;
  with Frm_edit_goods do
  begin
     P_state:=1;
     e_id.Text :=SG_data.Cells[1,SG_data.Row];
     e_name.Text :=SG_data.Cells[2,SG_data.Row];
     e_type.text :=SG_data.Cells[3,SG_data.Row];
     e_price.Text :=sg_data.cells[4,sg_data.Row];
     e_sellprice.Text :=sg_data.cells[5,sg_data.Row];
     e_unit.Text :=SG_data.Cells[6,SG_data.Row];
     e_memo.Text :=SG_data.Cells[7,SG_data.Row];
  end;
  Frm_edit_goods.showmodal;
   with query_data do
   begin
      close;
      sql.Clear ;
      sql.text:='select * from goodsmessage order by name';
      open;
      CB_NAME.Items.add('所有商品');
      while not eof do
      begin
         B_find:=false;
         for I_temp:=0 to CB_NAME.items.Count-1 do
         begin
           if CB_NAME.Items[I_temp]=fieldbyname('name').asstring then
             B_find:=true;          //找到相同名称
         end;
         if not B_find then        //没有找到时增加
           CB_NAME.Items.add(fieldbyname('name').asstring);
         next;
      end;
      close;
   end;
  Frm_edit_goods.free;
  CB_NAMEChange(self);
end;

procedure TFrm_select_goods.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
   Query_basemess.Free ;
   query_data.Free ;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -