?? department.pas
字號:
unit department;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, DB, DBTables, Grids, DBGrids, Buttons,
ExtCtrls, Mask;
type
Tfrmdepartment = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
dbedepartmentID: TDBEdit;
dbedepartmentName: TDBEdit;
dbehead: TDBEdit;
dbetelephone: TDBEdit;
GroupBox1: TGroupBox;
dbndepartment: TDBNavigator;
btnquit: TBitBtn;
dbgdepartment: TDBGrid;
tbldepartment: TTable;
tblvalid: TTable;
dsdepartment: TDataSource;
dbmDesc: TDBMemo;
procedure btnquitClick(Sender: TObject);
procedure dbndepartmentClick(Sender: TObject; Button: TNavigateBtn);
procedure tbldepartmentAfterScroll(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure tbldepartmentBeforePost(DataSet: TDataSet);
procedure tbldepartmentBeforeDelete(DataSet: TDataSet);
private
procedure ToggleMode;
function Hasclass(var str:string):boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
frmdepartment: Tfrmdepartment;
implementation
{$R *.dfm}
procedure Tfrmdepartment.btnquitClick(Sender: TObject);
begin
close;
end;
procedure Tfrmdepartment.ToggleMode;
var strmsg:string;
procedure enableinput(enabled:boolean);
begin
dbgdepartment.Enabled:=not enabled;
dbedepartmentID.Enabled:=enabled;
dbedepartmentname.Enabled:=enabled;
dbehead.Enabled:=enabled;
dbetelephone.Enabled:=enabled;
dbmDesc.Enabled:=enabled;
end;
begin
case tbldepartment.State of
dsinsert,dsedit:
begin
enableinput(true);
dbndepartment.VisibleButtons:=[nbpost,nbcancel];
dbedepartmentId.SetFocus;
end;
else
enableinput(false);
dbndepartment.VisibleButtons:=[nbfirst,nbprior,nbnext,nblast,
nbinsert,nbdelete,nbedit,nbpost,nbcancel,nbrefresh];
end;
if (tbldepartment.State=dsedit) and hasclass(strmsg) then
begin
showmessage(strmsg);
dbedepartmentId.Enabled:=false;
end;
end;
function Tfrmdepartment.Hasclass(var str :string):boolean;
begin
result:=false;
tblvalid.Active:=false;
tblvalid.TableName:='class';
tblvalid.Filter:='departID='''+tbldepartment['departID']+'''';
tblvalid.Filtered:=true;
tblvalid.Active:=true;
if not tblvalid.Eof then
begin
str:=format('不能修改院系"%S"的編號下面的班級:'#13,[tbldepartment['departname']]) ;
repeat
str:=str+format('%10S-%s'#13,[tblvalid['classID'],tblvalid['classname']]);
tblvalid.Next;
until tblvalid.Eof;
str:=str+'隸屬于該院系';
result:=true;
end;
tblvalid.Active:=false;
end;
procedure Tfrmdepartment.dbndepartmentClick(Sender: TObject;
Button: TNavigateBtn);
begin
ToggleMode;
end;
procedure Tfrmdepartment.tbldepartmentAfterScroll(DataSet: TDataSet);
begin
ToggleMode;
end;
procedure Tfrmdepartment.FormShow(Sender: TObject);
begin
tbldepartment.Active:=true;
end;
procedure Tfrmdepartment.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
tbldepartment.Active:=false;
action:=cafree;
end;
procedure Tfrmdepartment.tbldepartmentBeforePost(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"不能為空,請從新輸入足夠的信息',[fieldDesc]);
dbtext.SetFocus ;
abort;
end
else
tbldepartment.FieldByName(fieldname).AsString:=dbtext.Text;
end;
function validID :boolean;
var strmsg1 :string;
begin
result:=true;
tblvalid.Active:=false;
tblvalid.TableName:='department';
tblvalid.Filter:='departID='''+tbldepartment['departID']+'''';
tblvalid.Filtered:=true;
tblvalid.Active:=true;
if not tblvalid.Eof then
begin
strmsg1:=format('院系編號"%S"已經存在,請從新輸入!'#13,[tbldepartment['departID']]);
strmsg1:=strmsg1+format('院系編號:%S'#13,[tbldepartment['departId']]);
strmsg1:=strmsg1+format('院系名稱:%S'#13,[tbldepartment['departname']]);
strmsg1:=strmsg1+format('院系領導:%S'#13,[tbldepartment['departhead']]);
showmessage(strmsg1);
dbedepartmentID.SetFocus;
result:=false;
end;
tblvalid.Active:=false;
end;
begin
checkfield('departID','院系編號',dbedepartmentID,true);
checkfield('departname','院系名稱',dbedepartmentName,true);
checkfield('departhead','負責人',dbehead,true);
checkfield('telephone','聯系電話',dbetelephone,true);
checkfield('description','說明',dbmDesc,false);
if dbedepartmentID.Modified and not validID then
abort;
end;
procedure Tfrmdepartment.tbldepartmentBeforeDelete(DataSet: TDataSet);
var strmsg :string;
begin
if hasclass(strmsg) then
begin
showmessage(strmsg);
abort;
end;
strmsg:=format('確定要刪除院系"%S"嗎?該院系相關信息如下:'#13,[tbldepartment['departID']]);
strmsg:=strmsg+format('院系編號:%S'#13,[tbldepartment['departId']]);
strmsg:=strmsg+format('院系名稱:%S'#13,[tbldepartment['departname']]);
strmsg:=strmsg+format('院系領導:%S'#13,[tbldepartment['departhead']]);
if messageDlg(strmsg,mtconfirmation,[mbyes,mbno],0)<>mryes then
abort;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -