?? hwseldatab.pas.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 + -