📄 zfrm_customermanageru.pas
字号:
{
'┌───────────────────────────────────┐
'│**********************************************************************│
'│*** 文件名称:zfrm_customermanagerU.pas 《用户管理模块》 *│
'│*** 功能描述:此摸块是- 新建、添加用户和所属部门,并对其进行维护 *│
'│* 《用户信息表"ef_customerinfo"》 *│
'│* 《部门类型表"ef_department" 》 *│
'│* 《用户部门交叉表"de_customerdepartment"》 *│
'│* 执行相应的处理 — (增、删、改、查) *│
'│*** 编写人员:朱华 *│
'│*** 编写日期:2001-04-24 *│
'│*** 修改人员: *│
'│*** 修改日期: *│
'│**********************************************************************│
'└───────────────────────────────────┘
}
unit zfrm_customermanagerU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ToolWin, ExtCtrls, Menus, StdCtrls, ImgList, Db, DBTables;
type
Tzfrm_customerM = class(TForm)
MainMenu1: TMainMenu;
F1: TMenuItem;
H1: TMenuItem;
StatusBar1: TStatusBar;
TreeView1: TTreeView;
ListView1: TListView;
Image1: TImage;
Panel1: TPanel;
ImageList1: TImageList;
PopupMenu1: TPopupMenu;
PopupMenu2: TPopupMenu;
Query1: TQuery;
N2: TMenuItem;
N3: TMenuItem;
M1: TMenuItem;
N4: TMenuItem;
D1: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
U1: TMenuItem;
N7: TMenuItem;
D2: TMenuItem;
Query2: TQuery;
Query3: TQuery;
Timer1: TTimer;
Query4: TQuery;
N8: TMenuItem;
N10: TMenuItem;
A1: TMenuItem;
N11: TMenuItem;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton5: TToolButton;
ToolButton3: TToolButton;
ImageList2: TImageList;
ImageList3: TImageList;
N9: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
X1: TMenuItem;
N13: TMenuItem;
D3: TMenuItem;
N1: TMenuItem;
N12: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
D4: TMenuItem;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton4: TToolButton;
ToolButton12: TToolButton;
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormResize(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure M1Click(Sender: TObject);
procedure TreeView1Edited(Sender: TObject; Node: TTreeNode;
var S: String);
procedure FormCreate(Sender: TObject);
procedure D1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure U1Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure D2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure H1Click(Sender: TObject);
private
{ Private declarations }
procedure z_resetDepartmentName(); // 恢复部门名
public
{ Public declarations }
procedure z_flashFormP(); // 刷新ListView1
procedure z_flashTreeView1P(); // 刷新TreeView1
function z_deleteTreeView1P(z_g_de_idI: integer):boolean; // 删除TreeView1部门
procedure z_deleteTreeView1AllP(z_g_de_idI: integer); // 递归删除TreeView1
end;
type
PMyRec = ^TMyRec;
TMyRec = record
z_de_id :integer; // 声明-(部门ID )-变量
z_de_level :integer; // 声明-(部门级别)-变量
z_de_name :string ; // 声明-(部门名称)-变量
z_de_preid :integer; // 声明-(上级ID )-变量
end;
var
zfrm_customerM: Tzfrm_customerM;
// 自定义变量
z_nodesA :array[0..10000] of TtreeNode; // 声明-(部门节点)-数组
z_tempnode :TtreeNode; // 声明-(选中节点)-变量
z_de_id :integer=1; // 声明-(部门ID )-变量
z_de_level :integer; // 声明-(部门级别)-变量
z_de_name :string ; // 声明-(部门名称)-变量
z_de_nameS :string ; // 声明-(部门名称)-变量
z_de_preid :integer; // 声明-(上级ID )-变量
z_TreeViewDate_STU: PMyRec;
implementation
uses zmod_commonDateU, zfrm_addcustomerU, zfrm_newcustomerU, zfrm_inputboxU;
{$R *.DFM}
procedure Tzfrm_customerM.z_deleteTreeView1AllP(z_g_de_idI: integer);
begin
//
// 删除部门
try {try <1> S}
// 选出删除部门子部门
Query2.SQL.Clear ;
Query2.SQL.Add('Select g_de_id from ef_department where (de_preid=:de_preid) order by g_de_id') ;
Query2.ParamByName('de_preid').AsInteger := z_g_de_idI ;
Query2.Prepare ;
Query2.Open ;
Query2.First ;
zh_Delete_SQL := 'insert into temp1 values(:g_de_id)' ;
Query1.SQL.Clear ;
Query1.SQL.Add(zh_Delete_SQL);
Query1.ParamByName('g_de_id').AsInteger := z_g_de_idI ;
Query1.Prepare ;
Query1.ExecSQL ;
While not Query2.Eof do
begin
z_deleteTreeView1AllP(Query2.FieldByName('g_de_id').AsInteger);
Query1.SQL.Clear ;
Query1.SQL.Add(zh_Delete_SQL);
Query1.ParamByName('g_de_id').AsInteger := Query2.FieldByName('g_de_id').AsInteger ;
Query1.Prepare ;
Query1.ExecSQL ;
Query2.Next ;
end;
{
zh_Delete_SQL := 'delete from ef_department where g_de_id=:g_de_id';
//showmessage(zh_Insert_SQL);
Query1.SQL.Clear ;
Query1.SQL.Add(zh_Delete_SQL);
Query1.ParamByName('g_de_id').AsInteger := z_g_de_idI ;
Query1.Prepare ;
Query1.ExecSQL ;
}
except
// 数据库错
Application.MessageBox(
'数据库删除错误,请您检查',
'数据库错',
MB_OK+MB_ICONError);
end; {try <1> E}
//
end;
procedure Tzfrm_customerM.z_resetDepartmentName();
begin
// 恢复部门名称
Query1.Close ;
Query1.SQL.Clear ;
Query1.SQL.Add('Select de_name from ef_department where g_de_id=' + IntToStr(z_de_id)) ;
Query1.Prepare ;
Query1.Open ;
Query1.First ;
z_tempnode.Text := Query1.FieldByName('de_name').AsString ; ;
Query1.Close ;
Timer1.Enabled := False ;
Application.MessageBox(
'部门名称输入应小于25个汉字或不能为空,请您重新输入',
'输入错误',
MB_OK+MB_ICONError) ;
//
end;
function Tzfrm_customerM.z_deleteTreeView1P(z_g_de_idI: integer):boolean;
begin
// 删除部门
try {try <1> S}
// 选出删除部门子部门
Query2.Close ;
Query2.SQL.Clear ;
Query2.SQL.Add('Select g_de_id from ef_department where (de_preid=:de_preid) order by g_de_id') ;
Query2.ParamByName('de_preid').AsInteger := z_g_de_idI ;
Query2.Prepare ;
Query2.Open ;
//Query2.First ;
//While not Query2.Eof do
//begin
// z_deleteTreeView1P(Query2.FieldByName('g_de_id').AsInteger);
// Query2.Next ;
//end;
if Query2.RecordCount > 0 then
begin
// 数据库错
Application.MessageBox(
'不能删除含有子部门的部门,请您检查',
'数据库错',
MB_OK+MB_ICONError);
z_deleteTreeView1P := False ;
Exit ;
end;
// 删除操作
zh_returnV :=Application.MessageBox(
'您是否要删除该部门?',
'删除部门',
MB_YesNo++MB_ICONWARNING);
if zh_returnV=IDNO then
begin
z_deleteTreeView1P := False ;
Exit;
end;
zh_Delete_SQL := 'delete from ef_department where g_de_id=:g_de_id';
//showmessage(zh_Insert_SQL);
Query1.Close;
Query1.SQL.Clear ;
Query1.SQL.Add(zh_Delete_SQL);
Query1.ParamByName('g_de_id').AsInteger := z_g_de_idI ;
Query1.Prepare ;
Query1.ExecSQL ;
z_deleteTreeView1P := True ;
except
// 数据库错
Application.MessageBox(
'数据库删除错误,请您检查',
'数据库错',
MB_OK+MB_ICONError);
z_deleteTreeView1P := False ;
end; {try <1> E}
//
end;
procedure Tzfrm_customerM.z_flashTreeView1P();
var
I :integer;
de_id :integer; // 声明-(部门ID )-变量
de_name :string ; // 声明-(部门名称)-变量
de_preid :integer; // 声明-(上级ID )-变量
begin
// TreeView1 — 部门结构,初始化
TreeView1.Items.Clear ;
try
Query1.Close ;
Query1.SQL.Clear ;
Query1.SQL.Add('Select * from ef_department order by de_level,g_de_id') ;
Query1.Prepare ;
Query1.Open ;
Query1.First ;
While not Query1.Eof do
begin
de_id := Query1.FieldByName('g_de_id').AsInteger ;
de_name := Query1.FieldByName('de_name').AsString ;
de_preid := Query1.FieldByName('de_preid').AsInteger ;
I:= de_id ;
// 为结构赋值
New(z_TreeViewDate_STU);
z_TreeViewDate_STU.z_de_id := I ;
z_TreeViewDate_STU.z_de_name := de_name ;
z_TreeViewDate_STU.z_de_preid := de_preid ;
if (de_preid=0) then
begin
z_nodesA[I] := TreeView1.Items.AddObject(TreeView1.Items.GetFirstNode, de_name, z_TreeViewDate_STU) ;
z_nodesA[I].ImageIndex := 0 ;
z_nodesA[I].SelectedIndex := 0 ;
z_de_id := I ;
z_de_level := 0 ;
z_de_nameS := de_name ;
z_de_preid := de_preid ;
Query1.Next ;
continue ;
end;
z_nodesA[I] := TreeView1.Items.AddChildObject(z_nodesA[de_preid], de_name, z_TreeViewDate_STU) ;
z_nodesA[I].ImageIndex := 1 ;
z_nodesA[I].SelectedIndex := 2 ;
Query1.Next ;
end;
// 展开所有树结构
Query1.First ;
While not Query1.Eof do
begin
de_id := Query1.FieldByName('g_de_id').AsInteger ;
z_nodesA[de_id].Expanded := True ;
Query1.Next ;
end;
except
end;
//
end;
procedure Tzfrm_customerM.z_flashFormP();
var
NewItem: TListItem;
begin
//
ListView1.Items.Clear;
if z_de_id=1 then
begin
zh_Select_SQL := 'select * from ef_customerinfo order by g_cu_id' ;
end
else
begin
zh_Select_SQL := 'select * from ef_customerinfo where cu_loginname in (select cu_loginname from ef_customerdepartment where g_de_id=' + IntToStr(z_de_id) + ') order by g_cu_id' ;
end; {if <1> E}
try {try <1> S}
//zh_Select_SQL := 'select * from ef_customerinfo order by g_cu_id' ;
Query4.Close ;
Query4.SQL.Clear ;
Query4.SQL.Add(zh_Select_SQL) ;
Query4.Prepare ;
Query4.Open ;
Query4.First ;
except
// 数据库错
Application.MessageBox(
'数据库连接错误,请您检查或系统管理员联系',
'数据库错',
MB_OK+MB_ICONError) ;
Exit ;
end; {try <1> E}
while not Query4.Eof do
begin {while <1> S}
NewItem:=ListView1.Items.add ;
NewItem.Caption :=Query4.Fields[3].AsString ;
NewItem.SubItems.Add(Query4.Fields[1].AsString) ;
NewItem.SubItems.Add(Query4.Fields[4].AsString) ;
NewItem.SubItems.Add(Query4.Fields[5].AsString) ;
NewItem.SubItems.Add(Query4.Fields[6].AsString) ;
NewItem.SubItems.Add(Query4.Fields[7].AsString) ;
NewItem.SubItems.Add(Query4.Fields[8].AsString) ;
NewItem.ImageIndex := 3 ;
Query4.Next ;
end; {while <1> E}
//
end;
procedure Tzfrm_customerM.Image1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
temp1 :integer;
begin
//
if (ssLeft in Shift)then
begin
temp1 := X + TreeView1.Width ;
if (temp1 < 30) then Exit ;
if (temp1 > 600) then Exit ;
Panel1.Left := temp1 ;
Panel1.Height := image1.Height ;
end;
//
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -