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

📄 hwseldatab.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit HwSelDataB;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, dxtree, ComCtrls, dxdbtree, dxExEdtr, dxCntner, dxTL,
  dxDBCtrl, dxDBGrid, StdCtrls, Buttons, DB, ADODB, dxDBTL, dxDBTLCl,
  dxGrClms;

type
  THwSelDataBForm = class(TForm)
    pnlLeft: TPanel;
    Splitter1: TSplitter;
    Panel2: TPanel;
    Panel3: TPanel;
    pnlClass: TPanel;
    bbtnOk: TBitBtn;
    bbtnExit: TBitBtn;
    bbtnFind: TBitBtn;
    bbtnSearch: TBitBtn;
    bbtnRefresh: TBitBtn;
    dsClass: TDataSource;
    dsItems: TDataSource;
    adsItems: TADODataSet;
    bbtnSelAll: TBitBtn;
    bbtnUnSel: TBitBtn;
    adsClass: TADODataSet;
    adsClassFNo: TIntegerField;
    adsClassFName: TStringField;
    adsClassFParent: TIntegerField;
    dxDBTreeView1: TdxDBTreeView;
    dbgItem: TdxDBTreeList;
    adsItemsFSel: TIntegerField;
    adsItemsFNo: TIntegerField;
    adsItemsFCode: TStringField;
    adsItemsFName: TStringField;
    adsItemsFParent: TIntegerField;
    dbgItemFCode: TdxDBTreeListMaskColumn;
    dbgItemFName: TdxDBTreeListMaskColumn;
    dbgItemFSel: TdxDBTreeListCheckColumn;
    qryItems: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure bbtnFindClick(Sender: TObject);
    procedure bbtnSearchClick(Sender: TObject);
    procedure bbtnRefreshClick(Sender: TObject);
    procedure bbtnOkClick(Sender: TObject);
    procedure bbtnExitClick(Sender: TObject);
    procedure bbtnSelAllClick(Sender: TObject);
    procedure bbtnUnSelClick(Sender: TObject);
    procedure adsInv100AfterScroll(DataSet: TDataSet);
    procedure dbgItemKeyPress(Sender: TObject; var Key: Char);
    procedure dbgItemMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    ABusy:Boolean;
    FType:Integer;
    procedure GetAllClass(AType:Integer);
    procedure GetItems;
    procedure SetInterface;
    procedure GetInv150Items;
    procedure GetInv120Items;
    procedure GetOrd150Items;
    procedure GetOrd110Items;
    procedure GetSys100Items(AType:Integer);
    procedure GetHrm150Items;
    procedure GetOrd120Items;
    { Private declarations }
  public
    procedure OpenData(AType:Integer);
    { Public declarations }
  end;

var
  HwSelDataBForm: THwSelDataBForm;

implementation

uses CommFun, SYSDATA;

{$R *.dfm}

procedure SetDBGridColoumns(ADataSet:TDataSet;ADBGrid:TdxDBTreeList);
var
  I:Integer;
  AFieldName:String;
  AColumn:TdxDBTreeListColumn;
begin
  if not ADataSet.Active then Exit;
  ADBGrid.DestroyColumns;
  AFieldName:=ADataSet.Fields[0].FieldName;
  AColumn:=ADBGrid.CreateColumn(TdxDBGridCheckColumn);
  AColumn.FieldName:=AFieldName;
  AColumn.HeaderAlignment:=taCenter;
  AColumn.BandIndex:=0;
  AColumn.DisableEditor:=True;
  AColumn.Width:=40;
  TdxDBGridCheckColumn(AColumn).ValueChecked:='-1';
  TdxDBGridCheckColumn(AColumn).ValueUnchecked:='0';

  for I:=1 to ADataSet.FieldCount-1 do
  begin
    if ADataSet.Fields[I].Visible then
    begin
      AFieldName:=ADataSet.Fields[I].FieldName;
      AColumn:=ADBGrid.CreateColumn(TdxDBGridMaskColumn);
      AColumn.FieldName:=AFieldName;
      AColumn.HeaderAlignment:=taCenter;
      AColumn.BandIndex:=0;
      AColumn.DisableEditor:=True;
      ADBGrid.ApplyBestFit(Acolumn);
      if AFieldName<>'FLocName' then
      begin
        if AColumn.Width<ADataSet.Fields[I].DisplayWidth*4 then
          AColumn.Width:=ADataSet.Fields[I].DisplayWidth*4;
      end;
    end;
  end;
