📄 ubill_base.~pas
字号:
unit UBill_Base;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, DBCtrls, Grids, DBGridEh, ExtCtrls, ComCtrls, Buttons,
ToolWin, Db, ADODB, EHGrids,UDataVar ,dbgrids, ImgList;
type
TfrmBill_Base = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label8: TLabel;
Label12: TLabel;
Label13: TLabel;
Panel3: TPanel;
Label7: TLabel;
Label11: TLabel;
DBEdit1: TDBEdit;
DataSource1: TDataSource;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit11: TDBEdit;
Label26: TLabel;
Label29: TLabel;
DBEdit8: TDBEdit;
DBEdit10: TDBEdit;
Label22: TLabel;
DBEdit9: TDBEdit;
DBRichEdit1: TDBRichEdit;
Label9: TLabel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Splitter1: TSplitter;
Splitter2: TSplitter;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit6: TEdit;
Edit7: TEdit;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
DataSource2: TDataSource;
LocalCon: TADOConnection;
ADOProc1: TADOStoredProc;
ADOProc2: TADOStoredProc;
DBCheckBox1: TDBCheckBox;
ADOProc3: TADOStoredProc;
ToolBar1: TToolBar;
Proc_NewBill: TADOStoredProc;
DBComboBox1: TDBComboBox;
DBComboBox2: TDBComboBox;
Label10: TLabel;
DBEdit12: TDBEdit;
Edit5: TEdit;
SpeedButton5: TSpeedButton;
QryMaster: TADOQuery;
QryLookUp: TADOQuery;
QryLookUpName: TWideStringField;
QryLookUpnGdGg: TWideStringField;
QryLookUpbGdBatch: TBooleanField;
QryLookUpnGdUnit: TWideStringField;
QryLookUpnColor: TWideStringField;
QryLookUpCode: TWideStringField;
ProcCanChange: TADOStoredProc;
BtnAdd: TToolButton;
BtnChange: TToolButton;
BtnExit: TToolButton;
BtnCancel: TToolButton;
BtnSave: TToolButton;
BtnAuditing: TToolButton;
BtnFirst: TToolButton;
BtnPrevious: TToolButton;
BtnNext: TToolButton;
BtnLast: TToolButton;
BitPrint: TToolButton;
BtnPreview: TToolButton;
BtnSet: TToolButton;
BtnFiltrate: TToolButton;
Separator1: TToolButton;
Separator2: TToolButton;
Separator3: TToolButton;
btnDelete: TToolButton;
Button1999: TButton;
QryLoadField: TADOQuery;
RepOrder: TStaticText;
DBGridEh1: TDBGridEh;
QryDetail: TADOQuery;
QryDetailnId: TAutoIncField;
QryDetailnBillID: TWideStringField;
QryDetailnGoodCode: TWideStringField;
QryDetailnfsprice: TBCDField;
QryDetailnFsCount: TBCDField;
QryDetailnFsJine: TBCDField;
QryDetailnPosition: TWideStringField;
QryDetailnCus1: TWideStringField;
QryDetailnCus2: TWideStringField;
QryDetailnMemo: TWideStringField;
QryDetailnbatch: TWideStringField;
QryDetailbBatch: TBooleanField;
QryDetailnGoodName: TStringField;
QryDetailnUnit: TStringField;
QryDetailnGDGg: TStringField;
QryDetailnColor: TStringField;
QryLookUpnGdAddCode: TWideStringField;
QryDetailnGdAddCode: TStringField;
ADOQSFtype: TADOQuery;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure DBEdit3Change(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure DBEdit11Change(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure DBEdit4Change(Sender: TObject);
procedure Edit3Exit(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure DBEdit7Change(Sender: TObject);
procedure Edit4Exit(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure DBEdit10Change(Sender: TObject);
procedure Edit7Exit(Sender: TObject);
procedure Edit6Change(Sender: TObject);
procedure DBEdit9Change(Sender: TObject);
procedure Edit6Exit(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBGridEh1EditButtonClick(Sender: TObject);
procedure DBGridEh1Enter(Sender: TObject);
procedure DBGridEh1Exit(Sender: TObject);
procedure QryMasterAfterInsert(DataSet: TDataSet);
procedure QryMasterAfterEdit(DataSet: TDataSet);
procedure BtnCancelClick(Sender: TObject);
procedure BtnAddClick(Sender: TObject);
procedure BtnChangeClick(Sender: TObject);
procedure BtnSaveClick(Sender: TObject);
procedure DBGridEh1ColEnter(Sender: TObject);
procedure DBGridEh1GetEditText(Sender: TObject; ACol, ARow: Integer;
var Value: String);
procedure BtnAuditingClick(Sender: TObject);
procedure QryDetailnfspriceSetText(Sender: TField;
const Text: String);
procedure QryDetailnFsCountSetText(Sender: TField;
const Text: String);
procedure QryMasterAfterScroll(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure SpeedButton5Click(Sender: TObject);
procedure Edit5Exit(Sender: TObject);
procedure Edit5Change(Sender: TObject);
procedure DBEdit12Change(Sender: TObject);
procedure BtnExitClick(Sender: TObject);
procedure DBGridEh1KeyPress(Sender: TObject; var Key: Char);
procedure BtnFirstClick(Sender: TObject);
procedure BtnPreviousClick(Sender: TObject);
procedure BtnNextClick(Sender: TObject);
procedure BtnLastClick(Sender: TObject);
procedure QryDetailBeforePost(DataSet: TDataSet);
procedure QryDetailAfterOpen(DataSet: TDataSet);
procedure QryMasterAfterOpen(DataSet: TDataSet);
procedure btnDeleteClick(Sender: TObject);
procedure Button1999Click(Sender: TObject);
procedure BtnSetClick(Sender: TObject);
procedure QryDetailnFsJineSetText(Sender: TField; const Text: String);
procedure DBGridEh1ColumnMoved(Sender: TObject; FromIndex,
ToIndex: Integer);
private
{ Private declarations }
TmpBillID:String;
procedure GetTmpBillID();
procedure LoadPosition();
procedure LdCusColumn();
public
CanScroll:Boolean; //判断从表是否可以滚动
DS:DataState;
GDI:TGdInfo;
iRow:integer;
iCol:integer;
bRight:Boolean; //记录是否正确
Tag:GDTag; //状态标记
bLast:Boolean;//是否是最后一行
TmpSQL:String; //临时SQL语句
MasterPost:Boolean;//主表是否Post
ErrorField:integer;
{ Public declarations }
function NoError():Boolean;
function bCanEdit(iCol:integer):Boolean;
function bHaveEnough():Boolean;
end;
var
frmBill_Base: TfrmBill_Base;
DS:DataState=dsNone;
iRow:integer=0;
bSave:Boolean=True;
MasterPost:Boolean=True;
ErrorField:integer=-1;
implementation
uses UFunction, UTree_Sel_Dept, UTree_Sel_Ck, UTree_Sel_SFType,
UTree_Sel_Gys, UTree_Sel_Cus, UMain, USel_Gys, USel_Kh, USel_Person, UDM,
Udata, U_DM;
{$R *.DFM}
procedure TfrmBill_Base.LdCusColumn();
var
iCount:integer;
begin
With DM.ADOQueryN do
begin
Close;
SQL.Text:='Select dispname,dispfield from s_Qrdetail where (reporder='+#39+RepOrder.Caption+#39+
') and (location=''d'') and dispfield like '+'''nCus%'''+'order by dispfield';
Open;
while not eof do
begin
for iCount:=0 to DBGridEh1.Columns.Count-1 do
begin
if DBGridEh1.Columns[iCount].FieldName= FieldByName('dispfield').AsString then
begin
DBGridEh1.Columns[iCount].Title.Caption:=FieldByName('dispname').AsString;
break;
end;
end;
next;
end;
end;
end;
procedure TfrmBill_Base.SpeedButton1Click(Sender: TObject);
begin
SelFromTree(Edit1,DBEdit3,frmTree_Sel_CK);
if (DBGridEh1.DataSource = nil) then
DBGridEh1.DataSource := DataSource2;
if trim(Edit1.Text)<>'' then begin
FullGd(QryLoadField,DBGridEh1,RepOrder.Caption,1,DBEdit3.Text);
LoadPosition;
end;
end;
procedure TfrmBill_Base.SpeedButton2Click(Sender: TObject);
var
tmpSQL:String;
begin
frmTree_Sel_SFType.ADOQry.Close;
tmpSQL:=frmTree_Sel_SFType.SQLBackup.Caption;
if pos('入',Caption)<>0 then
begin
insert(' where iSFTag=1 ',tmpSQL,Pos('ORDER',tmpSQL));
frmTree_Sel_SFType.ADOQry.SQL.Text:=tmpSQL;
end
else if Pos('出',Caption)<>0 then
begin
insert(' where iSFTag=-1 ',tmpSQL,Pos('ORDER',tmpSQL));
frmTree_Sel_SFType.ADOQry.SQL.Text:=tmpSQL;
end;
SelFromTree(Edit2,DBEdit11,frmTree_Sel_SFType);
end;
procedure TfrmBill_Base.SpeedButton3Click(Sender: TObject);
begin
SelFromTree(Edit3,DBEdit4,frmTree_Sel_Dept);
end;
procedure TfrmBill_Base.SpeedButton4Click(Sender: TObject);
begin
SelFromTree(Edit4,DBEdit7,frmSel_Gys)
end;
procedure TfrmBill_Base.Edit1Change(Sender: TObject);
begin
Full_Back_Edit(DBEdit3,Edit1,frmTree_Sel_Ck);
end;
procedure TfrmBill_Base.DBEdit3Change(Sender: TObject);
begin
Full_Front_Edit(DBEdit3,Edit1,frmTree_Sel_Ck);
end;
procedure TfrmBill_Base.Edit1Exit(Sender: TObject);
begin
if HaveError(DBEdit3,Edit1) then exit;
if edit1.text<>'' then
LoadPosition;
end;
procedure TfrmBill_Base.Edit2Change(Sender: TObject);
begin
Full_Back_Edit(DBEdit11,Edit2,frmTree_Sel_SFType);
end;
procedure TfrmBill_Base.DBEdit11Change(Sender: TObject);
begin
Full_Front_Edit(DBEdit11,Edit2,frmTree_Sel_SFType);
end;
procedure TfrmBill_Base.Edit2Exit(Sender: TObject);
begin
HaveError(DBEdit11,Edit2);
end;
procedure TfrmBill_Base.Edit3Change(Sender: TObject);
begin
Full_Back_Edit(DBEdit4,Edit3,frmTree_Sel_Dept);
end;
procedure TfrmBill_Base.DBEdit4Change(Sender: TObject);
begin
Full_Front_Edit(DBEdit4,Edit3,frmTree_Sel_Dept);
end;
procedure TfrmBill_Base.Edit3Exit(Sender: TObject);
begin
if HaveError(DBEdit4,Edit3) then Exit;
end;
procedure TfrmBill_Base.Edit4Change(Sender: TObject);
begin
Full_Back_Edit(DBEdit7,Edit4,frmSel_Gys);
end;
procedure TfrmBill_Base.DBEdit7Change(Sender: TObject);
begin
Full_Front_Edit(DBEdit7,Edit4,frmSel_Gys);
end;
procedure TfrmBill_Base.Edit4Exit(Sender: TObject);
begin
HaveError(DBEdit7,Edit4);
end;
procedure TfrmBill_Base.SpeedButton6Click(Sender: TObject);
begin
SelFromTree(Edit6,DBEdit9,frmSel_Person);
end;
procedure TfrmBill_Base.SpeedButton7Click(Sender: TObject);
begin
SelFromTree(Edit7,DBEdit10,frmSel_Person);
end;
procedure TfrmBill_Base.Edit7Change(Sender: TObject);
begin
Full_Back_Edit(DBEdit10,Edit7,frmSel_Person);
end;
procedure TfrmBill_Base.DBEdit10Change(Sender: TObject);
begin
Full_Front_Edit(DBEdit10,Edit7,frmSel_Person);
end;
procedure TfrmBill_Base.Edit7Exit(Sender: TObject);
begin
HaveError(DBEdit10,Edit7);
end;
procedure TfrmBill_Base.Edit6Change(Sender: TObject);
begin
Full_Back_Edit(DBEdit9,Edit6,frmSel_Person);
end;
procedure TfrmBill_Base.DBEdit9Change(Sender: TObject);
begin
Full_Front_Edit(DBEdit9,Edit6,frmSel_Person);
end;
procedure TfrmBill_Base.Edit6Exit(Sender: TObject);
begin
HaveError(DBEdit9,Edit6);
end;
procedure TfrmBill_Base.FormCreate(Sender: TObject);
var
iCount:integer;
begin
CanScroll:=true;
TmpSQL:=QryDetail.SQL.Text;
localcon.Close;
LocalCon.ConnectionString:=DM.ADOConn.ConnectionString;
LocalCon.Open;
QryMaster.Close;
QryMaster.Open;
QryLookUp.Close;
QryLookUp.Open;
FillComboBox(DBComboBox2,'Xs_Order1','orderNo'); //取销售定单号
FillComboBox(DBComboBox1,'Cg_ddm','CgouNo'); //取采购定单号
LdCusColumn;
for iCount:=0 to ComponentCount-1 do
begin
if Components[iCount].InheritsFrom(TSpeedButton) then
begin
if TSPeedButton(Components[iCount]).Caption='.*.' then
begin
DM.ILMain.GetBitmap(18,TSPeedButton(Components[iCount]).Glyph);
TSPeedButton(Components[iCount]).Caption:='';
end else
if TSPeedButton(Components[iCount]).Caption='...' then
begin
DM.ILMain.GetBitmap(17,TSPeedButton(Components[iCount]).Glyph);
TSPeedButton(Components[iCount]).Caption:='';
end;
end;
end;
end;
procedure TfrmBill_Base.LoadPosition(); //Pass
var
i:integer;
begin
with DM.ADOQry do
begin
Close;
SQL.Text:='Select nPCode+'+''''+'-'+''''+'+nPosition as Position from Kc_Position ';
SQL.Add('where nCKCode ='+''''+ DBEdit3.Text+'''');
Open;
for i:=0 to DBGridEh1.Columns.Count-1 do
begin
if Trim(DBGridEh1.Columns[i].FieldName)='nPosition' then
Break;
end;
if i>1 then
DBGridEh1.Columns[i].PickList.Clear;
if RecordCount=0 then
begin
Exit;
end;
while not Eof do
begin
try
DBGridEh1.Columns[i].PickList.Add(FieldByName('Position').AsString);
except
end;
Next;
end;
end;
end;
procedure TfrmBill_Base.DBGridEh1EditButtonClick(Sender: TObject); //Pass
var
tmeStr:String;
begin
tmeStr:='';
if (DbGridEh1.Columns.Items[DbGridEh1.Columns.Grid.SelectedIndex].FieldName = 'nGoodName') then
begin
tmeStr:=GetGdCode();
if tmeStr='' then Exit;
if QryDetail.State=dsBrowse then
begin
if QryDetail.FieldByName('nGoodCode').AsString='' then
QryDetail.insert
else
QryDetail.Edit;
end;
QryDetail.FieldByName('nGoodCode').AsString:=tmeStr;
QryDetail.FieldByName('nfsPrice').Asfloat:=GetPrice(tmeStr);
end;
end;
//================================
//================================
procedure TfrmBill_Base.DBGridEh1Enter(Sender: TObject);
begin
DBGridEh1.Options:=DBGridEh1.Options+[dgEditing];
if DS=dsNone then
begin
DBGridEh1.Options:=DBGridEh1.Options-[dgEditing];
Exit;
end else
begin
if Edit1.Text='' then
begin
Application.MessageBox('仓库不能为空','提示',64);
Edit1.SetFocus;
Exit;
end;
if Edit2.Text='' then
begin
Application.MessageBox('收发类别不能为空','提示',64);
Edit2.SetFocus;
Exit;
end;
// if (not MasterPost) and (QryMaster.State<>dsBrowse) then
// QryMaster.Post;
end;
end;
procedure TfrmBill_Base.DBGridEh1Exit(Sender: TObject); //Pass
begin
{ if not NoError then //离开Grid时候,判断是否有错,有错则返回
begin
DBGridEh1.SetFocus;
Exit;
end; }
DBGridEh1.Options:=DBGridEh1.Options-[dgEditing]; //防止最后一行没有保存
if (QryDetail.state=dsEdit) or (QryDetail.state=dsInsert) then
QryDetail.Post;
end;
procedure TfrmBill_Base.QryMasterAfterInsert(DataSet: TDataSet); //Pass
begin
// MasterPost:=false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -