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

📄 bm_telu.~pas

📁 DELPHI办公全套管理系统
💻 ~PAS
字号:
unit BM_TELU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DBCtrls, db,ExtCtrls, ComCtrls, Menus, ImgList,
  Buttons;

type
  TBM_TELF = class(TForm)
    Panel1: TPanel;
    StatusBar1: TStatusBar;
    TreeView1: TTreeView;
    Splitter1: TSplitter;
    Panel2: TPanel;
    ImageList2: TImageList;
    ImageList1: TImageList;
    pmOperate: TPopupMenu;
    N_insert: TMenuItem;
    N_delete: TMenuItem;
    N_edit: TMenuItem;
    N_cancel: TMenuItem;
    N_save: TMenuItem;
    N7: TMenuItem;
    N_refresh: TMenuItem;
    Panel3: TPanel;
    add: TSpeedButton;
    del2: TSpeedButton;
    save: TSpeedButton;
    fresh: TSpeedButton;
    closeme: TSpeedButton;
    edit: TSpeedButton;
    hui1: TSpeedButton;
    DBNavigator1: TDBNavigator;
    Panel6: TPanel;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    DBEdit13: TDBEdit;
    Label14: TLabel;
    DBEdit14: TDBEdit;
    OpenDialog1: TOpenDialog;
    DBImage1: TDBImage;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure addClick(Sender: TObject);
    procedure del2Click(Sender: TObject);
    procedure editClick(Sender: TObject);
    procedure hui1Click(Sender: TObject);
    procedure saveClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure closemeClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
     Node_Parent: TTreeNode; //存储父节点
     Node_Child: TTreeNode; //存储当前节点
     b_pd: bool; //用于判断点击的是添加还是编辑
    //在添加、编辑和浏览状态互置按钮的有效性
    procedure button_valid;
    procedure refreshTree;

    procedure noedit;
    procedure yesedit;
    procedure cls;
    procedure saveimage;
    procedure loadimage;


  public
    { Public declarations }

  end;

var
  BM_TELF: TBM_TELF;
  AORE:boolean;
implementation

uses BM_DMU;

{$R *.dfm}

procedure TBM_TELF.button_valid;
begin
    DBEDIT1.Enabled := NOT DBEDIT1.Enabled ;
    DBEDIT2.Enabled := NOT DBEDIT2.Enabled ;
    DBEDIT3.Enabled := NOT DBEDIT3.Enabled ;
    DBEDIT4.Enabled := NOT DBEDIT4.Enabled ;
    DBEDIT5.Enabled := NOT DBEDIT5.Enabled ;
    DBEDIT6.Enabled := NOT DBEDIT6.Enabled ;
    DBEDIT7.Enabled := NOT DBEDIT7.Enabled ;
    DBEDIT8.Enabled := NOT DBEDIT8.Enabled ;
    DBEDIT9.Enabled := NOT DBEDIT9.Enabled ;
    DBEDIT10.Enabled := NOT DBEDIT10.Enabled ;
    DBEDIT11.Enabled := NOT DBEDIT11.Enabled ;
    DBEDIT12.Enabled := NOT DBEDIT12.Enabled ;
    DBEDIT13.Enabled := NOT DBEDIT13.Enabled ;
    DBEDIT14.Enabled := NOT DBEDIT14.Enabled ;

    SpeedButton6.Enabled :=not SpeedButton6.Enabled ;
    SpeedButton7.Enabled :=not SpeedButton7.Enabled ;

  add.Enabled := not add.Enabled ;
  del2.Enabled := not del2.Enabled ;
  edit.Enabled :=not edit.Enabled ;
  hui1.Enabled := not hui1.Enabled ;
  save.Enabled :=not save.Enabled ;
  fresh.Enabled :=not fresh.Enabled ;




end;

procedure TBM_TELF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;

procedure TBM_TELF.refreshTree;
var
  mynode_1, mynode_2, mynode_3: Ttreenode;
  s_bm_1, s_bm_2, s_bm_3: string;
  s_mc_1, s_mc_2, s_mc_3: string;
begin
  DM.address.Active := True;
  treeview1.Items.clear;
  mynode_1 := Treeview1.Items.Add(Treeview1.topitem, '北明通讯录');
  mynode_1.imageindex := 0;
  mynode_1.stateindex := -1;
  mynode_1.selectedindex := 1;
  DM.address.indexfieldnames := '电话编号';
  DM.address.First;
  while not DM.address.Eof do
  begin
    s_bm_1 := DM.address.fieldbyname('电话编号').asstring;
    s_mc_1 := DM.address.fieldbyname('名称').asstring;
    if length(trim(s_bm_1)) = 2 then
    begin
      mynode_2 := Treeview1.items.addchild(mynode_1, '[' + s_bm_1 + '] ' + s_mc_1);
      mynode_2.imageindex := 0;
      mynode_2.stateindex := -1;
      mynode_2.selectedindex := 1;
    end;
    if length(trim(s_bm_1)) = 5 then
    begin
      mynode_3 := Treeview1.items.addchild(mynode_2, '[' + s_bm_1 + '] ' + s_mc_1);
      mynode_3.imageindex := 0;
      mynode_3.stateindex := -1;
      mynode_3.selectedindex := 1;
    end;
    DM.address.next;
  end;

end;

procedure TBM_TELF.FormCreate(Sender: TObject);
begin
refreshTree;
end;

procedure TBM_TELF.TreeView1Click(Sender: TObject);
var
  mynode: Ttreenode;
  s_value_1: string;
begin
  if Treeview1.Items.Count = 0 then
    exit;
  mynode := Treeview1.selected;
  //如果是在目录树的第一级,代表是第一级部门,它的部门编码只有两位
  if mynode.Level = 1 then
  begin
    //从目录树的节点标题中,提取部门编码
    s_value_1 := copy(mynode.text, 2, 2);
    //DM.BUMEN.IndexFieldNames := '部门编码';
    //DM.BUMEN.findkey([s_value_1]);
    DM.ADDRESS.Locate('电话编号',s_value_1,[]);
    DM.ADDRESS.FieldByName('电话编号').editmask := '99;1;_';

  end;


   if mynode.Level = 2 then
  begin
    //从目录树的节点标题中,提取部门编码
    s_value_1 := copy(mynode.text, 2, 5);
    DM.address.Locate('电话编号',s_value_1,[]);
    DM.address.FieldByName('电话编号').editmask := '99-999;1;_';

  end;

   loadimage;
end;

procedure TBM_TELF.SpeedButton6Click(Sender: TObject);
begin
OpenDialog1.Execute ;
if  OpenDialog1.FileName<>'' then dbimage1.Picture.LoadFromFile(OpenDialog1.FileName );
end;


procedure TBM_TELF.addClick(Sender: TObject);
var
  gs_global: string; //存储添加的父节点标题;
begin
  b_pd := true;
  Node_Parent := Treeview1.selected;
  if Node_Parent.level = 2 then
  begin
    Application.messagebox('最底层不能添加,请在上层添加', '物资管理系统', mb_iconinformation + mb_defbutton1);
    exit;
  end;
  //设置按扭的有效性
  button_valid;
  if Node_Parent.level = 0 then
  begin
    DM.ADDRESS.Insert;
    DM.ADDRESS.FieldByName('电话编号').editmask := '99;1;_';

   DBEdit1.setfocus;
  end;
  if Node_Parent.level = 1 then
  begin
    gs_global := copy(Node_Parent.text, 2, 2);
    DM.address.insert;
    DM.address.FieldByName('电话编号').editmask := '99-99;1;_';
    DBEdit1.setfocus;
    DBEdit1.text := gs_global;
  end;

end;

procedure TBM_TELF.del2Click(Sender: TObject);
var
  mynode: Ttreenode;
  i:integer;
  bm:string;
begin
  mynode := Treeview1.selected;
  //根目录不须删除
  if mynode.level = 0 then  exit;
  //如果删除的是第二级目录  
  if mynode.level = 2 then
  begin
    if DM.ADDRESS.recordcount <> 0 then
    begin
      if Application.messagebox('请确认是否要删除?', '北明办公管理系统', mb_iconinformation + mb_yesno) = idyes then
      begin
        DM.ADDRESS.Delete;
        DM.ADDRESS.UpdateBatch();
        Treeview1.Items.delete(mynode);
      end;
    end
    else
    begin
      Application.messagebox('已无记录可删除', '北明办公管理系统', mb_iconinformation + mb_defbutton1);
      exit;
    end;
    EXIT;
  end;
  //如果删除是第一级目录,还得删除第二级目录
if mynode.level = 1 then
  begin
        // dm.BUMEN.Close;
         with dm.QALL do
         begin
                   close;
                   sql.Clear ;
                   sql.Add('select * from 通讯录 where 电话编码 like "' +copy(mynode.text, 2, 2)+'%"');
                   open;
                   first;
             if Application.messagebox('请确认是否要删除及包括的子目录?', '北明办公管理系统', mb_iconinformation + mb_yesno) = idyes then
               begin
                 for i:=0 to recordcount-1 do
                  begin
                  bm:=dm.QALL.fieldbyname('电话编码').AsString ;
                      with dm.QALL3 do
                         begin
                           close;
                           sql.Clear ;
                           sql.Add('delete from 通讯录 where 电话编码="'+bm+'"');
                           ExecSQL;
                         end;
                    next; 
                   end;
                   Treeview1.Items.delete(mynode);
                   dm.ADDRESS.Close ;
                   dm.ADDRESS.Open ;
               end;
         end;
end;

end;

procedure TBM_TELF.editClick(Sender: TObject);
begin
  b_pd := false;
  Node_Child := Treeview1.selected;
  if Node_Child.level = 0 then
  begin
    Application.messagebox('最顶层不能编辑,请在下层编辑', '物资管理系统', mb_iconinformation + mb_defbutton1);
    exit;
  end;
  //设置按扭有效性
  button_valid;
  Node_Parent := Node_Child.parent;
  if Node_Parent.level = 0 then
  begin
    DM.ADDRESS.edit;
    DM.ADDRESS.FieldByName('电话编号').editmask := '99;1;_';

  end;
  if Node_Parent.level = 1 then
  begin
    DM.ADDRESS.edit;
    DM.ADDRESS.FieldByName('电话编号').editmask := '99-99;1;_';

  end;
end;

procedure TBM_TELF.hui1Click(Sender: TObject);
begin
DM.address.cancel;
  
  button_valid;
end;

procedure TBM_TELF.saveClick(Sender: TObject);
var
  s_bm, s_mc: string;
begin
  if Node_Parent.level = 0 then
  begin
    if length(trim(DBEdit1.text)) <> 2 then
    begin
      Application.messagebox('编码应为两位', '北明办公管理系统', mb_iconinformation + mb_defbutton1);
      exit;
    end;
  end;
  if Node_Parent.level = 1 then
  begin
    if copy(DBEdit1.text, 1, 2) <> copy(Node_Parent.text, 2, 2) then
    begin
      Application.messagebox('前面两位不能变,请确认!', '北明办公管理系统', mb_iconinformation + mb_defbutton1);
      DBEdit1.text := copy(Node_Parent.text, 2, 2);
      exit;
    end;
    if length(trim(DBEdit1.text)) <> 5 then
    begin
      Application.messagebox('编码应为五位', '北明办公管理系统', mb_iconinformation + mb_defbutton1);
      exit;
    end;
  end;
  s_bm := DBEdit1.text;
  s_mc := DBEdit2.text;
  DM.ZHIGONG.Open ;
  DM.ZHIGONG.Refresh;

// if DM.ADDRESS.state = dsinsert then
 //  begin
    if DM.ZHIGONG.Locate('部门编码',s_bm,[]) then
    begin
      application.MessageBox('部门编码已重复', '北明办公管理系统', mb_iconinformation + mb_defbutton1);

      DBEdit1.SetFocus;
      exit;
    end;
 // end;
  //判断是添加数据的保存还是编辑数据保存
  if b_pd = true then
    Treeview1.items.addchild(Node_Parent, '(' + s_bm + ') ' + s_mc)
  else
    Node_Child.Text := '(' + s_bm + ') ' + s_mc;

  saveimage;
  DM.address.post;
  DM.address.UpdateBatch();
  DM.address.Refresh;
  //设置按扭的有效性
  button_valid;

end;

procedure TBM_TELF.FormShow(Sender: TObject);
begin
  with DM do
  begin
    ADDRESS.Active := True;
    ZHIGONG.Active :=TRUE;
  end;
  refreshTree;
  Treeview1.topitem.Selected := true;
end;

procedure TBM_TELF.SpeedButton7Click(Sender: TObject);
begin
dbImage1.Picture.Assign(nil);
end;

procedure TBM_TELF.cls;
begin

end;

procedure TBM_TELF.loadimage;
var
 bmp:TBitmap;
begin

  try
  bmp := Tbitmap.Create;
  bmp.Assign(dm.address.Fields[10]);
  dbImage1.Picture.Bitmap:=bmp;
  finally
  bmp.Free;
  end;


end;

procedure TBM_TELF.noedit;
begin

end;

procedure TBM_TELF.saveimage;

  var 
MyJPEG : Tbitmap;
MS: TMemoryStream;
begin
MyJPEG := Tbitmap.Create;
 try
    with MyJPEG do
    begin
      Assign(dbImage1.Picture.Graphic);
      MS:=TMemoryStream.create;
      SaveToStream(MS);
      MS.Position:=0;
      TBlobField(dm.address.FieldbyName('照片')).LoadFromStream(MS);


    end;
  finally
    MyJPEG.Free;
  end;
end;

procedure TBM_TELF.yesedit;
begin

end;

procedure TBM_TELF.closemeClick(Sender: TObject);
begin
close;
end;

procedure TBM_TELF.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 CanClose:=true;
end;

end.

⌨️ 快捷键说明

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