?? student.pas
字號(hào):
unit student;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls,
DBCtrls, Mask;
type
Tfrmstudent = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
dbestudentID: TDBEdit;
dbename: TDBEdit;
dbebirthday: TDBEdit;
dbenative: TDBEdit;
dblcclassname: TDBLookupComboBox;
dbrgsex: TDBRadioGroup;
dbnstudent: TDBNavigator;
BitBtn1: TBitBtn;
dbgstudent: TDBGrid;
tblstudent: TTable;
tblclass: TTable;
tblvalid: TTable;
dsstudent: TDataSource;
dsclass: TDataSource;
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure dbnstudentClick(Sender: TObject; Button: TNavigateBtn);
procedure tblstudentAfterScroll(DataSet: TDataSet);
procedure tblstudentBeforePost(DataSet: TDataSet);
procedure tblstudentBeforeDelete(DataSet: TDataSet);
private
procedure ToggleMode;
function HasChange(var str:string):boolean;
function HasReward(var str:string):boolean;
function Haspunish(var str:string):boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
frmstudent: Tfrmstudent;
implementation
{$R *.dfm}
procedure Tfrmstudent.BitBtn1Click(Sender: TObject);
begin
close;
end;
procedure Tfrmstudent.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tblstudent.Active:=false;
tblclass.Active:=false;
end;
procedure Tfrmstudent.FormShow(Sender: TObject);
begin
tblstudent.Active:=true;
tblclass.Active:=true;
end;
procedure Tfrmstudent.ToggleMode;
procedure EnableInput(enabled:boolean);
begin
dbgstudent.Enabled:=not enabled;
dbestudentID.Enabled:=enabled;
dbename.Enabled:=enabled;
dbrgsex.Enabled:=enabled;
dblcclassname.Enabled:=enabled;
dbebirthday.Enabled:=enabled;
dbenative.Enabled:=enabled;
end ;
begin
case tblstudent.State of
dsinsert,dsedit:
begin
EnableInput(true);
dbnstudent.VisibleButtons:=[nbpost,nbcancel];
dbestudentID.SetFocus;
end;
else
EnableInput(false);
dbnstudent.VisibleButtons:=[nbfirst,nbprior,nbnext,nblast,nbinsert,nbdelete,
nbedit,nbpost,nbcancel,nbrefresh];
end;
end;
procedure Tfrmstudent.dbnstudentClick(Sender: TObject;
Button: TNavigateBtn);
begin
ToggleMode;
end;
procedure Tfrmstudent.tblstudentAfterScroll(DataSet: TDataSet);
begin
ToggleMode;
end;
procedure Tfrmstudent.tblstudentBeforePost(DataSet: TDataSet);
procedure checkfield(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"不能為空,請(qǐng)從新輸入足夠的信息!',[fieldDesc]);
dbtext.SetFocus;
abort;
end
else
tblstudent.FieldByName(fieldname).AsString:=dbtext.Text;
end;
function validID:boolean;
var
strmsg:string;
begin
result:=true;
tblvalid.Active:=false;
tblvalid.TableName:='student';
tblvalid.Filter:='studentID='''+tblstudent['studentID']+'''';
tblvalid.Filtered:=true;
tblvalid.Active:=true;
if not tblvalid.Eof then
begin
strmsg:=format('學(xué)生編號(hào)“%s”已經(jīng)存在,請(qǐng)從新輸入!'#13,[tblstudent['studentID']]);
strmsg:=strmsg+format('學(xué)生編號(hào):%S'#13,[tblstudent['studentID']]);
strmsg:=strmsg+format('學(xué)生姓名:%S'#13,[tblstudent['studentname']]);
strmsg:=strmsg+format('出生日期:%S'#13,[tblstudent['birthday']]);
strmsg:=strmsg+format('籍貫:%S'#13,[tblstudent['native']]);
showmessage(strmsg);
dbestudentID.SetFocus;
result:=true
end;
tblvalid.Active:=false;
end;
begin
checkfield('studentID','學(xué)號(hào)',dbestudentId,true);
checkfield('name','姓名',dbename,true);
checkfield('birthday','出生日期',dbebirthday,true);
checkfield('native','籍貫',dbenative,true);
if dbrgsex.Value='' then
begin
showmessage('性別不能為空,請(qǐng)從新輸入足夠的信息');
dbrgsex.SetFocus;
abort;
end;
if dblcclassname.Text='' then
begin
showmessage('所屬院系不能為空,請(qǐng)輸入足夠的信息');
dblcclassname.SetFocus;
abort;
end;
if dbestudentID.Modified and not validID then
abort;
end;
function Tfrmstudent.HasChange(var str:string):boolean;
begin
result:=false;
tblvalid.Active:=false;
tblvalid.TableName:='change';
tblvalid.Filter:='studentID='''+tblstudent['studentID']+'''';
tblvalid.Filtered:=true;
tblvalid.Active:=true;
if tblvalid.Eof then
begin
str:=format('不能要?jiǎng)h除“%S”學(xué)生的資料嗎?'#13,[tblstudent['studentID']]);
str:=str+'此學(xué)生有轉(zhuǎn)系記錄';
result:=true;
end;
tblvalid.Active:=false;
end;
function Tfrmstudent.HasReward(var str:string ) :boolean;
begin
result:=false;
tblvalid.Active:=false;
tblvalid.TableName:='reward';
tblvalid.Filter:='studentID='''+tblstudent['studentID']+'''';
tblvalid.Filtered:=true;
tblvalid.Active:=true;
if not tblvalid.Eof then
begin
str:=format('不能刪除“%S”學(xué)生的資料,此學(xué)生有獎(jiǎng)學(xué)金記錄',[tblstudent['studentID']]);
result:=true;
end;
tblvalid.Active:=false;
end;
function Tfrmstudent.Haspunish(var str:string):boolean;
begin
result:=false;
tblvalid.Active:=false;
tblvalid.TableName:='punish';
tblvalid.Filter:='studentID='''+tblstudent['studentID']+'''';
tblvalid.Filtered:=true;
tblvalid.Active:=true;
if not tblvalid.Eof then
begin
str:=format('不能刪除“%S”學(xué)生的資料,此學(xué)生有處罰記錄',[tblstudent['studentID']]);
result:=true;
end;
tblvalid.Active:=false;
end;
procedure Tfrmstudent.tblstudentBeforeDelete(DataSet: TDataSet);
var strmsg:string;
begin
if Haschange(strmsg) then
begin
showmessage(strmsg);
abort;
end
else if HasReward(strmsg) then
begin
showmessage(strmsg);
abort;
end
else if HasPunish(strmsg) then
begin
showmessage(strmsg);
abort;
end;
strmsg:=format('確定要?jiǎng)h除“%S”的信息嗎?該學(xué)生的相關(guān)信息如下:'#13,[tblstudent['name']]);
strmsg:=strmsg+format('學(xué)號(hào):%S'#13,[tblstudent['studentID']]);
strmsg:=strmsg+format('姓名:%S'#13,[tblstudent['name']]);
strmsg:=strmsg+format('性別:%S'#13,[tblstudent['sex']]);
strmsg:=strmsg+format('所屬班級(jí):%S'#13,[tblclass['classname']]);
strmsg:=strmsg+format('班主任:%S'#13,[tblclass['master']]);
strmsg:=strmsg+format('聯(lián)系電話:%S'#13,[tblclass['telephone']]);
if messagedlg(strmsg,mtconfirmation,[mbyes,mbno],0)<>mryes then
abort;
end;
end.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -