📄 bm_telu.~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 + -