📄 dfm_groupinfo.pas
字号:
unit dfm_groupinfo;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Buttons, Mask, DBCtrls, ExtCtrls, Menus, Db, DBTables;
type
Tdfmgroupinfo = class(TForm)
Panel1: TPanel;
GroupBox2: TGroupBox;
TreeView2: TTreeView;
Label3: TLabel;
Panel2: TPanel;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label4: TLabel;
DBEdit3: TDBEdit;
BitBtn_add: TBitBtn;
BitBtn_del: TBitBtn;
BitBtn_edit: TBitBtn;
BitBtn_ok: TBitBtn;
BitBtn_cancel: TBitBtn;
Label5: TLabel;
Dsqryindex: TDataSource;
qryindex: TQuery;
Label6: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure TreeView2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn_okClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn_addClick(Sender: TObject);
procedure BitBtn_delClick(Sender: TObject);
procedure BitBtn_editClick(Sender: TObject);
procedure BitBtn_cancelClick(Sender: TObject);
private
{ Private declarations }
procedure ShowMenuItems(Node: TTreeNode; Item: TMenuItem);
procedure tblstachange;
public
{ Public declarations }
end;
var
dfmgroupinfo: Tdfmgroupinfo;
vfield:string;
implementation
uses dfm_team, Main;
{$R *.DFM}
procedure Tdfmgroupinfo.tblstachange;
begin
case dfmteam.tbltrole.State of
dsbrowse:
begin
dbedit1.enabled:=false;
dbedit2.enabled:=false;
dbedit3.enabled:=false;
BitBtn_add.Enabled :=true;
BitBtn_del.Enabled :=true;
BitBtn_edit.Enabled :=true;
BitBtn_ok.Enabled :=false;
BitBtn_cancel.Enabled :=false;
treeview2.Enabled :=false;
end;
dsinsert:
begin
dbedit1.enabled:=true;
dbedit2.enabled:=true;
dbedit3.enabled:=true;
BitBtn_add.Enabled :=false;
BitBtn_del.Enabled :=false;
BitBtn_edit.Enabled :=false;
BitBtn_ok.Enabled :=true;
BitBtn_cancel.Enabled :=true;
treeview2.Enabled :=false;
end;
dsedit:
begin
dbedit1.enabled:=false;
dbedit2.enabled:=true;
dbedit3.enabled:=true;
BitBtn_add.Enabled :=false;
BitBtn_del.Enabled :=false;
BitBtn_edit.Enabled :=false;
BitBtn_ok.Enabled :=true;
BitBtn_cancel.Enabled :=true;
treeview2.Enabled :=true;
end;
end;
end;
procedure Tdfmgroupinfo.ShowMenuItems(Node: TTreeNode; Item: TMenuItem);
//type
//pch=^string;
var
//pstr:pch;
str:String;
nCnt: Integer;
n: TTreeNode;
begin
If Not dfmteam.tbltMenu.Active Then dfmteam.tbltMenu.Open;
str:=Item.Caption;{+'='+Item.Name;}
// dfmteam.tbltmenu.Append ; {将数据项填入数据表}
// dfmteam.tbltmenu.FieldByName ('cmenucap').asstring:=item.caption; {将数据项填入数据表}
// dfmteam.tbltmenu.fieldbyname ('cmenuname').asstring:=item.Name; {将数据项填入数据表}
// dfmteam.tbltmenu.Post ; {提交}
if Node = nil then
n := Treeview2.Items.AddChild(node, '系统菜单项')
// Treeview2.items.Itemid:=item.Name
else
with dfmteam.tbltmenu do
begin
indexfieldnames:='cmenuname';
// first;
if locate('cmenuname',item.name,[loPartialKey]) then
if dfmteam.tbltmenu.fieldbyname('cmenuind').asstring='0' then
if pos(vgroup+'1',fieldbyname('climit').asstring)>0 then
begin
n := Treeview2.Items.AddChild(Node,'√'+ str);
// Node.stateIndex := Node.level;
end
else
begin
n := Treeview2.Items.AddChild(Node,'〤'+ str);
// Node.stateIndex := Node.level;
end
else
begin
// treeview2.Items.
n := Treeview2.Items.AddChild(Node, '〇'+str);
// Node.stateIndex := Node.level;
end;
end;
// n := Treeview2.Items.AddChild(Node, str);
//. AddChildobject(Node, Item.Caption,pstr);
//@ 第归调用,显示全部菜单结构
for nCnt := 0 to Item.Count - 1 do
ShowMenuItems(n, Item.Items[nCnt]);
end;
procedure Tdfmgroupinfo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure Tdfmgroupinfo.FormShow(Sender: TObject);
begin
TreeView2.Items.BeginUpdate;
ShowMenuItems(nil,mainform.mmMainMenu.Items);
TreeView2.Items.EndUpdate;
// treeview2.AutoExpand:=true;
// treeview2.Items:=true;
treeview2.FullExpand;
treeview2.refresh;
end;
procedure Tdfmgroupinfo.TreeView2MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
// AnItem: TTreeNode;
MyHitTest : THitTests;
fstr:string; {第一个字符}
lstr:string; {后面的字符}
wstr:Integer; {字符串的长度}
iname:string; {item名}
vname:string; {字符串}
vlen:integer; {组编号的长度}
ind:integer; {组编号在字符串中的位置}
begin
// AnItem := TreeView1.GetNodeAt(X, Y);
MyHitTest := TreeView2.GetHitTestInfoAt(X,Y);
if htOnlabel in MyHitTest then
begin
If ( TreeView2.Selected <> nil ) Then
begin
iname:=treeview2.Selected.Text;
wstr:=length(treeview2.Selected.Text);
fstr:=copy(trim(treeview2.Selected.Text),0,2);
lstr:=copy(trim(treeview2.selected.text),3,wstr);
dfmteam.tbltmenu.IndexFieldNames:='cmenucap';
if dfmteam.tbltmenu.locate('cmenucap',lstr,[loPartialKey]) then
begin
if '√'=fstr then
begin
treeview2.Selected.text:='〤'+lstr;
vname:=dfmteam.tbltmenu.fieldbyname('climit').asstring;
vlen:=length(vgroup)+2;
ind:=pos(vgroup,vname);
delete(vname,ind,vlen);
insert(vgroup+'0'+',',vname,ind);
dfmteam.tbltmenu.Edit;
dfmteam.tbltmenu.fieldbyname('climit').asstring:=vname;
dfmteam.tbltmenu.Post;
end;
if '〤'=fstr then
begin
treeview2.Selected.text:='√'+lstr;
vname:=dfmteam.tbltmenu.fieldbyname('climit').asstring;
vlen:=length(vgroup)+2;
ind:=pos(vgroup,vname);
delete(vname,ind,vlen);
insert(vgroup+'1'+',',vname,ind);
dfmteam.tbltmenu.Edit;
dfmteam.tbltmenu.fieldbyname('climit').asstring:=vname;
dfmteam.tbltmenu.Post;
end;
end;
end;
end;
end;
procedure Tdfmgroupinfo.BitBtn_okClick(Sender: TObject);
var
// ListItem: TListItem;
vsq:string;
begin
vsq:='';
vfield:=dbedit1.text;
if (length(dbedit1.text)=3) and (dbedit2.Text<>'') then
begin
if dfmteam.tbltrole.State=dsedit then
begin
dfmteam.tbltrole.Post;
tblstachange;
self.close;
end
else
begin
dfmteam.tbltrole.Post;
tblstachange;
with dfmteam.tbltmenu do
begin
first;
while not eof do
begin
edit;
fieldbyname('climit').asstring:=fieldbyname('climit').asstring
+vfield+fieldbyname('cmenuind').asstring+',';
next;
end;
end;
self.close;
end;
dfmteam.showlistview1;
end
else
showmessage('组编号为3位,组名称不能为空!');
end;
procedure Tdfmgroupinfo.FormCreate(Sender: TObject);
begin
tblstachange;
end;
procedure Tdfmgroupinfo.BitBtn_addClick(Sender: TObject);
begin
dfmteam.tbltrole.append;
tblstachange;
end;
procedure Tdfmgroupinfo.BitBtn_delClick(Sender: TObject);
var
vname:string;
ind:integer;
vlen:integer;
begin
vfield:=dbedit1.Text;
if trim(vfield)<>'MAS' then
begin
dfmteam.tbltrole.delete;
dfmteam.tbltmenu.first;
while not dfmteam.tbltmenu.eof do
begin
vname:=dfmteam.tbltmenu.fieldbyname('climit').asstring;
ind:=pos(vfield,vname);
vlen:=length(vfield)+2;
delete(vname,ind,vlen);
dfmteam.tbltmenu.edit;
dfmteam.tbltmenu.fieldbyname('climit').asstring:=vname;
dfmteam.tbltmenu.next;
end;
dfmteam.showlistview1;
end
else
application.MessageBox ('不能删除管理员组!','提示信息',mb_ok);
end;
procedure Tdfmgroupinfo.BitBtn_editClick(Sender: TObject);
begin
dfmteam.tbltrole.edit;
tblstachange;
end;
procedure Tdfmgroupinfo.BitBtn_cancelClick(Sender: TObject);
begin
dfmteam.tbltrole.cancel;
tblstachange;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -