?? rgtrolefunction.~pas
字號:
//------------------------------------------------------------
// 作者:曾慶順
// 模塊:角色功能對照及個人功能對照窗口
// 時間:2002.09.21
// 功能介紹:
//-----------------------------------------------------------
unit RgtRoleFunction;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, DBCtrls, StdCtrls, Mask, Db, ImgList, ComCtrls, Buttons,
ExtCtrls, Menus, Grids, DBGrids, TFlatButtonUnit, TFlatComboBoxUnit,crypt,procedurep;
type
TRgtFrmRoleFunction = class(TForm)
Panel1: TPanel;
DataSource_Pub: TDataSource;
Query_Pub: TQuery;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Pal_button: TPanel;
BitBtnAdd: TFlatButton;
BitBtnAlter: TFlatButton;
BitBtnDel: TFlatButton;
BitBtnSave: TFlatButton;
BitBtnCancel: TFlatButton;
BitBtnClose: TFlatButton;
TabSheet2: TTabSheet;
Panel2: TPanel;
DBGrid1: TDBGrid;
Splitter1: TSplitter;
Panel3: TPanel;
DbgPrivFunction: TDBGrid;
DataSource1: TDataSource;
Query1: TQuery;
Splitter3: TSplitter;
Panel4: TPanel;
Label12: TLabel;
EdtFuncSerialIdEditing: TEdit;
GroupBox1: TGroupBox;
Label2: TLabel;
Label1: TLabel;
EdtFormCaptionEditing: TEdit;
EdtControlCaptionEditing: TEdit;
SbSysFormCtrlListEditing: TBitBtn;
Label15: TLabel;
EdtFuncNameEditing: TEdit;
Label11: TLabel;
Edit1: TEdit;
UpdateSQL1: TUpdateSQL;
Query_Tmp: TQuery;
Query1SERIAL: TFloatField;
Query1ROLEID: TFloatField;
Query1FUNCID: TStringField;
Query1ROLENAME: TStringField;
Query1FUNCNAME: TStringField;
Query1FUNCSERIALID: TFloatField;
Query1CONTROLTYPE: TStringField;
Query1TYPE: TStringField;
TreeViewRy: TTreeView;
Splitter2: TSplitter;
Panel5: TPanel;
Splitter4: TSplitter;
DBGrid2: TDBGrid;
Panel6: TPanel;
Label3: TLabel;
Edit2: TEdit;
GroupBox2: TGroupBox;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Edit3: TEdit;
Edit4: TEdit;
BitBtn1: TBitBtn;
Edit5: TEdit;
Edit6: TEdit;
QueryTmp1: TQuery;
QueryTmp2: TQuery;
ImageList1: TImageList;
Query2: TQuery;
FloatField1: TFloatField;
StringField1: TStringField;
StringField3: TStringField;
FloatField3: TFloatField;
StringField4: TStringField;
StringField5: TStringField;
DataSource2: TDataSource;
UpdateSQL2: TUpdateSQL;
Query2USERLOGINID: TStringField;
Query2USERLOGINIDNAME: TStringField;
Query2FLAG: TStringField;
Query2flagname: TStringField;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtnCloseClick(Sender: TObject);
procedure BitBtnAlterClick(Sender: TObject);
procedure BitBtnDelClick(Sender: TObject);
procedure BitBtnSaveClick(Sender: TObject);
procedure BitBtnCancelClick(Sender: TObject);
procedure BitBtnAddClick(Sender: TObject);
procedure FlatEdit1KeyPress(Sender: TObject; var Key: Char);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure SbSysFormCtrlListEditingClick(Sender: TObject);
procedure Query_PubAfterScroll(DataSet: TDataSet);
procedure Query1AfterScroll(DataSet: TDataSet);
procedure Query1CalcFields(DataSet: TDataSet);
procedure TreeViewRyExpanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
procedure FormDestroy(Sender: TObject);
procedure Query2AfterScroll(DataSet: TDataSet);
procedure TreeViewRyChange(Sender: TObject; Node: TTreeNode);
procedure BitBtn1Click(Sender: TObject);
procedure Query2CalcFields(DataSet: TDataSet);
private
{ Private declarations }
P_FUNCID,P_FUNCID1,P_FUNCSERIALID,P_FUNCSERIALID1,P_CurrentCode,P_CurrentCode1 :string;
//判斷是否為插入狀態
P_Insert,P_Insert1,P_Save :boolean;
//是否編輯標志
P_Edit,P_Edit1 :boolean;
//是否重建樹的標志
P_Refresh :boolean;
//建樹的第一層
procedure InitTreeViewRY;
public
{ Public declarations }
P_jxdm,P_cityno,P_room :string;
//*********************曾慶順********************************
//釋放節點
procedure FreeNode(treeview :TTreeview);
//插入節點
//不展開樹
Function InsertTreeNode(treeview :TTreeview;SNode:TTreeNode;
pLabel:string;pData:string):TTreeNode;
//樹展開時臨時地加上該城市下局向的用戶
ProceDure TreeExpand(Treeview :TTreeview;SNode:TTreeNode);
//***********************************************************
end;
var
RgtFrmRoleFunction: TRgtFrmRoleFunction;
implementation
uses Main,unit_public, dmmain,RgtSelectUnitFunctionSelect;
{$R *.DFM}
procedure TRgtFrmRoleFunction.FormShow(Sender: TObject);
begin
inherited;
P_Insert :=false;
P_Insert1 :=false;
P_Save :=false;
P_edit :=false;
PageControl1.ActivePageIndex :=0;
query_pub.close;
query_pub.open;
if query_pub.bof and query_pub.eof then
Query_PubAfterScroll(nil);
//
P_Refresh :=true;
TreeViewRy.Items.clear;
InitTreeViewRY; //初始化人員樹
P_Refresh :=false;
end;
procedure TRgtFrmRoleFunction.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := CaFree;
end;
procedure TRgtFrmRoleFunction.BitBtnCloseClick(Sender: TObject);
begin
close;
end;
procedure TRgtFrmRoleFunction.BitBtnAlterClick(Sender: TObject);
begin
case PageControl1.ActivePageIndex of
0:begin
if query_pub.bof and query_pub.eof then exit;
SbSysFormCtrlListEditing.Enabled :=true;
BitBtnSave.Enabled :=true;
P_Insert :=false;
end;
1:begin
if TreeViewRy.Selected=nil then exit;
if TreeViewRy.Selected.Level<3 then exit;
BitBtn1.Enabled :=true;
BitBtnSave.Enabled :=true;
P_Insert1 :=false;
end;
end;
P_Save :=true;
end;
procedure TRgtFrmRoleFunction.BitBtnDelClick(Sender: TObject);
var
sqlstr :string;
begin
case PageControl1.ActivePageIndex of
0:begin
if query_pub.bof and query_pub.eof then exit;
if MessageDlg('是否要刪除該記錄?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then exit;
sqlstr:='Delete PRIVROLEFUNC where SERIAL='+
#39+EdtFuncSerialIdEditing.text+#39;
if AnalyzeSql(sqlstr)=1 then exit;
Query1.Delete;
Query1.AfterScroll(nil);
end;
1:begin
if TreeViewRy.Selected=nil then exit;
if TreeViewRy.Selected.Level<3 then exit;
if MessageDlg('是否要刪除該記錄?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then exit;
sqlstr:='Delete PRIVUSERFUNC where SERIAL='+
#39+Edit2.text+#39;
if AnalyzeSql(sqlstr)=1 then exit;
Query2.Delete;
Query2.AfterScroll(nil);
end;
end;
end;
procedure TRgtFrmRoleFunction.BitBtnSaveClick(Sender: TObject);
var
sqlstr,str : string;
begin
case PageControl1.ActivePageIndex of
0:begin
if query_pub.bof and query_pub.eof then exit;
//提示是否更新
if P_Insert=false then
if MessageDlg('是否要更新該記錄?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then exit;
if trim(P_FUNCSERIALID) ='' then
begin
MessageDlg('請選擇權限功能!',mtConfirmation, [mbYes], 0);
exit;
end;
//該角色的這種功能已經存在不要再增加
if P_Insert then
begin
Query_Tmp.Close;
Query_Tmp.sql.text :=
'select count(*) from PRIVROLEFUNC where FUNCSERIALID='+#39
+P_FUNCSERIALID+#39+' and ROLEID='
+Query_Pub.fieldbyname('ROLEID').asstring;
Query_Tmp.open;
if Query_Tmp.Fields[0].AsInteger >0 then
begin
Application.MessageBox('該角色的這種功能已存在!請重新選擇對應!','提示',MB_OK+MB_ICONWARNING);
Exit;
end;
end;
//**********************************************
if P_Insert then
Begin
sqlstr:='insert into PRIVROLEFUNC (SERIAL,ROLEID,FUNCID,ROLENAME,FUNCNAME,FUNCSERIALID) '
+' values(SEQ_ROLEFUNCSERIAL.nextval,'
+query_pub.fieldbyname('ROLEID').asstring
+','+#39+P_FUNCID+#39+','
+#39+query_pub.fieldbyname('ROLENAME').asstring+#39+','
+#39+EdtFuncNameEditing.Text+#39+','+P_FUNCSERIALID+')';
if AnalyzeSql(sqlstr)=1 then exit;
end
else
begin
sqlstr:='update PRIVROLEFUNC set FUNCID='+#39+P_FUNCID+#39
+',FUNCNAME='+#39+EdtFuncNameEditing.Text+#39
+',FUNCSERIALID='+P_FUNCSERIALID
+' where SERIAL='+query1.fieldbyname('SERIAL').asstring;
if AnalyzeSql(sqlstr)=1 then exit;
end;
//*************數據同步********************
if P_Insert then
Begin
P_edit :=true;
Query1.insert;
Query_Tmp.close;
Query_Tmp.sql.text :=
'select nvl(max(SERIAL),0) from PRIVROLEFUNC ';
Query_Tmp.open;
P_CurrentCode :=Query_Tmp.fields[0].asstring;
end
else
begin
P_edit :=true;
Query1.Edit;
end;
Query1.FieldByName('SERIAL').AsString :=P_CurrentCode;
Query1.FieldByName('ROLEID').AsString :=query_pub.fieldbyname('ROLEID').asstring;
Query1.FieldByName('FUNCID').AsString :=P_FUNCID;
Query1.FieldByName('ROLENAME').AsString :=query_pub.fieldbyname('ROLENAME').asstring;
Query1.FieldByName('FUNCNAME').AsString :=EdtFuncNameEditing.text;
Query1.FieldByName('FUNCSERIALID').AsString :=P_FUNCSERIALID;
if Edit1.text ='看不見' then
query1.fieldbyname('CONTROLTYPE').asstring :='INVISIBLE';
if Edit1.text ='不可編輯' then
query1.fieldbyname('CONTROLTYPE').asstring :='DISABLED';
P_edit :=false;
Query1.Post;
//*****************************************
Query1.AfterScroll(nil);
end;
1:begin
if TreeViewRy.Selected=nil then exit;
if TreeViewRy.Selected.Level<3 then exit;
//提示是否更新
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -