📄 bas_itemclass.pas
字号:
unit Bas_ItemClass;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Outer, Menus, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
StdCtrls, ExtCtrls, ComCtrls, ToolWin, jpeg;
Type
TFrm_Bas_ItemClass = Class(TFrm_Base_Outer)
Lbl_IteCode: TLabel;
Edt_Ite_ItemCode: TEdit;
Lbl_Name: TLabel;
Lbl_Name_D: TLabel;
Label1: TLabel;
Lbl_RecordCount: TLabel;
TlBtn_Hint: TToolButton;
AdoQry_MainPClassCode: TStringField;
AdoQry_MainClassCode: TStringField;
AdoQry_MainClassName: TStringField;
AdoQry_MainClassRemArk: TStringField;
procedure Edt_Ite_ItemCodeExit(Sender: TObject);
procedure Action1Execute(Sender: TObject);
procedure Act_NewExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Act_ModifyExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Act_HintExecute(Sender: TObject);
procedure Act_DeleteExecute(Sender: TObject);
procedure Action2Execute(Sender: TObject);
procedure Edt_Ite_ItemCodeChange(Sender: TObject);
private
Lc_OldMaster:TStrinGlist;
procedure InsertOldMaster(ItemCode:string); //把当前查询的父项插入
procedure GetOldMaster; //根据历史的父项得到数据
procedure SetPnl_Head(R_Code:string);
procedure GetSlave(R_Code:string);
function PickMasterCode(R_InitCode:string):string;
function HaveSlave(R_Code:string):Boolean;
function MasterCodeUsable(R_Code:string):Boolean;
procedure clearPnl_Head;
procedure LocateToSlave(T_ItemCode:String); //定位到子项代码
{ Private declarations }
public
procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
Function SetDeleteSql:string;Override;
procedure InitReport; Override;
{ Public declarations }
end;
var
Frm_Bas_ItemClass: TFrm_Bas_ItemClass;
implementation
uses Sys_Global,Bas_ItemClass_D;
{$R *.DFM}
procedure TFrm_Bas_ItemClass.SetPnl_Head(R_Code:string);
var
T_Sql:string;
T_Type:integer;
begin
T_Sql:=
'select * '+
' From ItemClass '+
'where ClassCode='''+R_Code+''' ';
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add(T_Sql);
Open;
if not eof then
begin
if edt_ite_ItemCode.Text='' then
lbl_Name_D.Caption :=''
else
Lbl_Name_D.Caption:=fieldbyname('ClassName').AsString;
end;
end;
end;
procedure TFrm_Bas_ItemClass.GetSlave(R_Code:string);
var
T_Sql:string;
begin
T_Sql:=
'select * '+
' From ItemClass '+
' Where pClassCode ='''+R_Code+''' '+
' Order by ClassCode ';
with AdoQry_Main do
begin
Close;
SQL.clear;
SQL.Add(T_Sql);
open;
//设置BOTTON的提示信息
end;
with AdoQry_tmp do
begin
Close;
sql.Text :='select Count(*) recordCount '+
' From ItemClass '+
' Where pClassCode ='''+R_Code+''' ';
open;
Lbl_RecordCount.Caption:=fieldbyname('RecordCount').asstring;
end;
end;
function TFrm_Bas_ItemClass.HaveSlave(R_Code:string):Boolean;
var
T_Count:integer;
T_Sql:string;
begin
T_Sql:=
'Select Count(*) as RecordCount '+
'from Bom '+
'where Ite_ItemCode='''+R_Code+'''';
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add(T_Sql);
open;
T_Count:=fieldbyname('RecordCount').AsInteger;
Close;
end;
if T_Count>0 then
Result:=True
else
Result:=False;
end;
function TFrm_Bas_ItemClass.MasterCodeUsable(R_Code:string):Boolean;
var
T_Count:integer;
T_Sql:string;
begin
T_Sql:=
'Select Count(*) as RecordCount '+
'from ItemClass '+
'where pClassCode='''+R_Code+''' ';
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add(T_Sql);
open;
T_Count:=fieldbyname('RecordCount').AsInteger;
Close;
end;
if T_Count>0 then
Result:=True
else
Result:=False;
end;
function TFrm_Bas_ItemClass.PickMasterCode(R_InitCode:string):String;
begin
//根据InitCode调用QuickPick
Result:=GetCodeHint(
AdoQry_Main,
'ClassName','分类描述',
'pClassCode','分类父代码',
'ItemClass',R_InitCode,'');
end;
procedure TFrm_Bas_ItemClass.InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);
var
T_ItemCode:string;
begin
inherited;
T_ItemCode:='';
SelectFromSQL:='select * from ItemClass where pClassCode='''+''+'''';
getdata;
with AdoQry_tmp do
begin
Close;
sql.Text :='select Count(*) recordCount '+
' From ItemClass '+
' Where pClassCode ='''+''+''' ';
open;
Lbl_RecordCount.Caption:=fieldbyname('RecordCount').asstring;
end;
Frm_Sys_Detail:=TFrm_Bas_ItemClass_D.Create(Application);
end;
function TFrm_Bas_ItemClass.SetDeleteSql:string;
var
T_ItemCode:string;
Tmp_Str:String;
begin
//先插入到日志文件中
Tmp_Str:='';
T_ItemCode:=AdoQry_Main.fieldbyname('ClassCode').AsString;
Tmp_Str:=Tmp_Str+
'Delete from ItemClass '+
'where ClassCode='''+AdoQry_Main.fieldbyname('ClassCode').Asstring+''' ';
Result:=Tmp_Str;
end;
procedure TFrm_Bas_ItemClass.Edt_Ite_ItemCodeExit(Sender: TObject);
var
T_ItemCode:string;
begin
T_ItemCode:=Trim(Edt_Ite_ItemCode.text);
if MasterCodeUsable(T_ItemCode) then
begin
InsertOldMaster(T_ItemCode);
SetPnl_Head(T_ItemCode);
GetSlave(T_ItemCode);
end
else
begin
DispInfo('该父项代码不存在!',1);
Edt_Ite_ItemCode.Text :='';
TWinControl(Sender).SetFocus;
Abort;
end;
inherited;
if edt_ite_ItemCode.Text ='' then
lbl_Name_D.Caption :='';
end;
procedure TFrm_Bas_ItemClass.Action1Execute(Sender: TObject);
var T_ItemCode:string;
begin
// inherited;
if not AdoQry_Main.eof then
begin
T_ItemCode:=AdoQry_Main.fieldbyname('ClassCode').AsString;
Edt_Ite_ItemCode.Text:=t_ItemCode;
// InsertOldMaster(T_ItemCode);
SetPnl_Head(T_ItemCode);
GetSlave(T_ItemCode);
end;
end;
procedure TFrm_Bas_ItemClass.Act_NewExecute(Sender: TObject);
begin
//强制类型转换
TFrm_Bas_ItemClass_D(Frm_Sys_Detail).Lbl_MasterCode.Caption :=Edt_Ite_ItemCode.Text;
if not AdoQry_Main.Eof then
begin
TFrm_Bas_ItemClass_D(Frm_Sys_Detail).edt_ItemCode.Text :=AdoQry_Main.fieldbyname('ClassCode').AsString ;
TFrm_Bas_ItemClass_D(Frm_Sys_Detail).edt_ItemName.Text :=AdoQry_Main.fieldbyname('ClassName').AsString ;
end;
//判断父项是否为资源
inherited;
GetSlave(Edt_Ite_ItemCode.Text);
LocateToSlave(TFrm_Bas_ItemClass_D(Frm_Sys_Detail).edt_ItemCode.Text);
end;
procedure TFrm_Bas_ItemClass.FormCreate(Sender: TObject);
begin
inherited;
ExtendCaption:=False;
Lc_OldMaster:=TStrinGlist.Create;
Lbl_Name_D.Caption:='';
Lbl_RecordCount.Caption:='';
TlBtn_Hint.left:=TlBtn_Help.left+TlBtn_Help.Width;
end;
procedure TFrm_Bas_ItemClass.FormActivate(Sender: TObject);
begin
inherited;
TlBtn_filter.Action:=Action1;
ToolButton6.Action:=Action2;
Act_Filter.Enabled:=False;
Act_New.ImageIndex:=4;
end;
procedure TFrm_Bas_ItemClass.clearPnl_Head;
begin
Lbl_Name_D.Caption:='';
end;
procedure TFrm_Bas_ItemClass.Act_ModifyExecute(Sender: TObject);
begin
//强制类型转换
if not AdoQry_Main.Eof then
begin
TFrm_Bas_ItemClass_D(Frm_Sys_Detail).Lbl_MasterCode.Caption:=Edt_Ite_ItemCode.Text;
TFrm_Bas_ItemClass_D(Frm_Sys_Detail).lbl_MasterName.Caption :=lbl_Name_D.Caption ;
inherited;
if Frm_Sys_Detail.ModalResult=MrOk then
begin
GetSlave(Edt_Ite_ItemCode.Text);
LocateToSlave(TFrm_Bas_ItemClass_D(Frm_Sys_Detail).Edt_ItemCode.Text);
end;
end;
end;
procedure TFrm_Bas_ItemClass.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
Action:=CaFree;
end;
procedure TFrm_Bas_ItemClass.Act_HintExecute(Sender: TObject);
begin
inherited;
if ActiveControl.Name='Edt_Ite_ItemCode' then
begin
Edt_Ite_ItemCode.Text:=PickMasterCode(Edt_Ite_ItemCode.Text);
Edt_Ite_ItemCode.SetFocus;
end;
end;
procedure TFrm_Bas_ItemClass.Act_DeleteExecute(Sender: TObject);
begin
if activecontrol.Name='Edt_Ite_ItemCode' then abort;
with AdoQry_tmp do
begin
Close;
sql.Text :='select * from ItemClass where pClassCode='''+AdoQry_Main.fieldbyname('ClassCode').asstring+''' ';
open;
if not eof then
begin
DispInfo('该分类存在子项分类,不允许删除!',1);
abort;
end;
end;
inherited;
lbl_recordCount.Caption:=inttostr(AdoQry_Main.recordCount);
end;
procedure TFrm_Bas_ItemClass.LocateToSlave(T_ItemCode: String);
begin
if AdoQry_Main.Active then
AdoQry_Main.Locate('ClassCode',T_ItemCode,[]);
end;
procedure TFrm_Bas_ItemClass.InsertOldMaster(ItemCode: string);
begin
Lc_OldMaster.Add(ItemCode);
// ListBOX1.ItemS:=lC_OLDMaster;
end;
procedure TFrm_Bas_ItemClass.GetOldMaster;
begin
if Lc_OldMaster.Count>1 then
begin
if Lc_OldMaster.Strings[Lc_OldMaster.Count-1]=Edt_Ite_ItemCode.Text then
begin
Lc_OldMaster.Delete(Lc_OldMaster.Count-1);
end;
end;
// if Lc_OldMaster.Count<>0 then
// begin
// Edt_Ite_ItemCode.Text:=Lc_OldMaster.Strings[Lc_OldMaster.Count-1];
with AdoQry_tmp do
begin
Close;
sql.Text :='select * from ItemClass where ClassCode='''+edt_ite_ItemCode.Text+'''';
open;
edt_ite_ItemCode.Text :=fieldbyname('pClassCode').asstring;
end;
SetPnl_Head(Edt_Ite_ItemCode.Text);
GetSlave(Edt_Ite_ItemCode.Text);
//删除旧的记录
{ if Lc_OldMaster.Count<>1 then
begin
Lc_OldMaster.Delete(Lc_OldMaster.Count-1);
end; }
// ListBOX1.ItemS:=lC_OLDMaster;
// end;
end;
procedure TFrm_Bas_ItemClass.Action2Execute(Sender: TObject);
begin
inherited;
GetOldMaster;
end;
procedure TFrm_Bas_ItemClass.InitReport;
begin
inherited;
ExtPrintReport.Subtitle2:=' '+Lbl_iteCode.Caption+' '+Edt_ite_ItemCode.Text+' '+Lbl_Name.Caption+' '+lbl_Name_D.Caption ;
end;
procedure TFrm_Bas_ItemClass.Edt_Ite_ItemCodeChange(Sender: TObject);
begin
inherited;
if edt_ite_ItemCode.Text='' then
lbl_Name_D.Caption :='';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -