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

📄 ffrmbaseclass.pas

📁 财务软件:功能尚可,基于UML设计开发的delphi系统,文档齐全
💻 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 + -