📄 user_m.pas
字号:
unit User_M;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, Buttons, StdCtrls, ExtCtrls,
ComCtrls, fcTreeView;
type
TUserForm = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
lbNo: TLabel;
lbName1: TLabel;
lbSex: TLabel;
edNO: TEdit;
edName1: TEdit;
cbSex1: TComboBox;
btnReport: TButton;
btnFind: TBitBtn;
DBGrid: TDBGrid;
dsUser: TDataSource;
adoqUser: TADOQuery;
lbName2: TLabel;
edName2: TEdit;
lbPost: TLabel;
Label6: TLabel;
cbPost: TComboBox;
fcTreeView: TfcTreeView;
Label7: TLabel;
lbPwd1: TLabel;
edPwd1: TEdit;
lbPwd2: TLabel;
edPwd2: TEdit;
lbBornDate: TLabel;
dateDTP: TDateTimePicker;
lbAdress: TLabel;
edAdress: TEdit;
Edit8: TEdit;
lbMemo: TLabel;
lbTel: TLabel;
Edit9: TEdit;
lbEmail: TLabel;
Edit10: TEdit;
StatusBar1: TStatusBar;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
cbSex2: TComboBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure btnFindClick(Sender: TObject);
procedure edName2KeyPress(Sender: TObject; var Key: Char);
procedure cbPostChange(Sender: TObject);
procedure cbSex2Change(Sender: TObject);
procedure edPwd1KeyPress(Sender: TObject; var Key: Char);
procedure edPwd2KeyPress(Sender: TObject; var Key: Char);
procedure dateDTPKeyPress(Sender: TObject; var Key: Char);
procedure dateDTPChange(Sender: TObject);
procedure edAdressKeyPress(Sender: TObject; var Key: Char);
procedure Edit9KeyPress(Sender: TObject; var Key: Char);
procedure Edit8KeyPress(Sender: TObject; var Key: Char);
procedure Edit10KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure adoqUserAfterScroll(DataSet: TDataSet);
procedure BitBtn3Click(Sender: TObject);
private
//鼠标滚动 DBGrid 的数据跟着改变
procedure GridMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
procedure ControlTheEnablePro(isSaved: Boolean);//控制按钮面板的Enable属性
function GetUno: string;
{ Private declarations }
public
//function isNameExist(name: string): Boolean;
procedure SaveRnoFromTv(Uno: String);
function isUnameExist(Uname: string): Boolean; //检测用户名是否存在
//procedure SaveRnoFromTv(Uno: String);
//function isNameExist(name: string): Boolean;
{ Public declarations }
end;
TControlAccess = class(TControl);
var
UserForm: TUserForm;
flag: integer=0;
implementation
uses DataModul, public_unit;
{$R *.dfm}
procedure TUserForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := caFree;
UserForm := nil;
end;
procedure TUserForm.FormCreate(Sender: TObject);
begin
enable(self);
edNO.Enabled:=true;
edName1.Enabled:=true;
ControlTheEnablePro(true);
adoqUser.Open;
StatusBar1.Panels[0].Text:=' 当前的记录数: ' + IntToStr(adoqUser.RecordCount+1) + ' 条';
StatusBar1.Panels[1].Text :=' 操作用户管理窗口';
StatusBar1.Panels[2].Text :=' 请慎重操作 !';
TControlAccess(DBGrid).OnMouseWheel := GridMouseWheel;
end;
//鼠标滚动 DBGrid 的数据跟着改变
procedure TUserForm.GridMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
TDBGrid(Sender).DataSource.DataSet.MoveBy(-WheelDelta div WHEEL_DELTA);
Handled := True;
end;
procedure TUserForm.FormShow(Sender: TObject);
var
userQry: TAdoquery;
tvNode: TfcTreeNode;
begin
//Panel3.Enabled:=false;// 初始状态置显示框为不可编辑状态
userqry := TAdoquery.Create(nil);
userqry.Connection := dm.ADOConnection1;
clearText(self); //self 表示自身已经被创建完毕了
GetFieldsToCombox('001', cbSex1, DM.ADOConnection1); //性别
GetFieldsToCombox('001', cbSex2, DM.ADOConnection1);
GetFieldsToCombox('002', cbPost, DM.ADOConnection1); //职务
with userqry do
begin
sql.Text:='SELECT Rname, Rno FROM Trole';
Open;
While not Eof do
begin
tvNode := fcTreeView.Items.Add(nil, fieldByName('Rname').AsString);
tvNode.CheckboxType :=tvctCheckbox;
tvNode.StringData := fieldByName('Rno').AsString;
next;
end;
end;
with adoqUser do
begin
edName2.Text := fieldByname('Uname').AsString;
edPwd1.Text := fieldByname('upassWord').AsString;
edPwd2.Text := fieldByname('upassWord').AsString;
dateDTP.Date := StrToDate(fieldByName('UBirth').AsString);
edAdress.Text := fieldByname('UAddress').AsString;
edit8.Text := fieldByname('Umemo').AsString;
edit10.Text := fieldByname('UEmail').AsString;
edit9.Text := fieldByname('UPhone').AsString;
end;
userqry.Free;
// 窗体显示的时候 用户的角色选项 给 fcTreeView 的节点打上钩
CheckTvByField(adoqUser, DM.ADOConnection1, fcTreeView);
end;
procedure TUserForm.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if gdSelected in State then Exit; //隔行改变网格背景色:
if adoqUser.RecNo mod 2 = 0 then
(Sender as TDBGrid).Canvas.Brush.Color := clinfobk //定义背景颜色
else
(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色
//定义网格线的颜色:
DBGrid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
with (Sender as TDBGrid).Canvas do //画 cell 的边框
begin
Pen.Color := $00ff0000; //定义画笔颜色(蓝色)
MoveTo(Rect.Left, Rect.Bottom); //画笔定位
LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线
Pen.Color := clbtnface; //定义画笔颜色(兰色)
MoveTo(Rect.Right, Rect.Top); //画笔定位
LineTo(Rect.Right, Rect.Bottom); //画绿色
end;
end;
procedure TUserForm.btnFindClick(Sender: TObject);
var
sqlStr: string;
begin
sqlStr :=' SELECT DISTINCT a.*, b.Dname as Sex,C.Dname as Post ' +
'FROM TUser a ' +
'LEFT JOIN TDataParam b on a.Usex=b.Did ' +
'LEFT JOIN TDataParam c on a.Upost=c.Did ' +
'WHERE 1=1';
if edNO.Text<>'' then
sqlStr := Sqlstr+ ' AND Uno=' + QuotedStr(edNO.Text);
if edName1.Text <> '' then
sqlStr := sqlstr+ ' AND Uname like ''%' + edName1.Text + '%''';
if cbSex1.ItemIndex <> 0 then
sqlStr := sqlStr + ' AND b.Dname=' + QuotedStr(cbSex1.Text);
with adoqUser do
begin
Sql.Text := sqlStr;
Open;
end;
StatusBar1.Panels[0].Text:=' 当前的记录数: ' + IntToStr(adoqUser.RecordCount) + ' 条';
edNO.Text:='';
edName1.Text:='';
end;
procedure TUserForm.edName2KeyPress(Sender: TObject; var Key: Char);
begin
if(key=#13) and (edName2.Text<>'') then
begin
// if isName(edit3.Text) then
// begin
// if isNameExist(edit3.Text) then
// application.MessageBox('姓名已经存在','提示消息', mb_iconInformation)
// else
perform(WM_NEXTDLGCTL, 0, 0)
//end
//else
// begin
// if application.MessageBox('姓名含有无效字符','提示消息', mb_iconInformation+mb_ok)=idok then
// edit3.Clear;
// end;
end;
end;
procedure TUserForm.cbPostChange(Sender: TObject);
begin
if cbPost.ItemIndex < 1 then
Application.MessageBox('请选择职位', '提示消息', mb_IconInformation)
else
perform(WM_NEXTDLGCTL, 0, 0)
end;
{
function UserForm.isNameExist(name: string): Boolean;
var
sqlStr: string;
nameQry: TADOQuery;
begin
sqlStr := 'SELECT * FROM TUser WHERE Uname='+ QuotedStr(name);
nameQry := ToGetDataSQL(sqlStr, DM.ADOConnection1);
if nameQry.RecordCount > 0 then
result := true
else
Result := false;
nameQry.Free;
end; }
procedure TUserForm.cbSex2Change(Sender: TObject);
begin
perform(WM_NEXTDLGCTL, 0, 0);
end;
procedure TUserForm.edPwd1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if length(edPwd1.Text) < 6 then
application.MessageBox('密码长度必须不小于六位', '提示消息', mb_iconinformation)
else
perform(WM_NEXTDLGCTL, 0, 0)
end;
end;
procedure TUserForm.edPwd2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if edPwd1.Text<>edPwd2.Text then
begin
application.MessageBox('两次密码输入不相等,请重输', '提示消息', mb_iconinformation);
edPwd2.Clear;
end
else
perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
procedure TUserForm.dateDTPKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if(dateDTP.Date < 1905-1-1) or (dateDTP.DateTime > Now) then
begin
Application.MessageBox('输入日期非法', '提示消息', mb_iconInformation);
dateDTP.SetFocus;
end;
end;
end;
procedure TUserForm.dateDTPChange(Sender: TObject);
begin
if(dateDTP.Date < 1905-1-1) or (dateDTP.DateTime > Now) then
begin
Application.MessageBox('输入日期非法', '提示消息', mb_iconInformation);
dateDTP.SetFocus;
end;
end;
procedure TUserForm.edAdressKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
Perform(WM_NEXTDLGCTL, 0, 0);
end;
procedure TUserForm.Edit9KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
//if(Edit9.Text<>'') and (isFixedTel(Edit9.Text)=false) then
// begin
// if application.MessageBox('电话号码不合法', '提示信息',
// mb_iconInformation) = idok then
// Edit9.Clear
// end
// else
perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
procedure TUserForm.Edit8KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
Perform(WM_NEXTDLGCTL, 0, 0);
end;
procedure TUserForm.Edit10KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
// if(edit10.Text<>'') and (isEmail(edit10.Text)=false) then
// begin
// if application.MessageBox('电子邮件地址不合法', '提示信息',
// mb_iconInformation) = idok then
// edit10.Clear
// end
// else
perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
procedure TUserForm.ControlTheEnablePro(isSaved: Boolean);
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -