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

📄 studclass.pas

📁 Delphi+SQL的学生信息管理系统
💻 PAS
字号:
unit studclass;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls,
  DBCtrls, Mask;

type
  Tfrmclass = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    dbeclassID: TDBEdit;
    dbeclassname: TDBEdit;
    dbebegindate: TDBEdit;
    dbemaster: TDBEdit;
    dbetelephone: TDBEdit;
    dblcbdepart: TDBLookupComboBox;
    GroupBox1: TGroupBox;
    dbmDesc: TDBMemo;
    dbnclass: TDBNavigator;
    btnquit: TBitBtn;
    dbgclass: TDBGrid;
    tblclass: TTable;
    tbldepartment: TTable;
    tblvalid: TTable;
    dsclass: TDataSource;
    dsdepart: TDataSource;
    procedure btnquitClick(Sender: TObject);
    procedure dbnclassClick(Sender: TObject; Button: TNavigateBtn);
    procedure tblclassAfterScroll(DataSet: TDataSet);
    procedure tblclassBeforeDelete(DataSet: TDataSet);
    procedure tblclassBeforePost(DataSet: TDataSet);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
  private
    procedure ToggleMode;
    function hasStudent(var str:string):boolean;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmclass: Tfrmclass;

implementation

{$R *.dfm}

procedure Tfrmclass.btnquitClick(Sender: TObject);
begin
close;
end;
procedure Tfrmclass.ToggleMode;
  var strmsg:string;
  procedure EnableInput(enabled:boolean) ;
  begin
    dbgclass.Enabled:=not enabled;
    dbeclassID.Enabled:=enabled;
    dbeclassname.Enabled:=enabled;
    dblcbdepart.Enabled:=enabled;
    dbebegindate.Enabled:=enabled;
    dbemaster.Enabled:=enabled;
    dbetelephone.Enabled:=enabled;
    dbmDesc.Enabled:=enabled;
  end;
  begin
  case tblclass.State of
       dsinsert,dsedit:
       begin
       EnableInput(true);
       dbnclass.VisibleButtons:=[nbpost,nbcancel];
       dbeclassID.SetFocus;
       end;
  else
  enableInput(false);
  dbnclass.VisibleButtons:=[nbfirst,nbprior,nbnext,nblast,nbinsert,nbdelete,
                         nbedit,nbpost,nbcancel,nbrefresh];
  end;
    if (tblclass.State=dsedit) and hasStudent(strmsg) then
      begin
      showmessage(strmsg);
      dbeclassID.Enabled:=false;
      dbeclassname.Enabled:=false;
      dblcbdepart.Enabled:=false;
     end;
end;
function Tfrmclass.hasStudent(var str:string):boolean;
  begin
   result:=false;
   tblvalid.Active:=false;
   tblvalid.TableName:='student';
   tblvalid.Filter:='classID='+tblclass['classID'];
   tblvalid.Filtered:=true;
   tblvalid.Active:=true;
     if not tblvalid.Eof then
     begin
      str:=format('不能修改"%S"班级编号和名称,该班级中有学生:'#13,[tblclass['classname']]);
      result:=true;
     end;
     tblvalid.Active:=false;
  end;
procedure Tfrmclass.dbnclassClick(Sender: TObject; Button: TNavigateBtn);
begin
    ToggleMode;
end;

procedure Tfrmclass.tblclassAfterScroll(DataSet: TDataSet);
begin
    ToggleMode;
end;

procedure Tfrmclass.tblclassBeforeDelete(DataSet: TDataSet);
var
  strmsg:string;
begin
   if hasStudent(strmsg) then
   begin
   showmessage(strmsg);
   abort;
   end;
   strmsg:=format('确定要删除班级“%S”吗?本班级的相关信息如下:'#13,[tblclass['classname']]);
   strmsg:=strmsg+format('班级编号:%S'#13,[tblclass['classID']]);
   strmsg:=strmsg+format('班级名称:%S'#13,[tblclass['classname']]);
   strmsg:=strmsg+format('所属院系:%S'#13,[tbldepartment['departname']]);
   strmsg:=strmsg+format('班主任:%S'#13,[tblclass['master']]);
   strmsg:=strmsg+format('联系电话:%S'#13,[tblclass['telephone']]);
   if messagedlg(strmsg,mtconfirmation,[mbyes,mbno],0)<>mryes then
     abort;
end;

procedure Tfrmclass.tblclassBeforePost(DataSet: TDataSet);
   procedure checkInput(fieldname,fieldDesc:string;dbtext:tcustomedit;notempty:boolean);
     begin
       dbtext.Text:=trim(dbtext.Text);
       dbtext.Text:=stringreplace(dbtext.Text,'''','',[rfreplaceall]);
       dbtext.Text:=stringreplace(dbtext.Text,'','',[rfreplaceall]);
       if notempty and (dbtext.Text='') then
        begin
        showmessagefmt('“%S”不能为空,请输入足够的信息!',[fieldDesc]);
        dbtext.SetFocus;
        abort;
        end
        else
       tblclass.FieldByName(fieldname).AsString:=dbtext.Text;
     end;
   function  validID :boolean;
    var strmsg:string;
    begin
     result:=true;
     tblvalid.Active:=false;
     tblvalid.TableName:='student';
     tblvalid.Filter:='classID='''+tblclass['classID']+'''';
     tblvalid.Filtered:=true;
     tblvalid.Active:=true;
     if not tblvalid.Eof then
     begin
     strmsg:=format('班级编号“%S”已经存在,请从新输入!'#13,[tblclass['classID']]);
     strmsg:=strmsg+format('班级编号:%S'#13,[tblclass['classID']]);
     strmsg:=strmsg+format('班级名称:%S'#13,[tblclass['classname']]);
     strmsg:=strmsg+format('所属院系:%S'#13,[tbldepartment['departname']]);
     strmsg:=strmsg+format('入学日期:%S'#13,[tblclass['begindate']]);
     strmsg:=strmsg+format('班主任:%S'#13,[tblclass['master']]);
     strmsg:=strmsg+format('联系电话:%S'#13,[tblclass['telephone']]);
     showmessage(strmsg);
     dbeclassID.SetFocus;
     result:=false;
     end;
     tblvalid.Active:=false;
     end;
   begin
    checkinput('classID','班级编号',dbeclassID,true);
    checkinput('classname','班级名称',dbeclassname,true);
    checkinput('begindate','入学日期',dbebegindate,true);
    checkinput('master','班主任',dbemaster,true);
    checkinput('telephone','联系电话',dbetelephone,true);
    checkinput('description','说明',dbmDesc,false);
    if dblcbdepart.Text='' then
    begin
     showmessage('所属院系不能为空,请输入足够的信息');
     dblcbdepart.SetFocus;
     abort;
    end;
    if dbeclassId.Modified and not  validID then
    abort;
  end;
procedure Tfrmclass.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   tblclass.Active:=false;
   tbldepartment.Active:=false;
end;

procedure Tfrmclass.FormShow(Sender: TObject);
begin
tblclass.Active:=true;
tbldepartment.Active:=true;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -