⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 user_m.pas

📁 DELPHI计算机科学系教务管理系统,带论文设计,不错的参考
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -