uni_branchs.pas

来自「一个非常不错的经费报销管理软件」· PAS 代码 · 共 253 行

PAS
253
字号
unit Uni_Branchs;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, ExtCtrls, ComCtrls, ToolWin, StdCtrls, Mask,
  DBCtrls, ADODB, Menus, XPMenu,StrUtils;

type
  TFrm_Branchs = class(TForm)
    Splitter1: TSplitter;
    TB_Main: TToolBar;
    TB_Insert: TToolButton;
    TB_Update: TToolButton;
    TB_Delete: TToolButton;
    TB_Post: TToolButton;
    TB_Cancel: TToolButton;
    TB_Refresh: TToolButton;
    TB_Help: TToolButton;
    Tree: TTreeView;
    Panel1: TPanel;
    DSbsBranchs: TDataSource;
    PopupMenu1: TPopupMenu;
    N_State: TMenuItem;
    P_Edit: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    DB_cClassNum: TDBEdit;
    DB_cName: TDBEdit;
    XPMenu1: TXPMenu;
    TB_Close: TToolButton;
    CoolBar1: TCoolBar;
    StatusBar1: TStatusBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ShowHide: TCheckBox;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TB_RefreshClick(Sender: TObject);
    procedure TreeClick(Sender: TObject);
    procedure TB_InsertClick(Sender: TObject);
    procedure N_StateClick(Sender: TObject);
    procedure TB_PostClick(Sender: TObject);
    procedure TB_UpdateClick(Sender: TObject);
    procedure TB_DeleteClick(Sender: TObject);
    procedure TB_CancelClick(Sender: TObject);
    procedure TB_CloseClick(Sender: TObject);
    procedure TreeDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    strid,strNo,strName:string;
  end;

var
  iGrade:Integer;  //分类层次
  Frm_Branchs: TFrm_Branchs;


implementation

{$R *.dfm}

uses uni_main,uni_dm,Uni_Function,Uni_Tiein_Branchs;

procedure TFrm_Branchs.FormShow(Sender: TObject);
begin
  if Choosed
  then begin
    DM.bsBranchs.SQL.Text:=' select *from bsbranchs where istate=1 order by cNum';
    TB_Main.Visible:=False;
  end
  else
    DM.bsBranchs.SQL.Text:=' select *from bsbranchs where istate>0 order by cNum';
  TB_RefreshClick(Sender);

end;

procedure TFrm_Branchs.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Choosed:=False;
end;

procedure TFrm_Branchs.TB_RefreshClick(Sender: TObject);
begin
  TreeRead('bsBranchs');
  Tree.Items.Clear;
  Tree.LoadFromFile('SPTREE.TXT');
  Tree.TopItem.Expanded:=True;
end;

procedure TFrm_Branchs.TreeClick(Sender: TObject);
var
  L,R:Integer;
  str:String;
begin

  try
    L:=Pos('[',(Sender as TTreeView).Selected.Text);
    R:=Pos(']',(Sender as TTreeView).Selected.Text);
    str:=MidBStr((Sender as TTreeView).Selected.Text,L+1,R-L-1);
  except
  end;

  //
  with DM do
  begin
    bsBranchs.Close;
    bsBranchs.Open;
    if not bsBranchs.Locate('cNum',str,[])
    then
    begin
      MessageBoxError('获取部门信息数据错误!');
    end
    else
    begin
      iGrade:=bsBranchs.FieldByName('iGrade').AsInteger;
      if (Tree.Selected.Index<0) or (Tree.Selected.Count>0)
      then ShowHide.Enabled:=False
      else ShowHide.Enabled:=True;

      if bsBranchs.FieldByName('iState').AsInteger=1
      then ShowHide.Checked:=False
      else ShowHide.Checked:=True;
    end;
  end;
end;

procedure TFrm_Branchs.TB_InsertClick(Sender: TObject);
begin

  N_StateClick(Sender);
  //
  with DM do
  begin
    bsBranchs.Insert;
    bsBranchs.FieldByName('id').AsString:=GetGUID;
    bsBranchs.FieldByName('istate').AsInteger:=0;
    DM.bsBranchs.FieldByName('iGrade').AsInteger:=iGrade+1; //Length(Trim(DB_cClassNum.Text)) div 2;
    bsBranchs.Post;
  end;
end;

procedure TFrm_Branchs.N_StateClick(Sender: TObject);
var
  i:Integer;
begin
  for i:=0 to TB_Main.ButtonCount-1 do
    TB_Main.Buttons[i].Enabled:=not TB_Main.Buttons[i].Enabled;
  //  
  P_Edit.Enabled:=TB_Post.Enabled;
  Tree.Enabled:=TB_Insert.Enabled;
end;

procedure TFrm_Branchs.TB_PostClick(Sender: TObject);
begin
  TRY
    IF Trim(DB_cClassNum.Text)=''
    then begin
      MessageBoxInfo('请输入部门编码!');
      Exit;
    end;
    IF DM.bsBranchs.State=dsInsert
    THEN
      IF MessageBoxQuery('请确认,上级部门是'+Tree.Selected.Text+',保存吗?')=IDNO
      then BEGIN
        TB_CancelClick(Sender);
        Exit;
      END;
  EXCEPT
    MessageBoxWarning('请选择上级部门,保存失败!');
    TB_CancelClick(Sender);
    Exit;
  END;
  //
  N_StateClick(Sender);
  DM.bsBranchs.Edit;
  if ShowHide.Checked
  then DM.bsBranchs.FieldByName('iState').AsInteger:=2
  else DM.bsBranchs.FieldByName('iState').AsInteger:=1;
  DM.bsBranchs.Post;
  TB_RefreshClick(Sender);
end;

procedure TFrm_Branchs.TB_UpdateClick(Sender: TObject);
begin
  N_StateClick(Sender);
end;

procedure TFrm_Branchs.TB_DeleteClick(Sender: TObject);
begin
  if MessageBoxQuery('确认删除当前选择项吗?')=IDNO THEN Exit;
  if (Tree.Selected.Index<0) or (Tree.Selected.Count>0)   then Exit;
  //if DM.bsBranchs.FieldByName('cNum').AsString='00' then Exit;
  if  DM.bsBranchs.RecordCount>1
  then begin
    DM.bsBranchs.Delete;
    //DM.bsBranchs.Edit;
    //DM.bsBranchs.FieldByName('iState').AsInteger:=-1;
    //DM.bsBranchs.Post;
  end;
  TB_RefreshClick(Sender);
end;

procedure TFrm_Branchs.TB_CancelClick(Sender: TObject);
begin
  N_StateClick(Sender);
  DM.bsBranchs.Cancel;
  if DM.bsBranchs.FieldByName('iState').AsInteger=0 then
    DM.bsBranchs.Delete;
end;

procedure TFrm_Branchs.TB_CloseClick(Sender: TObject);
begin
  Close;
end;

procedure TFrm_Branchs.TreeDblClick(Sender: TObject);
begin
  if (Choosed) and (Tree.Selected.Count<=0)then
  begin
    Close;
    try
      strid:=DM.bsBranchs.FieldByName('id').AsString;
      strNo:=DM.bsBranchs.FieldByName('cNum').AsString;
      strName:=DM.bsBranchs.FieldByName('cName').AsString;
      {
      with DM do
      begin
        if trim(TBname)='' then
        begin
          strid:=bsBranchs.FieldByName('id').AsString;
        end
        else
        begin
          TADOQuery(FindComponent(TBname)).Edit;
          TADOQuery(FindComponent(TBname)).FieldByName('cBranchsNum').AsString:=bsBranchs.FieldByName('id').AsString;
        end;
      end;
      }
    except
      MessageBoxInfo('部门选取失败!');
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?