D7szChenfeng/基础资料(BaseInfo.dll)/U_PurviewDC.pas

308 lines
7.4 KiB
ObjectPascal
Raw Permalink Normal View History

2025-07-22 15:51:47 +08:00
unit U_PurviewDC;
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;
type
TfrmPurviewDC = 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;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
v2sel: TcxGridDBColumn;
ADO_Cmd: TADOQuery;
tbyhadd: TToolButton;
tbyhup: TToolButton;
tbyhdelete: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ThreeImgList: TImageList;
tv1Udept: TcxGridDBColumn;
tv1UType: TcxGridDBColumn;
v2Column1: TcxGridDBColumn;
procedure FormCreate(Sender: TObject);
procedure tbcloseClick(Sender: TObject);
procedure tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure tbqxClick(Sender: TObject);
procedure tbyhaddClick(Sender: TObject);
procedure tbyhupClick(Sender: TObject);
procedure tbyhdeleteClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
procedure InitUser();
procedure InitPurview();
function savePurview(): Boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
frmPurviewDC: TfrmPurviewDC;
implementation
uses
U_DataLink, U_PublicFunction, U_UserDC, U_Fun;
{$R *.dfm}
function TfrmPurviewDC.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 TfrmPurviewDC.InitPurview();
begin
if CDS_User.IsEmpty then
exit;
with ADO_purview do
begin
close;
Parameters.ParamByName('pUserID').Value := trim(CDS_User.fieldbyname('userID').AsString);
open;
end;
CreateAdoToCds(ADO_purview, CDS_purview);
InitAdoToCds(ADO_purview, CDS_purview);
end;
procedure TfrmPurviewDC.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'' and Udept=''<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'' ');
open;
end;
CreateAdoToCds(ADO_user, CDS_User);
InitAdoToCds(ADO_user, CDS_User);
end;
procedure TfrmPurviewDC.FormCreate(Sender: TObject);
begin
cxGrid2.Align := AlClient;
InitUser();
InitPurview();
end;
procedure TfrmPurviewDC.tbcloseClick(Sender: TObject);
begin
WriteCxGrid(self.Caption + 'tv1', tv1);
WriteCxGrid(self.Caption + 'tv2', tv2);
close;
end;
procedure TfrmPurviewDC.tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
InitPurview();
end;
procedure TfrmPurviewDC.N1Click(Sender: TObject);
begin
with CDS_purview do
begin
first;
DisableControls;
while not eof do
begin
edit;
fieldbyname('sel').AsBoolean := true;
post;
next;
end;
first;
EnableControls;
end;
end;
procedure TfrmPurviewDC.N2Click(Sender: TObject);
begin
with CDS_purview do
begin
first;
DisableControls;
while not eof do
begin
edit;
fieldbyname('sel').AsBoolean := false;
post;
next;
end;
first;
EnableControls;
end;
end;
procedure TfrmPurviewDC.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 TfrmPurviewDC.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 TfrmPurviewDC.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);
{ 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 TfrmPurviewDC.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 TfrmPurviewDC.FormShow(Sender: TObject);
begin
readCxGrid(self.Caption + 'tv1', tv1);
readCxGrid(self.Caption + 'tv2', tv2);
end;
procedure TfrmPurviewDC.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := cafree;
end;
procedure TfrmPurviewDC.FormDestroy(Sender: TObject);
begin
frmPurviewDC := nil;
end;
end.