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

📄 untbatchmanager.pas

📁 适合行业为眼镜业
💻 PAS
字号:
unit Untbatchmanager;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, fm_Base, Grids, DBGrids, ExtCtrls, StdCtrls, Buttons, DB,
  DBClient;

type
  TfmBatchmanager = class(TfmBase)
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    Panel2: TPanel;
    StringGrid1: TStringGrid;
    btnAdd: TBitBtn;
    btnEdit: TBitBtn;
    btnDelete: TBitBtn;
    btnExit: TBitBtn;
    Panel3: TPanel;
    Label1: TLabel;
    Cmbmanager: TComboBox;
    Label2: TLabel;
    edtremark: TLabeledEdit;
    dsview: TDataSource;
    cdsview: TClientDataSet;
    cmb_no: TComboBox;
    btnSave: TBitBtn;
    cdsbase: TClientDataSet;
    procedure btnExitClick(Sender: TObject);
    procedure CmbmanagerChange(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnEditClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure StringGrid1DblClick(Sender: TObject);
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure FormShow(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
    pcol,prow:integer;
    procedure forminit;
    procedure Model(bl:Boolean);
    procedure iniredata;
    procedure readdata;
    procedure deleted;
  public
    { Public declarations }
  end;

var
  fmBatchmanager: TfmBatchmanager;

implementation

uses untdatadm, func, Unt_PubStrGrid;

{$R *.dfm}
///////////////////////////
procedure tfmBatchmanager.forminit;
begin
  stringgrid1.Cells[0,0]:='序号';
  stringgrid1.Cells[1,0]:='仓库编号';
  stringgrid1.Cells[2,0]:='仓库名称';
  stringgrid1.Cells[3,0]:='所属地区';
  stringgrid1.ColWidths[0]:=30;
  stringgrid1.ColWidths[1]:=90;
  stringgrid1.ColWidths[2]:=100;
  stringgrid1.ColWidths[3]:=80;
  model(true);
  iniredata;
  readdata;
end;
procedure tfmBatchmanager.Model(bl:Boolean);
var
  i:Integer;
begin
  btnAdd.Enabled:=bl;
  btnEdit.Enabled:=bl;
  if bl then
  begin
    btnDelete.Caption:='删除';
  end else
  begin
    btnDelete.Caption:='取消';
  end;
  btnSave.Enabled:=not bl;
end;
procedure tfmBatchmanager.iniredata;
var
  sql:widestring;
  i:integer;
begin
  sql:='select storage_no,storage_name from storage where storage_type='+''''+'配送中心'+''''+' or storage_type='+''''+'地区级仓库'+'''';
  cdsbase.Close;
  cdsbase.Data:=null;
  try
  cdsbase.Data:=adisp.execSql(sql);
  except
  end;
  cmbmanager.Clear;
  for i:=1 to cdsbase.RecordCount do
  begin
    cmbmanager.Items.Add(cdsbase.fieldbyname('storage_name').AsString);
    cmb_no.Items.Add(cdsbase.fieldbyname('storage_no').AsString);
    cdsbase.Next;
  end;
  cmbmanager.ItemIndex:=0;
  cmb_no.ItemIndex:=0;
  cdsbase.Data:=null;
end;
procedure TfmBatchmanager.readdata;
var
  sql:widestring;
  i:integer;
begin
  for i:=1 to stringgrid1.RowCount-1 do
  begin
    stringgrid1.Rows[i].Clear;
  end;
  stringgrid1.RowCount:=2;
  sql:='select storage_no,storage_name,area_no from storage  where  not storage_no  in ('+' select storageid from stock_manager where managerid='+''''+trim(cmb_no.Text)+''''+')';
  cdsview.Close;
  cdsview.Data:=null;
  try
  cdsview.Data:=adisp.execSql(sql);
  cdsview.Open;
  sql:=' select * from stock_manager where managerid='+''''+trim(cmb_no.Text)+'''';
  cdsbase.Close;
  cdsbase.Data:=null;
  cdsbase.Data:=adisp.execSql(sql);
  if cdsbase.RecordCount>0 then
  begin
    stringgrid1.RowCount:= cdsbase.RecordCount+1;
    for i:=1 to cdsbase.RecordCount do
    begin
      stringgrid1.Cells[0,i]:=inttostr(i);
      stringgrid1.Cells[1,i]:=trim(cdsbase.fieldbyname('storageid').AsString);
      stringgrid1.Cells[2,i]:=trim(cdsbase.fieldbyname('storagename').AsString);
      stringgrid1.Cells[3,i]:=trim(cdsbase.fieldbyname('area_no').AsString);
      cdsbase.Next;
    end;
    cdsbase.data:=null;
  end;
  except
    application.MessageBox('服务器发生故障!',pchar(application.Title),mb_iconwarning);
    exit;
  end;
end;
procedure  TfmBatchmanager.deleted;
var
  sql:widestring;
begin
  sql:='delete from stock_manager where managerid='+''''+trim(cmb_no.Text)+'''';
  try
  ipubtemp.scrapsate(sql);
  except
    application.MessageBox('服务器发生故障!',pchar(application.Title),mb_iconwarning);
    exit;
  end;
end;
///////////////////////
procedure TfmBatchmanager.btnExitClick(Sender: TObject);
begin
  inherited;
  close;
end;

procedure TfmBatchmanager.CmbmanagerChange(Sender: TObject);
begin
  inherited;
  cmb_no.ItemIndex:=cmbmanager.ItemIndex;
  readdata;
end;

procedure TfmBatchmanager.btnDeleteClick(Sender: TObject);
var
  i:integer;
begin
  inherited;
  if trim(btnDelete.Caption)='取消' then
  begin
    readdata;
    model(true);
  end else
  begin
    deleted;
    for i:=1 to stringgrid1.RowCount-1 do
    begin
      cdsview.Append;
     cdsview.fieldbyname('storage_no').AsString:=stringgrid1.Cells[1,i];
     cdsview.fieldbyname('storage_name').AsString:=stringgrid1.Cells[2,i];
     cdsview.fieldbyname('area_no').AsString:=stringgrid1.Cells[3,i];
     stringgrid1.Rows[i].Clear;
     cdsview.Post;
    end;
    stringgrid1.RowCount:=2;
  end;
end;

procedure TfmBatchmanager.btnAddClick(Sender: TObject);
begin
  inherited;
  model(false);

end;

procedure TfmBatchmanager.btnEditClick(Sender: TObject);
begin
  inherited;
  model(false);
end;

procedure TfmBatchmanager.btnSaveClick(Sender: TObject);
var
  i:integer;
  exesql:widestring;
begin
  inherited;
  for i:=1 to stringgrid1.RowCount-1 do
  begin
    if stringgrid1.Cells[1,i]='' then
    begin
      application.MessageBox('请选择管辖仓库!',pchar(application.Title),mb_iconinformation);
      stringgrid1.SetFocus;
      exit;
    end;
  end;
  deleted;
  for i:=1 to stringgrid1.RowCount-1 do
  begin
    exesql:='insert into stock_manager (managerid,storageid,managername,storagename,area_no) values ('+''''+trim(cmb_no.Text)+''''+','+''''+trim(stringgrid1.Cells[1,i])+''''+','+''''+trim(cmbmanager.Text)+''''+','+''''+trim(stringgrid1.Cells[2,i])+''''+','+''''+trim(stringgrid1.Cells[3,i])+''''+')';
    try
      ipubtemp.scrapsate(exesql);
    except
      application.MessageBox('服务器发生故障!',pchar(application.Title),mb_iconwarning);
    exit;
    end;
  end;
  application.MessageBox('设置成功!',pchar(application.Title),mb_iconinformation);
  model(true);
end;

procedure TfmBatchmanager.DBGrid1DblClick(Sender: TObject);
var
  p:integer;
begin
  inherited;
  if not btnsave.Enabled then exit;
  if application.MessageBox('是否确定选中仓库为被配送管辖仓库?',pchar(application.Title),mb_iconinformation+mb_yesno)=idyes then
  begin
    p:= stringgrid1.RowCount;
    if trim(stringgrid1.Cells[1,1])<>'' then
    begin
      stringgrid1.RowCount := stringgrid1.RowCount+1;
      stringgrid1.Cells[0,stringgrid1.RowCount-1]:=inttostr(stringgrid1.RowCount-1);
      stringgrid1.Cells[1,stringgrid1.RowCount-1]:=trim(cdsview.fieldbyname('storage_no').AsString);
      stringgrid1.Cells[2,stringgrid1.RowCount-1]:=trim(cdsview.fieldbyname('storage_name').AsString);
      stringgrid1.Cells[3,stringgrid1.RowCount-1]:=trim(cdsview.fieldbyname('area_no').AsString);
    end else
    begin
      stringgrid1.Cells[0,p-1]:=inttostr(p-1);
      stringgrid1.Cells[1,p-1]:=trim(cdsview.fieldbyname('storage_no').AsString);
      stringgrid1.Cells[2,p-1]:=trim(cdsview.fieldbyname('storage_name').AsString);
      stringgrid1.Cells[3,p-1]:=trim(cdsview.fieldbyname('area_no').AsString);
    end;
    cdsview.Delete;
    dbgrid1.Refresh;
  end;
end;

procedure TfmBatchmanager.StringGrid1DblClick(Sender: TObject);
begin
  inherited;
  if not btnsave.Enabled then exit;
  if application.MessageBox('是否取消选中仓库为被配送管辖仓库?',pchar(application.Title),mb_iconinformation+mb_yesno)=idyes then
  begin
    cdsview.Append;
    cdsview.fieldbyname('storage_no').AsString:=stringgrid1.Cells[1,prow];
    cdsview.fieldbyname('storage_name').AsString:=stringgrid1.Cells[2,prow];
    cdsview.fieldbyname('area_no').AsString:=stringgrid1.Cells[3,prow];
    cdsview.Post;
    deletegridrows(stringgrid1,prow);
    dbgrid1.Refresh;
  end;
end;

procedure TfmBatchmanager.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  inherited;
  pcol:=acol;
  prow:=arow;
end;

procedure TfmBatchmanager.FormShow(Sender: TObject);
begin
  inherited;
  forminit;
end;

procedure TfmBatchmanager.StringGrid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  s:string;
  r:TRect;
begin
  inherited;
  with Sender as Tstringgrid do
  begin
  if gdSelected in State then
  Canvas.Brush.Color:= clTeal;  //clBlue; //clyellow;//clRed;
  Canvas.TextRect(Rect,Rect.Left,Rect.Top,' '+Cells[ACol,ARow]);
  if gdFocused in State then
  Canvas.DrawFocusRect(Rect);
  end;

//不但水平居中,还垂直居中
  with Sender as Tstringgrid do
  begin
    Canvas.FillRect(Rect);
    s:=Cells[ACol,ARow];
    r:=Rect;
    DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
  end;
end;

end.

⌨️ 快捷键说明

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