end;

procedure THwSelDataBForm.GetAllClass(AType:Integer);
begin
  ABusy:=True;
  adsClass.Close;
  case AType of
    0:adsClass.CommandText:='select I120_001 as FNo,I120_003 as FName,I120_004 as FParent from INV120 order by I120_002';
    1:adsClass.CommandText:='select O110_001 as FNo,O110_002 as FName,O110_003 as FParent from ORD110 order by O110_001';
    2:adsClass.CommandText:='select H100_001 as FNo,H100_002 as FName,H100_003 as FParent from HRM100 order by H100_001';
  end;
  adsClass.Open;
  adsClass.Append;;
  adsClass.FieldByName('FNo').Value:=0;
  adsClass.FieldByName('FName').Value:=GetDBString('COM00008021');  //所有类别
  adsClass.FieldByName('FParent').Value:=0;
  adsClass.Post;
  ABusy:=False;
end;

procedure THwSelDataBForm.GetInv150Items;
begin
  if not adsClass.Active then GetAllClass(0);
  adsItems.DisableControls;
  adsItems.Close;
  adsItems.CommandText:='select I150_005 as FSel,I150_001 as FNo,I150_002 as FCode,I150_003 as FName,I150_001 as FParent from INV150';
  if adsClassFNo.AsInteger<>0 then
    adsItems.CommandText:=adsItems.CommandText+' where I150_005='+adsClassFNo.AsString;
  adsItems.CommandText:=adsItems.CommandText+' order by I150_002';
  adsItems.Open;
  pnlLeft.Visible:=True;
  Splitter1.Visible:=True;
  adsItems.EnableControls;
end;

procedure THwSelDataBForm.GetInv120Items;
begin
  adsItems.DisableControls;
  adsItems.Close;
  adsItems.CreateDataSet;
  qryItems.Close;
  qryItems.SQL.Clear;
  qryItems.SQL.Add('select I120_001 as FNo,I120_002 as FCode,I120_003 as FName,I120_004 as FParent from INV120 order by I120_002');
  qryItems.Open;
  while not qryItems.Eof do
  begin
    adsItems.Append;
    adsItemsFSel.Value:=0;
    adsItemsFNo.Value:=qryItems.FieldByName('FNo').Value;
    adsItemsFCode.Value:=qryItems.FieldByName('FCode').Value;
    adsItemsFName.Value:=qryItems.FieldByName('FName').Value;
    adsItemsFParent.Value:=qryItems.FieldByName('FParent').Value;
    adsItems.Post;
    qryItems.Next;
  end;
  adsItems.First;
  pnlLeft.Visible:=False;
  Splitter1.Visible:=False;
  adsItems.EnableControls;
end;

procedure THwSelDataBForm.GetOrd150Items;
begin
  if not adsClass.Active then GetAllClass(1);
  adsItems.DisableControls;
  adsItems.Close;
  adsItems.CommandText:='select O150_010 as FSel,O150_001 as FNo,O150_002 as FCode,O150_003 as FName,O150_001 as FParent from ORD150';
  if adsClassFNo.AsInteger<>0 then
    adsItems.CommandText:=adsItems.CommandText+' where O150_010='+adsClassFNo.AsString;
  adsItems.CommandText:=adsItems.CommandText+' order by O150_002';
  adsItems.Open;
  pnlLeft.Visible:=True;
  Splitter1.Visible:=True;
  adsItems.EnableControls;
end;

procedure THwSelDataBForm.GetOrd110Items;
begin
  adsItems.DisableControls;
  adsItems.Close;
  adsItems.CreateDataSet;
  qryItems.Close;
  qryItems.SQL.Clear;
  qryItems.SQL.Add('select O110_001 as FNo,O110_002 as FCode,O110_002 as FName,O110_003 as FParent from ORD110 order by O110_001');
  qryItems.Open;
  while not qryItems.Eof do
  begin
    adsItems.Append;
    adsItemsFSel.Value:=0;
    adsItemsFNo.Value:=qryItems.FieldByName('FNo').Value;
    adsItemsFCode.Value:=qryItems.FieldByName('FCode').Value;
    adsItemsFName.Value:=qryItems.FieldByName('FName').Value;
    adsItemsFParent.Value:=qryItems.FieldByName('FParent').Value;
    adsItems.Post;
    qryItems.Next;
  end;
  adsItems.First;
  pnlLeft.Visible:=False;
  Splitter1.Visible:=False;
  adsItems.EnableControls;
end;

procedure THwSelDataBForm.GetSys100Items(AType:Integer);
begin
  adsItems.DisableControls;
  adsItems.Close;
  adsItems.CreateDataSet;
  qryItems.Close;
  qryItems.SQL.Clear;
  qryItems.SQL.Add('select S100_001 as FNo,S100_002 as FCode,S100_003 as FName,S100_001 as FParent from SYS100 where S100_004='+IntToStr(AType)+' order by S100_002');
  qryItems.Open;
  while not qryItems.Eof do
  begin
    adsItems.Append;
    adsItemsFSel.Value:=0;
    adsItemsFNo.Value:=qryItems.FieldByName('FNo').Value;
    adsItemsFCode.Value:=qryItems.FieldByName('FCode').Value;
    adsItemsFName.Value:=qryItems.FieldByName('FName').Value;
    adsItemsFParent.Value:=qryItems.FieldByName('FParent').Value;
    adsItems.Post;
    qryItems.Next;
  end;
  adsItems.First;
  pnlLeft.Visible:=False;
  Splitter1.Visible:=False;
  adsItems.EnableControls;
end;

procedure THwSelDataBForm.GetHrm150Items;
begin
  if not adsClass.Active then GetAllClass(2);
  adsItems.DisableControls;
  adsItems.Close;
  adsItems.CommandText:='select H150_005 as FSel,H150_001 as FNo,H150_002 as FCode,H150_003 as FName,H150_001 as FParent from HRM150';
  if adsClassFNo.AsInteger<>0 then
    adsItems.CommandText:=adsItems.CommandText+' where H150_005='+adsClassFNo.AsString;
  adsItems.CommandText:=adsItems.CommandText+' order by H150_002';
  adsItems.Open;
  pnlLeft.Visible:=True;
  Splitter1.Visible:=True;
  adsItems.EnableControls;
end;

procedure THwSelDataBForm.GetOrd120Items;
begin
  adsItems.DisableControls;
  adsItems.Close;
  adsItems.CreateDataSet;
  qryItems.Close;
  qryItems.SQL.Clear;
  qryItems.SQL.Add('select O120_001 as FNo,O120_002 as FCode,O120_002 as FName,O120_003 as FParent from ORD120 order by O120_001');
  qryItems.Open;
  while not qryItems.Eof do
  begin
    adsItems.Append;
    adsItemsFSel.Value:=0;
    adsItemsFNo.Value:=qryItems.FieldByName('FNo').Value;
    adsItemsFCode.Value:=qryItems.FieldByName('FCode').Value;
    adsItemsFName.Value:=qryItems.FieldByName('FName').Value;
    adsItemsFParent.Value:=qryItems.FieldByName('FParent').Value;
    adsItems.Post;
    qryItems.Next;
  end;
  adsItems.First;
  pnlLeft.Visible:=False;
  Splitter1.Visible:=False;
  adsItems.EnableControls;
end;

procedure THwSelDataBForm.GetItems;
begin
  case FType of
    0:GetInv150Items;  //料品编号
    1:GetInv120Items;  //料品分类
    2:GetOrd150Items;  //客户编号
    3:GetOrd110Items;  //客户分类
    4:GetSys100Items(0);  //客户级别
    5:GetHrm150Items;  //销售员号
    6:GetSys100Items(1);  //销售员级别
    7:GetOrd120Items;  //交货地区
  end;
//  SetDBGridColoumns(adsItems,dbgItem);
end;

//AType:数据表类型(0=料品编号,1=料品分类,2=客户编号,3=客户分类,4=客户级别,5=销售员号,6=销售员级别,7=交货地区)
procedure THwSelDataBForm.OpenData(AType:Integer);
begin
  ABusy:=True;
  FType:=AType;
  GetItems;
  ABusy:=False;
end;

procedure THwSelDataBForm.SetInterface;
begin
  Caption:=GetDBString('COM00008001');  //料品选择
  bbtnFind.Caption:=GetDBString('COM00008004');  //查找(&F)
  bbtnSearch.Caption:=GetDBString('COM00008005');  //查询(&S)
  bbtnRefresh.Caption:=GetDBString('COM00008006');  //刷新(&R)
  bbtnSelAll.Caption:=GetDBString('COM00008007');  //全部选择(&A)
  bbtnUnSel.Caption:=GetDBString('COM00008008');  //全部不选(&U)
  bbtnOk.Caption:=GetDBString('COM00008009');  //确定(&O)
  bbtnExit.Caption:=GetDBString('COM00008010');  //退出(&X)
  adsItemsFSel.DisplayLabel:=GetDBString('COM00008011');  //选择
  adsItemsFCode.DisplayLabel:=GetDBString('COM00008012');  //料品编号
  adsItemsFName.DisplayLabel:=GetDBString('COM00008013');  //料品名称
end;

procedure THwSelDataBForm.FormCreate(Sender: TObject);
begin
  SetInterface;
end;

procedure THwSelDataBForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
//
end;

procedure THwSelDataBForm.bbtnFindClick(Sender: TObject);
begin
//查找
  if adsItems.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  LocateDialog(dsItems);
end;

procedure THwSelDataBForm.bbtnSearchClick(Sender: TObject);
begin
//查询
  FilterDialog(dsItems);
end;

procedure THwSelDataBForm.bbtnRefreshClick(Sender: TObject);
begin
//刷新
  GetItems;
end;

procedure THwSelDataBForm.bbtnOkClick(Sender: TObject);
begin
//确定
  ModalResult:=mrOk;
end;

procedure THwSelDataBForm.bbtnExitClick(Sender: TObject);
begin
//退出
  Close;
end;

procedure THwSelDataBForm.bbtnSelAllClick(Sender: TObject);
begin
//全部选择
  adsItems.First;
  while not adsItems.Eof do
  begin
    adsItems.Edit;
    adsItems.FieldByName('FSel').Value:=-1;
    adsItems.Post;
    adsItems.Next;
  end;
end;

procedure THwSelDataBForm.bbtnUnSelClick(Sender: TObject);
begin
//全部不选
  adsItems.First;
  while not adsItems.Eof do
  begin
    adsItems.Edit;
    adsItems.FieldByName('FSel').Value:=0;
    adsItems.Post;
    adsItems.Next;
  end;
end;

procedure THwSelDataBForm.adsInv100AfterScroll(DataSet: TDataSet);
begin
  if not ABusy then GetItems;
end;

procedure THwSelDataBForm.dbgItemKeyPress(Sender: TObject; var Key: Char);
var
  ASelected:Integer;
begin
  if Key=#32 then  //vk_space
  begin
    if adsItems.IsEmpty then Exit;
    if adsItems.FieldByName('FSel').Value=-1 then ASelected:=0 else ASelected:=-1;
    adsItems.Edit;
    adsItems.FieldByName('FSel').Value:=ASelected;
    adsItems.Post;
  end;
end;

procedure THwSelDataBForm.dbgItemMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  ASelected:Integer;
begin
  if dbgItem.GetColumnAt(X,Y)=nil then Exit;
  if dbgItem.GetColumnAt(X,Y).Field.FieldName='FSel' then
  begin
    if adsItems.IsEmpty then Exit;
    if adsItems.FieldByName('FSel').Value=-1 then ASelected:=0 else ASelected:=-1;
    adsItems.Edit;
    adsItems.FieldByName('FSel').Value:=ASelected;
    adsItems.Post;
  end;
end;

end.

⌨️ 快捷键说明

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