?? studclass.pas
字號(hào):
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"班級(jí)編號(hào)和名稱,該班級(jí)中有學(xué)生:'#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('確定要?jiǎng)h除班級(jí)“%S”嗎?本班級(jí)的相關(guān)信息如下:'#13,[tblclass['classname']]);
strmsg:=strmsg+format('班級(jí)編號(hào):%S'#13,[tblclass['classID']]);
strmsg:=strmsg+format('班級(jí)名稱:%S'#13,[tblclass['classname']]);
strmsg:=strmsg+format('所屬院系:%S'#13,[tbldepartment['departname']]);
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;
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”不能為空,請(qǐng)輸入足夠的信息!',[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('班級(jí)編號(hào)“%S”已經(jīng)存在,請(qǐng)從新輸入!'#13,[tblclass['classID']]);
strmsg:=strmsg+format('班級(jí)編號(hào):%S'#13,[tblclass['classID']]);
strmsg:=strmsg+format('班級(jí)名稱:%S'#13,[tblclass['classname']]);
strmsg:=strmsg+format('所屬院系:%S'#13,[tbldepartment['departname']]);
strmsg:=strmsg+format('入學(xué)日期:%S'#13,[tblclass['begindate']]);
strmsg:=strmsg+format('班主任:%S'#13,[tblclass['master']]);
strmsg:=strmsg+format('聯(lián)系電話:%S'#13,[tblclass['telephone']]);
showmessage(strmsg);
dbeclassID.SetFocus;
result:=false;
end;
tblvalid.Active:=false;
end;
begin
checkinput('classID','班級(jí)編號(hào)',dbeclassID,true);
checkinput('classname','班級(jí)名稱',dbeclassname,true);
checkinput('begindate','入學(xué)日期',dbebegindate,true);
checkinput('master','班主任',dbemaster,true);
checkinput('telephone','聯(lián)系電話',dbetelephone,true);
checkinput('description','說明',dbmDesc,false);
if dblcbdepart.Text='' then
begin
showmessage('所屬院系不能為空,請(qǐng)輸入足夠的信息');
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.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -