D7myYunxiang/云翔生产管理(MYSC.dll)/U_purview.pas
DESKTOP-E401PHE\Administrator 1011cb7292 1
2025-01-20 13:04:03 +08:00

518 lines
16 KiB
ObjectPascal
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit U_purview;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, ImgList, ComCtrls, ToolWin,
cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, ADODB,
DBClient, cxCheckBox, Menus, StdCtrls, ExtCtrls;
type
TfrmpurviewDL = class(TForm)
tv1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
ToolBar1: TToolBar;
tbqx: TToolButton;
tbclose: TToolButton;
tv1sel: TcxGridDBColumn;
tv1userID: TcxGridDBColumn;
tv1userName: TcxGridDBColumn;
ADO_user: TADOQuery;
DataSource1: TDataSource;
cxGrid2: TcxGrid;
Tv2: TcxGridDBTableView;
cxFormName: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
ADO_purview: TADOQuery;
DataSource2: TDataSource;
CDS_User: TClientDataSet;
CDS_purview: TClientDataSet;
ADO_Cmd: TADOQuery;
tbyhadd: TToolButton;
tbyhup: TToolButton;
tbyhdelete: TToolButton;
ThreeImgList: TImageList;
tv1Udept: TcxGridDBColumn;
tv1UType: TcxGridDBColumn;
v2Column1: TcxGridDBColumn;
cxGrid3: TcxGrid;
Tv3: TcxGridDBTableView;
cxGridDBColumn2: TcxGridDBColumn;
cxGridDBColumn3: TcxGridDBColumn;
cxGridLevel2: TcxGridLevel;
DataSource3: TDataSource;
ClientDataSet3: TClientDataSet;
ADOQuery1: TADOQuery;
Panel1: TPanel;
Label1: TLabel;
FormName: TEdit;
Label2: TLabel;
ModuleName: TEdit;
ClientDataSet0: TClientDataSet;
DataSource0: TDataSource;
cxStyleRepository1: TcxStyleRepository;
cxStyle1: TcxStyle;
Panel2: TPanel;
cxGrid0: TcxGrid;
Tv0: TcxGridDBTableView;
V0FormName: TcxGridDBColumn;
cxGridDBColumn4: TcxGridDBColumn;
cxGridLevel3: TcxGridLevel;
ClientDataSet5: TClientDataSet;
DataSource5: TDataSource;
procedure FormCreate(Sender: TObject);
procedure tbcloseClick(Sender: TObject);
procedure tv1CellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
procedure tbqxClick(Sender: TObject);
procedure tbyhaddClick(Sender: TObject);
procedure tbyhupClick(Sender: TObject);
procedure tbyhdeleteClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormNameChange(Sender: TObject);
procedure Tv2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Tv3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure tv1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Tv0CellDblClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
private
Procedure InitUser();
procedure InitPurview();
function savePurview():Boolean;
procedure CSHTv0();
procedure CSHTv5();
procedure TvoGD();
{ Private declarations }
public
{ Public declarations }
end;
var
frmpurviewDL: TfrmpurviewDL;
implementation
uses U_User,U_DataLink,U_RTFun; //U_Main,U_PublicFunction,
{$R *.dfm}
function TfrmpurviewDL.SavePurview():Boolean;
begin
result:=false;
ADO_Cmd.Connection.BeginTrans;
try
with ADO_Cmd do
begin
close;
sql.Clear;
sql.Add(' delete sy_purview ');
sql.Add(' where userID='+quotedstr(trim(CDS_User.fieldbyname('userID').AsString)));
execsql;
end;
with ADO_Cmd do
begin
close;
sql.Clear;
sql.Add(' select * from sy_purview ');
sql.Add(' where userID='+quotedstr(trim(CDS_User.fieldbyname('userID').AsString)));
open;
end;
with CDS_purview do
begin
first;
DisableControls;
while not eof do
begin
if fieldbyname('sel').AsBoolean then
begin
ADO_Cmd.Append;
ADO_Cmd.FieldByName('userID').Value:=trim(CDS_User.fieldbyname('userID').AsString);
ADO_Cmd.FieldByName('moduleID').Value:=trim(CDS_purview.fieldbyname('moduleID').AsString);
ADO_Cmd.FieldByName('modulesubID').Value:=trim(CDS_purview.fieldbyname('modulesubID').AsString);
ADO_Cmd.Post;
end;
next;
end;
first;
EnableControls;
end;
ADO_Cmd.Connection.CommitTrans;
result:=true;
except
ADO_Cmd.Connection.RollbackTrans;
end;
end;
procedure TfrmpurviewDL.InitPurview();
begin
if CDS_User.IsEmpty then exit;
with ADOQuery1 do
begin
close;
Parameters.ParamByName('pUserID').Value:=trim(CDS_User.fieldbyname('userID').AsString);
open;
end;
SCreateCDS20(ADOQuery1,ClientDataSet3);
SInitCDSData20(ADOQuery1,ClientDataSet3);
ClientDataSet3.First;
with ADO_purview do
begin
close;
sql.Clear;
sql.Add('select A.ModuleID+''->''+A.moduleName as moduleName,B.*');
sql.Add(' from Sy_moduleMain A');
sql.Add(' inner join Sy_modulesub B on B.moduleID=A.moduleID');
sql.Add('ORDER BY A.idx,B.idx');
open;
end;
SCreateCDS20(ADO_purview,CDS_purview);
SInitCDSData20(ADO_purview,CDS_purview);
with ADO_Cmd do
begin
Close;
sql.Clear;
sql.Add(' select Top 1 FormName from SY_ModuleSub B where not exists(');
sql.Add('select * from SY_PurView A');
sql.Add(' where A.ModuleId=B.ModuleId and A.ModuleSubId=B.ModuleSubId ');
sql.Add(' and A.UserId='''+Trim(CDS_User.fieldbyname('userID').AsString)+''')');
SQL.Add(' order by ModuleId,ModuleSubId ');
Open;
end;
CDS_purview.Locate('FormName',Trim(ADO_Cmd.fieldbyname('FormName').AsString),[]);
end;
Procedure TfrmpurviewDL.InitUser();
begin
with ADO_user do
begin
close;
sql.Clear;
sql.Add(' select cast(0 as bit) as sel, * from SY_User WHERE Valid=''Y'' ');
open;
end;
SCreateCDS20(ADO_user,CDS_User);
SInitCDSData20(ADO_user,CDS_User);
//CreateAdoToCds(ADO_user,CDS_User);
//InitAdoToCds(ADO_user,CDS_User);
end;
procedure TfrmpurviewDL.FormCreate(Sender: TObject);
begin
InitUser();
end;
procedure TfrmpurviewDL.tbcloseClick(Sender: TObject);
begin
close;
end;
procedure TfrmpurviewDL.tv1CellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
begin
InitPurview();
end;
procedure TfrmpurviewDL.tbqxClick(Sender: TObject);
begin
if CDS_User.IsEmpty then exit;
if CDS_purview.IsEmpty then exit;
if SavePurview() then
begin
application.MessageBox('<27><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ');
end
else
application.MessageBox('<27><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ',MB_ICONERROR);
end;
procedure TfrmpurviewDL.tbyhaddClick(Sender: TObject);
begin
frmUser:=TfrmUser.create(self);
with frmUser do
begin
formId:=0;
fuserID:='';
if showmodal=1 then
begin
InitUser();
CDS_User.Locate('UserID',trim(fuserID),[]);
InitPurview();
end;
free;
end;
end;
procedure TfrmpurviewDL.tbyhupClick(Sender: TObject);
begin
if CDS_User.IsEmpty then exit;
if trim(CDS_User.FieldByName('userID').AsString)='ADMIN' then exit;
frmUser:=TfrmUser.create(self);
with frmUser do
begin
formId:=1;
fuserID:=trim(CDS_User.fieldByName('UserID').asstring);
//newPassword.PasswordChar:=#0;
//DnewPassword.PasswordChar:=#0;
{if trim(frmMain.username)='ADMIN' THEN
begin
newPassword.PasswordChar:=#0;
DnewPassword.PasswordChar:=#0;
end; }
if showmodal=1 then
begin
InitUser();
CDS_User.Locate('UserID',trim(fuserID),[]);
InitPurview();
end;
free;
end;
end;
procedure TfrmpurviewDL.tbyhdeleteClick(Sender: TObject);
begin
if CDS_User.IsEmpty then exit;
if trim(CDS_User.FieldByName('userID').AsString)='ADMIN' then exit;
if application.MessageBox('<27><>ȷ<EFBFBD><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>','<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ!',1)=2 then exit;
try
with ADO_Cmd do
begin
close;
sql.Clear;
sql.Add(' delete SY_User ');
sql.Add(' where userID='+quotedstr(trim(CDS_User.fieldbyname('USerID').AsString)));
sql.Add(' delete sy_purview ');
sql.Add(' where userID='+quotedstr(trim(CDS_User.fieldbyname('userID').AsString)));
execsql;
end;
InitUser();
InitPurview();
except
application.MessageBox(<><C9BE>ʧ<EFBFBD>ܣ<EFBFBD>','<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ',MB_ICONERROR);
end;
end;
procedure TfrmpurviewDL.FormDestroy(Sender: TObject);
begin
frmpurviewDL:=nil;
end;
procedure TfrmpurviewDL.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfrmpurviewDL.FormNameChange(Sender: TObject);
begin
if ADO_purview.Active=False then Exit;
SDofilter(ADO_purview,SGetFilters(Panel1,1,2));
SCreateCDS20(ADO_purview,CDS_purview);
SInitCDSData20(ADO_purview,CDS_purview);
end;
procedure TfrmpurviewDL.Tv2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if CDS_purview.IsEmpty then
begin
V0FormName.Caption:='';
V0FormName.Styles.Header.Color:=clDefault;
CSHTv0();
Exit;
end;
with ADO_Cmd do
begin
Close;
sql.Clear;
sql.Add('select A.ModuleID+''->''+A.moduleName as moduleName,B.*');
sql.Add('from Sy_moduleMain A');
sql.Add('inner join Sy_modulesub B on B.moduleID=A.moduleID');
sql.Add('where not exists( select * from Sy_purview C where C.moduleID=B.moduleID and') ;
sql.Add(' C.moduleSubID=B.modulesubID and C.userID='''+Trim(CDS_User.fieldbyname('userID').AsString)+''')');
sql.Add(' and A.moduleID='''+Trim(CDS_purview.fieldbyname('moduleID').AsString)+'''');
sql.Add(' ORDER BY B.idx ');
Open;
end;
SCreateCDS20(ADO_Cmd,ClientDataSet0);
SInitCDSData20(ADO_Cmd,ClientDataSet0);
V0FormName.Caption:='<27><><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>';
V0FormName.Styles.Header.Color:=clYellow;
ClientDataSet3.Locate('moduleID;modulesubID',
VarArrayOf([trim(CDS_purview.fieldbyname('moduleID').AsString), trim(CDS_purview.fieldbyname('modulesubID').AsString)])
,[loPartialKey]);
// TvoGD();
end;
procedure TfrmpurviewDL.TvoGD();
begin
if ClientDataSet0.IsEmpty then
begin
cxGrid0.Height:=23*3;
end else
if ClientDataSet0.RecordCount<3 then
begin
cxGrid0.Height:=23*3;
end else
begin
cxGrid0.Height:=(ClientDataSet0.RecordCount+2)*23;
end;
end;
procedure TfrmpurviewDL.Tv3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ClientDataSet3.IsEmpty then
begin
V0FormName.Caption:='';
V0FormName.Styles.Header.Color:=clDefault;
CSHTv0();
Exit;
end;
with ADO_Cmd do
begin
Close;
sql.Clear;
sql.Add('select A.ModuleID+''->''+A.moduleName as moduleName,B.*');
sql.Add('from Sy_moduleMain A');
sql.Add('inner join Sy_modulesub B on B.moduleID=A.moduleID');
sql.Add('where exists( select * from Sy_purview C where C.moduleID=B.moduleID and') ;
sql.Add(' C.moduleSubID=B.modulesubID and C.userID='''+Trim(CDS_User.fieldbyname('userID').AsString)+''')');
sql.Add(' and A.moduleID='''+Trim(ClientDataSet3.fieldbyname('moduleID').AsString)+'''');
sql.Add(' ORDER BY B.idx ');
Open;
end;
SCreateCDS20(ADO_Cmd,ClientDataSet0);
SInitCDSData20(ADO_Cmd,ClientDataSet0);
V0FormName.Caption:=<><C8A1>Ȩ<EFBFBD><C8A8>';
V0FormName.Styles.Header.Color:=clFuchsia;
CDS_purview.Locate('moduleID;modulesubID',
VarArrayOf([trim(ClientDataSet3.fieldbyname('moduleID').AsString), trim(ClientDataSet3.fieldbyname('modulesubID').AsString)])
,[loPartialKey]);
//TvoGD();
end;
procedure TfrmpurviewDL.tv1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CSHTv0();
end;
procedure TfrmpurviewDL.CSHTv0();
begin
with ADO_Cmd do
begin
Close;
sql.Clear;
sql.Add('select A.ModuleID+''->''+A.moduleName as moduleName,B.*');
sql.Add('from Sy_moduleMain A');
sql.Add('inner join Sy_modulesub B on B.moduleID=A.moduleID');
sql.Add('where 1=2') ;
Open;
end;
SCreateCDS20(ADO_Cmd,ClientDataSet0);
SInitCDSData20(ADO_Cmd,ClientDataSet0);
SCreateCDS20(ADO_Cmd,ClientDataSet5);
SInitCDSData20(ADO_Cmd,ClientDataSet5);
V0FormName.Caption:='';
V0FormName.Styles.Header.Color:=clDefault;
end;
procedure TfrmpurviewDL.CSHTv5();
begin
with ADO_Cmd do
begin
Close;
sql.Clear;
sql.Add('select A.ModuleID+''->''+A.moduleName as moduleName,B.*');
sql.Add('from Sy_moduleMain A');
sql.Add('inner join Sy_modulesub B on B.moduleID=A.moduleID');
sql.Add('where A.moduleID='''+Trim(ClientDataSet0.fieldbyname('moduleID').asstring)+'''') ;
Open;
end;
SCreateCDS20(ADO_Cmd,ClientDataSet5);
SInitCDSData20(ADO_Cmd,ClientDataSet5);
end;
procedure TfrmpurviewDL.Tv0CellDblClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
begin
if ClientDataSet0.IsEmpty then Exit;
if V0FormName.Caption=<><C8A1>Ȩ<EFBFBD><C8A8>' then
begin
with ADO_Cmd do
begin
Close;
sql.Clear;
sql.Add('delete SY_Purview where UserId='''+Trim(CDS_User.fieldbyname('UserId').AsString)+'''');
sql.Add(' and moduleID='''+Trim(ClientDataSet0.fieldbyname('moduleID').AsString)+'''');
sql.Add(' and modulesubID='''+Trim(ClientDataSet0.fieldbyname('modulesubID').AsString)+'''');
ExecSQL;
end;
with CDS_purview do
begin
Append;
FieldByName('moduleID').Value:=trim(ClientDataSet0.fieldbyname('moduleID').AsString);
FieldByName('modulesubID').Value:=trim(ClientDataSet0.fieldbyname('modulesubID').AsString);
FieldByName('FormName').Value:=trim(ClientDataSet0.fieldbyname('FormName').AsString);
FieldByName('ModuleName').Value:=trim(ClientDataSet0.fieldbyname('ModuleName').AsString);
FieldByName('FormFile').Value:=ClientDataSet0.fieldbyname('FormFile').Value;
FieldByName('FormId').Value:=ClientDataSet0.fieldbyname('FormId').Value;
Post;
end;
ClientDataSet3.Locate('moduleID;modulesubID',
VarArrayOf([trim(ClientDataSet0.fieldbyname('moduleID').AsString), trim(ClientDataSet0.fieldbyname('modulesubID').AsString)])
,[loPartialKey]);
ClientDataSet3.Delete;
ClientDataSet0.Delete;
end else
if V0FormName.Caption='<27><><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>' then
begin
{ if ClientDataSet3.Locate('FormFile;FormId',
VarArrayOf([ClientDataSet0.fieldbyname('FormFile').Value, ClientDataSet0.fieldbyname('FormId').Value])
,[loPartialKey])=True then
begin
Application.MessageBox('<27>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>޵<EFBFBD>ģ<EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD>!','<27><>ʾ',0);
Exit;
end; }
if ClientDataSet3.Locate('moduleID;modulesubID',
VarArrayOf([trim(ClientDataSet0.fieldbyname('moduleID').AsString), trim(ClientDataSet0.fieldbyname('modulesubID').AsString)])
,[loPartialKey])=False then
begin
with ADO_Cmd do
begin
Close;
sql.Clear;
sql.Add(' insert into SY_Purview');
sql.Add(' select :userID,:moduleID,:modulesubID');
Parameters.ParamByName('userID').Value:=trim(CDS_User.fieldbyname('userID').AsString);
Parameters.ParamByName('moduleID').Value:=trim(ClientDataSet0.fieldbyname('moduleID').AsString);
Parameters.ParamByName('modulesubID').Value:=trim(ClientDataSet0.fieldbyname('modulesubID').AsString);
ExecSQL;
end;
with ClientDataSet3 do
begin
Append;
FieldByName('moduleID').Value:=trim(ClientDataSet0.fieldbyname('moduleID').AsString);
FieldByName('modulesubID').Value:=trim(ClientDataSet0.fieldbyname('modulesubID').AsString);
FieldByName('FormName').Value:=trim(ClientDataSet0.fieldbyname('FormName').AsString);
FieldByName('ModuleName').Value:=trim(ClientDataSet0.fieldbyname('ModuleName').AsString);
FieldByName('FormFile').Value:=ClientDataSet0.fieldbyname('FormFile').Value;
FieldByName('FormId').Value:=ClientDataSet0.fieldbyname('FormId').Value;
Post;
end;
CDS_purview.Locate('moduleID;modulesubID',
VarArrayOf([trim(ClientDataSet0.fieldbyname('moduleID').AsString), trim(ClientDataSet0.fieldbyname('modulesubID').AsString)])
,[loPartialKey]);
CDS_purview.Delete;
ClientDataSet0.Delete;
end;
end;
end;
end.