📄 userauthor.pas
字号:
unit UserAuthor;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, Mask, DBCtrls, Db, DBTables, ExtCtrls, Grids, DBGrids,Dialogs;
type
TfrmAuthor = class(TForm)
SrcList: TListBox;
EditList: TListBox;
SrcLabel: TLabel;
DstLabel: TLabel;
BtnSel: TSpeedButton;
BtnSelAll: TSpeedButton;
BtnUnSel: TSpeedButton;
BtnUnselAll: TSpeedButton;
Label2: TLabel;
Label3: TLabel;
dnUser: TDBNavigator;
BtnAppend: TSpeedButton;
BtnDelete: TSpeedButton;
BtnSure: TSpeedButton;
BtnCancel: TSpeedButton;
BtnExit: TSpeedButton;
edDm: TEdit;
edXm: TEdit;
cbSuper: TCheckBox;
BtnEdit: TSpeedButton;
DBGrid1: TDBGrid;
btnpass: TSpeedButton;
procedure BtnSelClick(Sender: TObject);
procedure BtnUnSelClick(Sender: TObject);
procedure BtnSelAllClick(Sender: TObject);
procedure BtnUnselAllClick(Sender: TObject);
procedure BtnSureClick(Sender: TObject);
procedure BtnDeleteClick(Sender: TObject);
procedure BtnExitClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BtnCancelClick(Sender: TObject);
procedure BtnAppendClick(Sender: TObject);
procedure BtnEditClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure cbSuperClick(Sender: TObject);
procedure btnpassClick(Sender: TObject);
private
gncount:integer;
procedure EditToTable;
procedure FillList(List: TListBox);
procedure GetQx(QxString:String);
function SetQx():string;
public
MyStatus:String;
procedure TableToEdit;
procedure ShowMyButton;
end;
var
frmAuthor: TfrmAuthor;
implementation
uses mycommon, DGSDM;
{$R *.DFM}
procedure TfrmAuthor.EditToTable;
begin
with DM_GSGL do
begin
if MyStatus='add' then
QryUser.Fieldbyname('密码').AsString:=Encrypt(edDm.Text);
QryUser.Fieldbyname('用户工号').AsString:=edDm.Text;
QryUser.Fieldbyname('姓名').AsString:=edXm.Text;
QryUser.Fieldbyname('权限').AsString:=SetQx;
QryUser.Fieldbyname('系统管理员').AsBoolean:=cbSuper.Checked;
end;
end;
procedure TfrmAuthor.TableToEdit;
var
qxstring:string;
begin
with DM_GSGL do
begin
edDm.Text:=QryUser.Fieldbyname('用户工号').AsString;
edXm.Text:=QryUser.Fieldbyname('姓名').AsString;
cbSuper.Checked:=QryUser.Fieldbyname('系统管理员').AsBoolean;
qxString:=QryUser.Fieldbyname('权限').AsString;
if length(trim(qxstring))<gncount then
qxstring:=trim(qxstring)+stringofchar('N',gncount-length(trim(qxstring)));
GetQx(qxstring);
end;
end;
procedure TfrmAuthor.FormShow(Sender: TObject);
begin
MyStatus:='browse';
with DM_GSGL do
begin
if QryTemp.Active=True then
QryTemp.Close;
QryTemp.SQL.Clear;
QryTemp.SQL.Add('select count(功能编号) countgn from 系统功能');
QryTemp.Open;
gncount:=QryTemp.Fieldbyname('countgn').AsInteger;
if QryUser.Active=True then
QryUser.Close;
QryUser.Open;
end;
TableToEdit;
ShowMyButton;
end;
procedure TfrmAuthor.ShowMyButton;
begin
if (MyStatus = 'browse') then
begin
dbgrid1.enabled:=true;
edDm.ReadOnly:=True;
edXm.ReadOnly:=True;
cbSuper.Enabled:=False;
BtnSel.Enabled:=False;
BtnSelAll.Enabled:=False;
BtnUnSel.Enabled:=False;
BtnUnSelAll.Enabled:=False;
BtnAppend.Enabled := True;
BtnEdit.Enabled := True;
BtnDelete.Enabled := True;
BtnExit.Enabled := True;
btnpass.Enabled := True;
if (DM_GSGL.QryUser.Eof) and (DM_GSGL.QryUser.Bof=True) then
begin
btnpass.Enabled := False;
BtnEdit.Enabled := False;
BtnDelete.Enabled := False;
end;
BtnSure.Enabled := False; //Sure Button
BtnCancel.Enabled := False; //Cancel Button
end
else
begin
dbgrid1.enabled:=False;
btnpass.Enabled := False;
edDm.ReadOnly:=False;
edXm.ReadOnly:=False;
cbSuper.Enabled:=True;
if cbSuper.Checked=False then
begin
if SrcList.Items.Count>0 then
begin
BtnSel.Enabled:=True;
BtnSelAll.Enabled:=True;
end
else
begin
BtnSel.Enabled:=False;
BtnSelAll.Enabled:=False;
end;
if EditList.Items.Count>0 then
begin
BtnUnSel.Enabled:=True;
BtnUnSelAll.Enabled:=True;
end
else
begin
BtnUnSel.Enabled:=False;
BtnUnSelAll.Enabled:=False;
end;
end
else
begin
BtnSel.Enabled:=False;
BtnSelAll.Enabled:=False;
BtnUnSel.Enabled:=False;
BtnUnSelAll.Enabled:=False;
end;
BtnAppend.Enabled := False;
BtnEdit.Enabled := False;
BtnDelete.Enabled := False;
BtnExit.Enabled := False;
BtnSure.Enabled := True; //Sure Button
BtnCancel.Enabled := True; //Cancel Button
end;
end;
procedure TfrmAuthor.FillList(List: TListBox);
var
moddm,modName:String;
begin
List.Items.Clear;
with DM_GSGL do
begin
if QryXtgn.Active=False then
QryXtgn.close;
QryXtgn.open;
QryXtgn.First;
while (not QryXtgn.eof) do
begin
moddm:=QryXtgn.FieldByName('功能编号').AsString;
if QryXtgn.FieldByName('功能名称').isnull then
modname:='[]'
else
modname:=QryXtgn.fieldbyname('功能名称').asstring;
list.Items.Add(moddm+StringOfChar(' ', 3-Length(moddm))+modname);
QryXtgn.Next;
end;
end;
end;
procedure TfrmAuthor.GetQx(QxString:String);
var
i:integer;
begin
SrcList.Items.Clear;
EditList.Items.Clear;
FillList(SrcList);
if cbSuper.Checked=True then
begin
FillList(EditList);
SrcList.Items.Clear;
ShowMyButton;
exit;
end;
for i:=0 to gncount-1 do
begin
if UpperCase(QxString[i+1])='Y' then
begin
EditList.Items.Append(SrcList.Items[i]);
SrcList.Selected[i]:=true;
end;
end;
for i:=gncount-1 downto 0 do
if SrcList.Selected[i] then
SrcList.Items.Delete(i);
ShowMyButton;
end;
procedure TfrmAuthor.BtnSelClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to SrcList.Items.Count-1 do
if SrcList.Selected[i] then
EditList.Items.Add(SrcList.Items[i]);
for i:=SrcList.Items.Count-1 downto 0 do
if SrcList.Selected[i] then
SrcList.Items.Delete(i);
showMyButton;
end;
procedure TfrmAuthor.BtnUnSelClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to EditList.Items.Count-1 do
if EditList.Selected[i] then
SrcList.Items.Add(EditList.Items[i]);
for i:=EditList.Items.Count-1 downto 0 do
if EditList.Selected[i] then
EditList.Items.Delete(i);
showMyButton;
end;
procedure TfrmAuthor.BtnSelAllClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to SrcList.Items.Count-1 do
EditList.Items.Add(SrcList.Items[i]);
for i:=SrcList.Items.Count-1 downto 0 do
SrcList.Items.Delete(i);
showMyButton;
end;
procedure TfrmAuthor.BtnUnselAllClick(Sender: TObject);
var
I: Integer;
begin
for i:=0 to EditList.Items.Count-1 do
SrcList.Items.Add(EditList.Items[i]);
for i:=EditList.Items.Count-1 downto 0 do
EditList.Items.Delete(i);
showMyButton;
end;
function TfrmAuthor.SetQx:string;
var
i,k:integer;
tmpEdit:String;
begin
if cbSuper.Checked=True then exit;
FillList(SrcList);
SetLength(tmpEdit,gnCount);
tmpEdit:=stringofchar('N',gncount);
for i:=0 to (EditList.Items.Count - 1) do
begin
k:=SrcList.Items.IndexOf(EditList.Items[i]);
tmpEdit[k+1]:='Y';
end;
result:=tmpEdit;
end;
procedure TfrmAuthor.BtnSureClick(Sender: TObject);
var
tmpstring:string;
begin
tmpstring:=edDm.Text;
// if (edDm.Text='') or (eddm.Text='Admin') then
if (edDm.Text='') then
begin
Application.MessageBox('代码不能是空的!','错误',mb_ok or mb_iconError);
edDm.SetFocus;
exit;
end;
if MyStatus='add' then
begin
if DM_GSGL.QryUser.Locate('用户工号',edDm.Text,[loCaseInsensitive]) then
begin
Application.MessageBox('此用户工号已经存在!','错误',mb_ok or mb_iconError);
edDm.SetFocus;
exit;
end;
DM_GSGL.QryUser.Append;
EditToTable;
DM_GSGL.QryUser.Post;
DM_GSGL.QryUser.Close;
DM_GSGL.QryUser.Open;
DM_GSGL.QryUser.Locate('用户工号',tmpstring,[loCaseInsensitive]);
end;
if MyStatus='edit' then
begin
with DM_GSGL do
begin
QryUser.Edit;
EditToTable;
QryUser.Post;
end;
end;
MyStatus:='browse';
TableToEdit;
ShowMyButton;
end;
procedure TfrmAuthor.BtnDeleteClick(Sender: TObject);
begin
if Application.MessageBox('你确实要删除当前用户吗?','确认',mb_YesNo or mb_iconQuestion)=IDYES then
DM_GSGL.QryUser.Delete;
end;
procedure TfrmAuthor.BtnExitClick(Sender: TObject);
begin
close;
end;
procedure TfrmAuthor.BtnCancelClick(Sender: TObject);
begin
MyStatus:='browse';
TableToEdit;
ShowMyButton;
end;
procedure TfrmAuthor.BtnAppendClick(Sender: TObject);
begin
MyStatus:='add';
edDm.Text:='';
edXm.Text:='';
cbSuper.checked:=False;
Filllist(SrcList);
EditList.Items.Clear;
ShowMyButton;
edDm.SetFocus;
end;
procedure TfrmAuthor.BtnEditClick(Sender: TObject);
begin
MyStatus:='edit';
ShowMyButton;
end;
procedure TfrmAuthor.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM_GSGL.QryUser.Close;
end;
procedure TfrmAuthor.cbSuperClick(Sender: TObject);
begin
ShowMyButton;
end;
procedure TfrmAuthor.btnpassClick(Sender: TObject);
begin
MyStatus:='edit';
DM_GSGL.QryUser.Edit;
DM_GSGL.QryUser.Fieldbyname('密码').AsString:=Encrypt('1');
DM_GSGL.QryUser.Post;
MyStatus:='browse';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -