📄 zyqxpas.~pas
字号:
unit zyqxpas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Grids, Db, DBTables, ADODB;
type
Tzyqxform = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
sour: TStringGrid;
Panel5: TPanel;
deti: TStringGrid;
Panel6: TPanel;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
czxmcx: TADOQuery;
procedure detiClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure sourClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure detiDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure sourDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
zyqxform: Tzyqxform;
implementation
uses datapas;
{$R *.DFM}
procedure Tzyqxform.detiClick(Sender: TObject);
begin
IF (deti.col=1) and (DETI.CELLS[1,DETI.ROW]<>' √') THEN
DETI.CELLS[1,DETI.ROW]:=' √' ELSE
DETI.CELLS[1,DETI.ROW]:='';
end;
procedure Tzyqxform.FormCreate(Sender: TObject);
begin
sour.ColWidths[0]:=sour.width;
deti.ColWidths[0]:=(deti.width*70) div 100;
deti.ColWidths[1]:=(deti.width*22) div 100-5;
end;
procedure Tzyqxform.FormShow(Sender: TObject);
var i:integer;
begin
with hjzcdata.zybmb do
begin
close;
open;
DisableControls;
first;
i:=0;
while not eof do
begin
sour.cells[0,i]:=fieldbyname('职员姓名').asstring;
i:=i+1;
next;
end;
enableControls;
end;
sour.RowCount:=i;
with czxmcx do
begin
close;
prepared;
open;
end;
i:=0;
while not czxmcx.eof do
begin
deti.cells[0,i]:=czxmcx.fieldbyname('管理项').asstring;
i:=i+1;
czxmcx.next;
end;
deti.rowcount:=i;
sourClick(self);
end;
procedure Tzyqxform.sourClick(Sender: TObject);
var i:integer;
begin
for i:=0 to deti.rowcount-1 do
deti.cells[1,i]:='';
with czxmcx do
begin
close;
sql.clear;
sql.add('select b.职员姓名,c.管理项 from 职员权限表 a,职员编码表 b,管理编码表 c');
sql.add('where a.职员编码=b.职员编码 and a.管理编码=c.管理编码 and b.职员姓名=:zyxm');
parameters.parambyname('zyxm').value:=sour.cells[0,sour.row];
prepared;
open;
end;
if czxmcx.IsEmpty then
exit;
while not czxmcx.eof do
begin
for i:=0 to deti.RowCount-1 do
if deti.cells[0,i]=czxmcx.FieldByName('管理项').asstring then
//deti.cells[1,i]:='有权操作';
deti.cells[1,i]:=' √';
czxmcx.next;
end;
end;
procedure Tzyqxform.Button1Click(Sender: TObject);
var zybm,gnbm,i:integer;
begin
with czxmcx do
begin
close;
sql.clear;
sql.add('select 职员编码 from 职员编码表 where 职员姓名=:xm');
parameters.parambyname('xm').value:=sour.cells[0,sour.row];
prepared;
open;
end;
if czxmcx.IsEmpty then
exit;
zybm:=czxmcx.fields[0].asinteger;
for i:=0 to deti.RowCount-1 do
begin
//if deti.cells[1,i]='有权操作' then
IF DETI.CELLS[1,I]=' √' THEN
begin
//有权操作时先判断管理编码表中有无此项,若无则追加
with czxmcx do
begin
close;
sql.clear;
sql.add('select 管理编码 from 管理编码表 where 管理项=:gnx');
parameters.parambyname('gnx').value:=deti.cells[0,i];
prepared;
open;
end;
gnbm:=czxmcx.Fields[0].asinteger;
with czxmcx do
begin
close;
sql.clear;
sql.add('select * from 职员权限表 where 职员编码=:zybm and 管理编码=:gnbm');
parameters.parambyname('zybm').value:=zybm;
parameters.parambyname('gnbm').value:=gnbm;
prepared;
open;
end;
if czxmcx.IsEmpty then
with czxmcx do
begin
close;
sql.clear;
sql.add('insert into 职员权限表 values(:zybm,:gnbm)');
parameters.parambyname('zybm').value:=zybm;
parameters.parambyname('gnbm').value:=gnbm;
prepared;
execsql;
end;
end else
begin
//无权操作时先判断管理编码表中有无此项,若有则删除
with czxmcx do
begin
close;
sql.clear;
sql.add('select 管理编码 from 管理编码表 where 管理项=:gnx');
parameters.parambyname('gnx').value:=deti.cells[0,i];
prepared;
open;
end;
gnbm:=czxmcx.Fields[0].asinteger;
with czxmcx do
begin
close;
sql.clear;
sql.add('select * from 职员权限表 where 职员编码=:zybm and 管理编码=:gnbm');
parameters.parambyname('zybm').value:=zybm;
parameters.parambyname('gnbm').value:=gnbm;
prepared;
open;
end;
if not czxmcx.IsEmpty then
with czxmcx do
begin
close;
sql.clear;
//showmessage(inttostr(gnbm)+' '+inttostr(zybm)+' '+inttostr(i));
sql.add('delete from 职员权限表 where 职员编码=:zybm and 管理编码=:gnbm');
parameters.parambyname('zybm').value:=zybm;
parameters.parambyname('gnbm').value:=gnbm;
prepared;
execsql;
end;
end;
end; //结束循环
messagedlg('保存权限设置成功!',mtconfirmation,[mbok],0);
end;
procedure Tzyqxform.detiDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Var
mShowStr: String;
myRect: TRect;
begin
mShowStr := deti.cells[ACol, ARow];
if (Acol = deti.ColCount-1) then
begin
deti.Canvas.Font.Color := clRed;
deti.Canvas.Font.Size:=12;
deti.Canvas.Font.Name:='宋体';
deti.Canvas.Font.Style:=[fsbold];
end else
begin
deti.Canvas.Font.Color := clblack;
deti.Canvas.Font.Size:=9;
deti.Canvas.Font.Name:='宋体';
deti.Canvas.Font.Style:=[];
end;
deti.Canvas.FillRect(Rect); //清空
//准备要写的区域
myRect := Rect;
MyRect.Top := MyRect.Top + 2;
myRect.Right := myRect.Right - 2;
DrawText(deti.Canvas.Handle, PChar(mShowStr), Length(mShowStr), myRect, DT_CENTER);
end;
procedure Tzyqxform.sourDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Var
mShowStr: String;
myRect: TRect;
begin
mShowStr := sour.cells[ACol, ARow];
sour.Canvas.Font.Color := clblack;
sour.Canvas.Font.Size:=9;
sour.Canvas.Font.Name:='宋体';
sour.Canvas.Font.Style:=[];
sour.Canvas.FillRect(Rect); //清空
//准备要写的区域
myRect := Rect;
MyRect.Top := MyRect.Top + 2;
myRect.Right := myRect.Right - 2;
DrawText(sour.Canvas.Handle, PChar(mShowStr), Length(mShowStr), myRect, DT_CENTER);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -