?? rgtrolefunction.~pas
字號:
//這樣建樹肯定不行的,一次行建樹了,慢!
{
if (jbdm=0)or(jx=QueryTmp1.Fields[0].AsInteger) then
InitJxry(NewJxNode,QueryTmp1.Fields[0].AsInteger);//增加單個局向內的人員 }
Next;
end;{while}
end;
//TreeViewRY.Selected := TreeViewRY.Items[0];
end;
function TRgtFrmRoleFunction.InsertTreeNode(treeview: TTreeview;
SNode: TTreeNode; pLabel, pData: string): TTreeNode;
var lNode:TTreeNode;
lData:pchar;
lChildNode:TTreeNode;
begin
//--------------------------------------------------------
//如果標簽長度>255只取255
if length(pLabel) >255 then pLabel :=copy(pLabel,0,255);
//如果節點指針不為''
if pData <> '' then
begin
GetMem(lData,length(pData)+1);
move(pData[1],lData^,length(pData)+1);
end
else lData:=nil;
lNode:=TreeView.Items.AddChildObject(SNode,pLabel,lData);
//lNode.Selected:=True;
result:=lNode;
end;
procedure TRgtFrmRoleFunction.TreeExpand(Treeview: TTreeview;
SNode: TTreeNode);
var
lTreeNode,NewRyNode,NewJXNode:TTreeNode;
str1,str2,str3,str4 :string;
begin
//如果是臨時結點就刪除
lTreeNode :=SNode.getFirstChild;
if lTreeNode=nil then exit;
if lTreeNode.Text<>'TEMP' then exit;
if lTreeNode.Text='TEMP' then
lTreeNode.Delete;
//t_d_county縣
case SNode.Level of
0:begin
with QueryTmp1 do
begin
close;
QueryTmp1.sql.text :='select OFF_NO_HOME,CITYNO,HOME_NAME from T_D_COUNTY where CITYNO='+#39+pchar(SNode.Data)+#39;
open;
first;
while not Eof do
begin
str1 :=Fields[0].AsString;
str2 :=Fields[1].AsString;
str3 :=Fields[2].AsString;
//先把第一層建出來
NewJXNode:=
InsertTreeNode(TreeViewRy,SNode,str3,str1+'#'+str2);
//TreeViewRy.Items.Add(nil,Fields[0].AsString+':'+Fields[1].AsString);
NewJXNode.ImageIndex := 0;
NewJXNode.SelectedIndex := 1;
//***************判斷該縣下有沒關系室有沒有,如果速度慢去掉*****************
//QueryTmp2.close;
//QueryTmp2.sql.text :='select count(ROOMID) from T_D_ROOM '+
//' where CITYNO='+#39+str2+#39+' and OFF_NO_HOME='+#39+str1+#39;
//QueryTmp2.open;
//if QueryTmp2.fields[0].asinteger >0 then
//begin
//加入臨時結點來強行加上+號
InsertTreeNode(TreeViewRy,NewJXNode,'TEMP'
,'TEMP');
//end;
//************************************************************
//這樣建樹肯定不行的,一次行建樹了,慢!
{
if (jbdm=0)or(jx=QueryTmp1.Fields[0].AsInteger) then
InitJxry(NewJxNode,QueryTmp1.Fields[0].AsInteger);//增加單個局向內的人員 }
Next;
end;{while}
end;
end;
1:begin //加關系室
with QueryTmp1 do
begin
close;
QueryTmp1.sql.text :=
'select ROOMID,OFF_NO_HOME,CITYNO,ROOM_NAME from T_D_ROOM where CITYNO='
+#39+p_cityno+#39+' and OFF_NO_HOME='+#39+p_jxdm+#39;
open;
first;
while not Eof do
begin
str1 :=Fields[0].AsString;
str2 :=Fields[1].AsString;
str3 :=Fields[2].AsString;
str4 :=Fields[3].AsString;
//先把第一層建出來
NewJXNode:=
InsertTreeNode(TreeViewRy,SNode,str4,str2+'#'+str3+'#'+str1);
//TreeViewRy.Items.Add(nil,Fields[0].AsString+':'+Fields[1].AsString);
NewJXNode.ImageIndex := 0;
NewJXNode.SelectedIndex := 1;
//***************判斷該縣下有沒關系室有沒有,如果速度慢去掉*****************
//QueryTmp2.close;
//QueryTmp2.sql.text :='select count(WK_NO) from T_F_MANAGER '+
//' where CITYNO='+#39+str3+#39+' and OFF_NO_HOME='+#39+str2+#39
//+' and RoomId='+#39+str1+#39;
//QueryTmp2.open;
//if QueryTmp2.fields[0].asinteger >0 then
//begin
//加入臨時結點來強行加上+號
InsertTreeNode(TreeViewRy,NewJXNode,'TEMP'
,'TEMP');
//end;
//************************************************************
//這樣建樹肯定不行的,一次行建樹了,慢!
{
if (jbdm=0)or(jx=QueryTmp1.Fields[0].AsInteger) then
InitJxry(NewJxNode,QueryTmp1.Fields[0].AsInteger);//增加單個局向內的人員 }
Next;
end;{while}
end;
end;
2:begin
//加用戶
with QueryTmp2 do
begin
close;
sql.clear;
sql.add('select WK_NO,NAME,STAT from T_F_MANAGER');
sql.add(' where Off_No_Home=:p1 and CITYNO=:p2 and RoomId=:p3 order by WK_NO,STAT');
ParamByName('p1').Asstring :=P_jxdm;
ParamByName('p2').Asstring :=P_cityno;
ParamByName('p3').Asstring :=P_room;
open;
first;
while not Eof do
begin
str1 :=Fields[0].AsString;
str2 :=Fields[1].AsString;
NewRyNode :=InsertTreeNode(TreeViewRy,SNode,str1+':'+str2,str1);
if FieldByName('STAT').AsString='0' then
begin
NewRyNode.ImageIndex := 6;
NewRyNode.SelectedIndex := 7;
end
else
begin //linlong 2003.03.15
NewRyNode.ImageIndex := 8;
NewRyNode.SelectedIndex := 8;
end;
Next;
end;{while}
end;{with}
end;
end;//end case
end;
procedure TRgtFrmRoleFunction.TreeViewRyExpanding(Sender: TObject;
Node: TTreeNode; var AllowExpansion: Boolean);
var
str :string;
begin
if P_Refresh then exit;
case Node.Level of
0:
begin
end;
1:begin
//得到城市編碼和局向編碼h和關系室
str :=Pchar(Node.data);
p_jxdm :=copy(str,1,pos('#',str)-1);
p_cityno :=copy(str,pos('#',str)+1,length(str)-pos('#',str));
end;
2:begin
//得到城市編碼和局向編碼h和關系室
str :=Pchar(Node.data);
p_jxdm :=copy(str,1,pos('#',str)-1);
str :=copy(str,pos('#',str)+1,length(str)-pos('#',str));
p_cityno :=copy(str,1,pos('#',str)-1);
P_room :=copy(str,pos('#',str)+1,length(str)-pos('#',str));
end;
3:
begin
//得到城市編碼和局向編碼h和關系室
str :=Pchar(Node.data);
p_jxdm :=copy(str,1,pos('#',str)-1);
str :=copy(str,pos('#',str)+1,length(str)-pos('#',str));
p_cityno :=copy(str,1,pos('#',str)-1);
P_room :=copy(str,pos('#',str)+1,length(str)-pos('#',str));
end;
end;
TreeExpand(TreeViewRy,Node);
end;
procedure TRgtFrmRoleFunction.FormDestroy(Sender: TObject);
begin
P_Refresh :=false;
FreeNode(TreeViewRy);
end;
procedure TRgtFrmRoleFunction.Query2AfterScroll(DataSet: TDataSet);
var
str,V_FORMNAME,V_CONTROLNAME :string;
i :integer;
begin
if P_edit1 then exit;
str :=Query2.FieldByName('FUNCID').AsString;
P_FUNCID1 :=str;
i :=pos('.',str);
V_FORMNAME :=copy(str,1,i-1);
V_CONTROLNAME :=copy(str,i+1,length(str));
//
Query_Tmp.close;
Query_Tmp.sql.text :='select FORMCAPTION,CONTROLCAPTION from SYSFORMCTRLLIST'
+' where FORMNAME='+#39+V_FORMNAME+#39
+' and CONTROLNAME='+#39+V_CONTROLNAME+#39;
Query_Tmp.open;
edit3.text :=Query_Tmp.FieldByName('FORMCAPTION').AsString;
edit4.Text :=Query_Tmp.FieldByName('CONTROLCAPTION').AsString;
edit5.text :=Query2.FieldByName('FUNCNAME').AsString;
P_FUNCSERIALID1 :=Query2.FieldByName('FUNCSERIALID').AsString;
edit2.text :=Query2.FieldByName('SERIAL').AsString;
P_CurrentCode1 :=EdtFuncSerialIdEditing.text;
Edit6.text :='';
if uppercase(query2.fieldbyname('CONTROLTYPE').asstring) ='INVISIBLE' then
Edit6.text :='看不見';
if uppercase(query2.fieldbyname('CONTROLTYPE').asstring) ='DISABLED' then
Edit6.text :='不可編輯';
BitBtn1.Enabled :=false;
if not (Query2.bof and Query2.Eof) then
begin
BitBtnAlter.Enabled :=true;
BitBtnDel.Enabled :=true;
BitBtnSave.Enabled :=false;
end
else
begin
BitBtnAlter.Enabled :=false;
BitBtnDel.Enabled :=false;
BitBtnSave.Enabled :=false;
end;
end;
procedure TRgtFrmRoleFunction.TreeViewRyChange(Sender: TObject;
Node: TTreeNode);
begin
if TreeViewRy.Selected=nil then exit;
if TreeViewRy.Selected.Level<3 then exit;
query2.close;
query2.sql.text :=
'select a.*,b.controltype from PRIVUSERFUNC a,PRIVFUNCTION b '
+' where a.funcid=b.funcid(+) and USERLOGINID='
+#39+copy(TreeViewRy.Selected.Text,1,pos(':',TreeViewRy.Selected.Text) -1)+#39;
query2.Open;
if query2.Bof and query2.eof then
begin
Query2AfterScroll(nil);
end;
end;
procedure TRgtFrmRoleFunction.BitBtn1Click(Sender: TObject);
var
FormCtrlSelect :TRgtSelectFormFunctionSelect;
str,V_FORMNAME,V_CONTROLNAME :string;
i :integer;
begin
FormCtrlSelect :=nil;
Try
FormCtrlSelect:=TRgtSelectFormFunctionSelect.create(self);
FormCtrlSelect.ShowModal;
edit5.Text :=FormCtrlSelect.P_FUNCNAME;
Edit6.text :='';
if FormCtrlSelect.P_CONTROLTYPE='INVISIBLE' then
Edit6.text :='看不見';
If FormCtrlSelect.P_CONTROLTYPE='DISABLED' then
Edit6.text :='不可編輯';
str :=FormCtrlSelect.P_FUNCID;
P_FUNCID1 :=str;
i :=pos('.',str);
V_FORMNAME :=copy(str,1,i-1);
V_CONTROLNAME :=copy(str,i+1,length(str));
Query_Tmp.close;
Query_Tmp.sql.text :='select FORMCAPTION,CONTROLCAPTION from SYSFORMCTRLLIST'
+' where FORMNAME='+#39+V_FORMNAME+#39
+' and CONTROLNAME='+#39+V_CONTROLNAME+#39;
Query_Tmp.open;
edit3.text :=Query_Tmp.FieldByName('FORMCAPTION').AsString;
edit4.Text :=Query_Tmp.FieldByName('CONTROLCAPTION').AsString;
P_FUNCSERIALID1 :=FormCtrlSelect.P_FUNCSERIALID;
Finally
FormCtrlSelect.Free;
end;
end;
procedure TRgtFrmRoleFunction.Query2CalcFields(DataSet: TDataSet);
begin
if uppercase(query2.fieldbyname('CONTROLTYPE').asstring) ='INVISIBLE' then
query2.fieldbyname('TYPE').asstring :='看不見'
else
if uppercase(query2.fieldbyname('CONTROLTYPE').asstring) ='DISABLED' then
query2.fieldbyname('TYPE').asstring :='不可編輯';
if uppercase(query2.fieldbyname('FLAG').asstring) ='0' then
query2.fieldbyname('flagname').asstring :='角色功能'
else
if uppercase(query2.fieldbyname('FLAG').asstring) ='1' then
query2.fieldbyname('flagname').asstring :='用戶功能';
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -