📄 ffrmbaseclass.pas
字号:
unit FfrmBaseClass;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FfrmBaseForm, RzPanel, RzButton, ExtCtrls, ImgList, ComCtrls,
RzSplit, StdCtrls, Grids, DBGridEh, DBCtrls, RzDBNav, Menus, DB,MakeCodeTree, FCommClass,
ADODB,AccessDB;
type
TfrmBaseClass = class(TfrmBaseForm)
ImageList1: TImageList;
RzToolbar1: TRzToolbar;
BtnExit1: TRzToolButton;
RzSpacer2: TRzSpacer;
BtnUpOneLevel: TRzToolButton;
RzSplitter1: TRzSplitter;
RzPanel1: TRzPanel;
RzSplitter2: TRzSplitter;
edtCurClass: TLabeledEdit;
RzDBNavigator1: TRzDBNavigator;
grdResult: TDBGridEh;
BtnPrint: TRzToolButton;
pmPrint: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
dsClass: TDataSource;
tvClass: TTreeView;
pmClass: TPopupMenu;
N3: TMenuItem;
N4: TMenuItem;
BtnSelectFolder: TRzToolButton;
procedure BtnExit1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure BtnUpOneLevelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure tvClassChange(Sender: TObject; Node: TTreeNode);
procedure BtnSelectFolderClick(Sender: TObject);
private
{ Private declarations }
FClassName:String;
FSQL:String;
tc:TCodeTree;
IC:TSQLCommClass;
function AddNode(vParentCode,vCode,vName:String):Boolean;
function AddTreeNode(vParentCode,vCode,vName:String):Boolean;
function AddDBNode(vParentCode,vCode,vName:String):Boolean;
protected
procedure SetClass(vt,cn,vSQL:String);
public
{ Public declarations }
end;
var
frmBaseClass: TfrmBaseClass;
implementation
uses FDBGridEh, FdmMain, InputFrm, FfrmAddCommClass, FfrmFilter, BaseVar;
{$R *.dfm}
procedure TfrmBaseClass.BtnExit1Click(Sender: TObject);
begin
inherited;
close;
end;
procedure TfrmBaseClass.N1Click(Sender: TObject);
begin
inherited;
PrintDBGridEh(grdResult,'查询结果',True);
end;
procedure TfrmBaseClass.N2Click(Sender: TObject);
begin
inherited;
PrintDBGridEh(grdResult,'查询结果',False);
end;
procedure TfrmBaseClass.BtnUpOneLevelClick(Sender: TObject);
begin
inherited;
ExportDBGridEhToExcel(grdResult);
end;
procedure TfrmBaseClass.FormCreate(Sender: TObject);
begin
inherited;
IC:=TSQLCommClass.Create(gAccessDB) ;
tc:=TCodeTree.Create;
dsClass.DataSet.Close;
dsClass.DataSet.Open;
tc.MakeCodeTree(tvClass,dsClass.DataSet);
end;
procedure TfrmBaseClass.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
tc.Free;
IC.Free;
end;
procedure TfrmBaseClass.N3Click(Sender: TObject);
var
CurCode:String;
begin
//检查选择的节点
if tvClass.Selected=nil then CurCode:='' else CurCode:=tc.GetNodeCode(tvClass.Selected);
try
//检查是否已存在窗体
if not Assigned(frmAddCommClass) then
frmAddCommClass:=TfrmAddCommClass.create(Application);
//with TfrmAddCommClass.create(Application) do
with frmAddCommClass do
begin
//设置父项的编码
SetParentClassCode(CurCode);
//显示并取返回状态
//如果为确定
if ShowModal=mrOK then
begin
AddNode(GetParentCode(),GetCode(),GetName());
end;
end;
finally
//释放窗体
frmAddCommClass.Free;
frmAddCommClass:=nil;
end;
end;
procedure TfrmBaseClass.N4Click(Sender: TObject);
begin
inherited;
if tvClass.Selected.HasChildren then
begin
MessageBox(Application.Handle,'有下级分类,不能删除!','提示信息',MB_ICONINFORMATION);
exit;
end
else
begin
if IC.DeleteClass(tc.GetNodeCode(tvClass.Selected)) then
tvClass.Items.Delete(tvClass.Selected);
end;
end;
function TfrmBaseClass.AddDBNode(vParentCode, vCode,
vName: String): Boolean;
begin
IC.AddClass(vParentCode,vCode, vName);
end;
function TfrmBaseClass.AddNode(vParentCode, vCode, vName: String): Boolean;
begin
if AddDBNode(vParentCode,vCode, vName) then
AddTreeNode(vParentCode,vCode, vName)
else
MessageBox(Application.Handle,'写入数据失败!','提示信息',MB_ICONINFORMATION);
end;
function TfrmBaseClass.AddTreeNode(vParentCode, vCode,
vName: String): Boolean;
begin
tvClass.Items.AddChild(tc.GetNode(tvClass,vParentCode),vCode+SepStr+vName);
end;
procedure TfrmBaseClass.tvClassChange(Sender: TObject; Node: TTreeNode);
//取节点的值
function GetNodeFilter(vNode: TTreeNode):String;
var
i:Integer;
s:String;
begin
s:='';
if not vNode.HasChildren then
begin
s:=FClassName+'='''+tc.GetNodeCode(vNode)+'''';
result:=s;
end
else
begin
for I := 0 to vNode.Count - 1 do
s:=GetNodeFilter(vNode.Item[I])+' or '+s;
s:=s+FClassName+'='''+tc.GetNodeCode(vNode)+'''';
Result:=s;
end;
//s:=s+'分类ID='''+TreeView.Selected.Text+'''';
end;
//获得分类描述
function GetNodeType(vNode: TTreeNode):string;
var
s:string;
begin
if vNode.Parent<>nil then
Result:=GetNodeType(vNode.Parent)+'-'+vNode.Text
else
Result:='-'+vNode.Text;
end;
var
i:integer;
s,vSQL:String;
begin
if tvClass.Selected<>nil then
begin
try
s:=GetNodeFilter(tvClass.Selected);
edtCurClass.Text:=tvClass.Selected.Text;
dsClass.DataSet.Locate('代码',tc.GetNodeCode(tvClass.Selected),[]);
if s<>'' then
vSQL:=FSQL+' where '+s
else
vSQL:=FSQL;
with TADODataSet(RzDBNavigator1.DataSource.DataSet) do
begin
Close;
Commandtext:=vSQL;
Open;
end;
//tblInfo.Filter :='分类ID='''+edtCurrType.text+'''';
except
end;
end;
end;
procedure TfrmBaseClass.SetClass(vt,cn,vSQL:String);
begin
FClassName:=cn;
IC.TableName:=vt;
FSQL:=vSQL;
end;
procedure TfrmBaseClass.BtnSelectFolderClick(Sender: TObject);
var
StrFilter,vSQL:String;
frm:TfrmFilter;
begin
inherited;
frm:=TfrmFilter.create(nil);
frm.ClearFields;
frm.AddFieldsByDataSet(RzDBNavigator1.DataSource.DataSet) ;
if frm.ShowModal=mrCancel then exit;
StrFilter:=frm.GetFilterString;
frm.Free;
if StrFilter<>'' then
vSQL:=FSQL+' where '+StrFilter
else
vSQL:=FSQL;
with TADODataSet(RzDBNavigator1.DataSource.DataSet) do
begin
Close;
Commandtext:=vSQL;
Open;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -