📄 sys_sysmenu.pas
字号:
' PAra6, '+
' PAra7, '+
' PAra8, '+
' PAra9, '+
' PAra10) '+
'Values '+
'(:SysModuleCode, '+
' :PSysMenuCode, '+
' :SysMenuCode, '+
' :SysMenuName, '+
' :FormName, '+
' :PAra1, '+
' :PAra2, '+
' :PAra3, '+
' :PAra4, '+
' :PAra5, '+
' :PAra6, '+
' :PAra7, '+
' :PAra8, '+
' :PAra9, '+
' :PAra10)');
AssignsqlpAra;
execsql;
end;
openqr_menu;
btn_ok.Enabled :=False;
btn_Cancel.enabled:=False;
//以下修改Treeview1并纠正qr_menu的焦点
if Treeview1.Items.Count=1 then
begin
Treeview1.Items.AddChild(Treeview1.Selected,AdoQry_Tmp2.fieldbyname('SysMenuCode').AsString +' '+AdoQry_Tmp2.fieldbyname('SysMenuName').AsString);
Treeview1.SetFocus;
Treeview1.Selected.GetNext.Selected :=True;
end
else
begin
Lc_OldCode:=Trim(Edt_SysMenuCode.text);
set_Treeview_after_ok;
AdoQry_Tmp2.locate('SysMenuCode',Lc_OldCode,[]);
end;
s:=Treeview1.Selected.Text;
if s='Root' then
setedits(False,False,False)
else if copy(s,pos(' ',s)+1,1)='-' then
setedits(False,True,True)
else
setedits(False,True,True);
Treeview1.SetFocus;
tbsht_general.Show;
tlbtn_Add.enabled:=False;
tlbtn_Delete.enabled:=False;
Edt_SysMenuCode.Enabled:=True;
Edt_SysMenuCode.setfocus;
panel1.Visible:=True;
end;
refreshedits;
inherited;
end;
procedure TFrm_Sys_SysMenu.AssignsqlpAra;
begin
with AdoQry_Tmp1 do
begin
if length(Edt_SysMenuCode.Text)=4 then
Parameters.ParambyName('PSysMenuCode').Value:=''
else Parameters.ParambyName('PSysMenuCode').Value:=copy(Edt_SysMenuCode.Text,1,length(Trim(Edt_SysMenuCode.text))-2);
Parameters.ParambyName('SysMenuCode').Value:=Edt_SysMenuCode.text;
Parameters.ParambyName('SysModuleCode').Value:=Lc_SysModuleCode;
if not Panel1.Visible then Parameters.ParambyName('SysMenuId').Value:=Lc_SysMenuId;
Parameters.ParambyName('SysMenuName').Value:=Trim(Edt_SysMenuName.Text);
Parameters.ParambyName('FormName').Value:=Trim(Edt_FormName.Text)+' ';
Parameters.ParambyName('pAra1').Value:=edt_1.text+' ';
Parameters.ParambyName('pAra2').Value:=edt_2.text+' ';
Parameters.ParambyName('pAra3').Value:=edt_3.text+' ';
Parameters.ParambyName('pAra4').Value:=edt_4.text+' ';
Parameters.ParambyName('pAra5').Value:=edt_5.text+' ';
Parameters.ParambyName('pAra6').Value:=edt_6.text+' ';
Parameters.ParambyName('pAra7').Value:=edt_7.text+' ';
Parameters.ParambyName('pAra8').Value:=edt_8.text+' ';
Parameters.ParambyName('pAra9').Value:=edt_9.text+' ';
Parameters.ParambyName('pAra10').Value:=edt_10.text+' ';
end;
end;
procedure TFrm_Sys_SysMenu.tlbtn_DeleteClick(Sender: TObject);
var
fidstring,Sourceid,s:string;//父id;源id
begin
if Application.MessageBox(' 真的删除吗? ','信息提示',MB_yesno+mb_Iconquestion)=ID_No then
exit;
s:=Treeview1.Selected.Text;
if s='Root' then
begin
Application.MessageBox(' 系统保留项目,不能删除! ','错误提示',MB_OK+mb_Iconstop);
Treeview1.setfocus;
exit;
end;
if Treeview1.Selected.HaSchildren then
begin
Application.MessageBox(' 还有下级菜单,不能删除! ','错误提示',MB_OK+mb_Iconstop);
Treeview1.setfocus;
exit;
end;
with AdoQry_Tmp2 do
begin
fidstring:=fieldbyname('PSysMenuCode').asstring;
Sourceid:=fieldbyname('SysMenuCode').asstring;
end;
Changerecdel(fidstring,Sourceid);
openqr_menu;
set_Treeview_after_Delete;
s:=Treeview1.selected.text;
if s<>'Root'then
begin
Lc_OldCode:=GetCode(s);
AdoQry_Tmp2.locate('SysMenuCode',Lc_OldCode,[]);
refreshedits;
end;
if s='Root' then
setedits(False,False,False)
else if copy(s,pos(' ',s)+1,1)='-' then
setedits(False,True,True)
else
setedits(False,True,True);//既没有选中'Root'又没有选中'-'
if s<>'Root' then
refreshedits;
inherited;
end;
procedure TFrm_Sys_SysMenu.tlbtn_expandClick(Sender: TObject);
begin
if Treeview1.selected<>nil then
Treeview1.selected.expand(True);
inherited;
end;
procedure TFrm_Sys_SysMenu.tlbtn_CollApseClick(Sender: TObject);
begin
if Treeview1.selected<>nil then
Treeview1.selected.collApse(True);
inherited;
end;
procedure TFrm_Sys_SysMenu.ChangeID(Sourceid, tArgetid: string;isdelete:boolean);
var
s:string;//当isdelete为True时,Sourceid的后一个兄弟id
sqltext:string;
Sourcelen:string;
begin
if length(tArgetid)<>4 then
sqltext:='update SysMenu set '+
' SysMenuCode='''+tArgetid+''','+
' PSysMenuCode='''+copy(tArgetid,1,length(tArgetid)-2)+''' '+
' where SysModuleCode='''+Lc_SysModuleCode+''' '+
' and SysMenuCode='''+Sourceid+''''
else
sqltext:='update SysMenu set '+
' SysMenuCode='''+tArgetid+''' '+
' where SysModuleCode='''+Lc_SysModuleCode+''' '+
' and SysMenuCode='''+Sourceid+''' ';
with AdoQry_Tmp1 do
begin
Close;
sql.clear;
sql.text:=sqltext;
execsql;
end;
if isdelete then
begin
s:=copy(Sourceid,length(Sourceid)-1,2);
s:=copy(Sourceid,1,length(Sourceid)-2)+
prefixofstr(inttostr(strtoint(s)+1),'0',2);
end
else s:=tArgetid;
Sourcelen:=inttostr(length(Sourceid)+1);
sqltext:='update SysMenu set '+
' SysMenuCode='''+tArgetid+'''+substring(SysMenuCode,'+Sourcelen+',14),'+
' pSysMenuCode='''+tArgetid+'''+substring(pSysMenuCode,'+Sourcelen+',14) '+
' where SysModuleCode='''+Lc_SysModuleCode+''' and '+
'SysMenuCode<'''+s+''' and SysMenuCode>'''+Sourceid+'''';
with AdoQry_Tmp1 do
begin
Close;
sql.clear;
sql.text:=sqltext;
execsql;
end;
end;
procedure TFrm_Sys_SysMenu.Addnode(fidstring: string; treenode1: ttreenode);
var
recCount,i:integer;//记录数
s:string;
begin
with AdoQry_tmp2 do
begin
First;
recCount:=0;
while not eof do
begin
inc(recCount);
next;
end;
First;
for i:=1 to recCount do
begin
if fieldbyname('PSysMenuCode').AsString =fidstring then
begin
s:=fieldbyname('SysMenuCode').AsString+' '+fieldbyname('SysMenuName').AsString;
treenode:=Treeview1.Items.Addchild(treenode1,s );
treenode.SelectedIndex :=1;
if fieldbyname('SysMenuCode').AsString=Lc_OldCode then
begin
node1:=treenode;
refreshedits;
end;
Addnode(fieldbyname('SysMenuCode').asstring,treenode );
end;
Next;
end;
locate('SysMenuCode',fidstring,[]);
end;
end;
procedure TFrm_Sys_SysMenu.refreshedits;
begin
with AdoQry_Tmp2 do
begin
Lc_SysMenuId:=fieldbyname('SysMenuId').AsInteger;
Lc_SysMenuCode:=fieldbyname('SysMenuCode').AsString;
Edt_SysMenuCode.text:=fieldbyname('SysMenuCode').AsString;
Edt_FormName.text:=fieldbyname('FormName').AsString;
Edt_SysMenuName.text:=fieldbyname('SysMenuName').AsString;
edt_1.text:=fieldbyname('pAra1').asstring;
edt_2.text:=fieldbyname('pAra2').asstring;
edt_3.text:=fieldbyname('pAra3').asstring;
edt_4.text:=fieldbyname('pAra4').asstring;
edt_5.text:=fieldbyname('pAra5').asstring;
edt_6.text:=fieldbyname('pAra6').asstring;
edt_7.text:=fieldbyname('pAra7').asstring;
edt_8.text:=fieldbyname('pAra8').asstring;
edt_9.text:=fieldbyname('pAra9').asstring;
edt_10.text:=fieldbyname('pAra10').asstring;
end;
end;
procedure TFrm_Sys_SysMenu.CreateTreeview;
var
rootnode:ttreenode;
Currentid,s:string;
i,recCount:integer;
begin
Treeview1.Items.clear;
rootnode:=Treeview1.Items.Add(nil,'Root');
rootnode.SelectedIndex :=1;
with AdoQry_tmp2 do
begin
First;
recCount:=0;
while not eof do
begin
inc(recCount);
next;
end;
First;
for i:=1 to recCount do
begin
if fieldbyname('PSysMenuCode').AsString='' then
begin
Currentid:=fieldbyname('SysMenuCode').AsString ;
s:=Currentid+' '+fieldbyname('SysMenuName').AsString;
treenode:=Treeview1.Items.Addchild(rootnode,s);
treenode.SelectedIndex :=1;
if Currentid=Lc_OldCode then
begin
node1:=treenode;
refreshedits;
end;
Addnode(fieldbyname('SysMenuCode').asstring,treenode);
end;
locate('SysMenuCode',Currentid,[]);
next;
end;
end;
btn_ok.Enabled :=False;
btn_Cancel.enabled:=False;
tlbtn_Delete.Enabled :=True;
tlbtn_Add.Enabled :=True;
end;
procedure TFrm_Sys_SysMenu.openqr_menu;
begin
with AdoQry_Tmp2 do
begin
Close;
sql.clear;
sql.Add('select * from SysMenu '+
'where SysModuleCode=:SysModuleCode '+
'Order by PSysMenuCode,SysMenuCode ');
Parameters.ParamByName('SysModuleCode').Value:=Lc_SysModuleCode;
open;
end;
end;
procedure TFrm_Sys_SysMenu.setedits(setmenuid,setmenuName,setOtherInfo:boolean);
begin
if not setmenuid then Edt_SysMenuCode.Text:='';
if not setmenuName then Edt_SysMenuName.Text:='';
if not setOtherInfo then
begin
Edt_FormName.Text:='';
Edt_1.Text:='';
Edt_2.Text:='';
Edt_3.Text:='';
Edt_4.Text:='';
Edt_5.Text:='';
Edt_6.Text:='';
Edt_7.Text:='';
Edt_8.Text:='';
Edt_9.Text:='';
Edt_10.Text:='';
end;
Edt_SysMenuCode.Enabled:=setmenuid;
Edt_SysMenuName.Enabled:=setmenuName;
Edt_FormName.Enabled:=setOtherInfo;
end;
procedure TFrm_Sys_SysMenu.delcurrec(sqlstring:string);
begin
with AdoQry_Tmp1 do
begin
Close;
sql.clear;
sql.Add(sqlstring);
// ParambyName('moduleid').asstring:=moduleid;
// ParambyName('id').asstring:=Trim(Edt_SysMenuCode.text);
execsql;
end;
end;
procedure TFrm_Sys_SysMenu.Changerecok(fidstring,Sourceid: string);
var
i,Count:integer;
s,tArgetid:string;
brOtherBack:Array[1..99] of string;
begin
with AdoQry_Tmp2 do
begin
Count:=0;
First;
while not eof do
begin
if (fieldbyname('PSysMenuCode').AsString =fidstring)and
(fieldbyname('SysMenuCode').AsString>=Sourceid) then
begin
Inc(Count);
brOtherBack[Count]:=fieldbyname('SysMenuCode').AsString;
end;
next;
end;
for i:=Count downto 1 do
begin
Sourceid:=brOtherBack[i];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -