📄 formcoursearrange.pas
字号:
unit FormCourseArrange;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, StdCtrls, Grids, DBGrids, DBCtrls, ExtCtrls, Mask;
type
TfrmCourseArrange = class(TForm)
gpbClass: TGroupBox;
dbgCourseArrange: TDBGrid;
btnQuit: TButton;
tblClass: TTable;
dbgClass: TDBGrid;
qryClassInfo: TQuery;
dsClassInfo: TDataSource;
dbtClassID: TDBText;
dbtClassName: TDBText;
dbtBeginDate: TDBText;
dbtMaster: TDBText;
dbtDepartName: TDBText;
dbtDepartHead: TDBText;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
qryCourseArrange: TQuery;
dsCourseArrange: TDataSource;
dsClass: TDataSource;
dbnCourseSelect: TDBNavigator;
Label2: TLabel;
dbeClassDate: TDBEdit;
Label8: TLabel;
dbeClassRoom: TDBEdit;
dbllCourseName: TDBLookupListBox;
Label9: TLabel;
tblCourseSelect: TTable;
dsCourseSelect: TDataSource;
tblCourse: TTable;
dsCourse: TDataSource;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnQuitClick(Sender: TObject);
procedure tblCourseSelectBeforePost(DataSet: TDataSet);
procedure tblCourseSelectAfterPost(DataSet: TDataSet);
procedure dbnCourseSelectClick(Sender: TObject; Button: TNavigateBtn);
procedure tblCourseSelectBeforeDelete(DataSet: TDataSet);
procedure tblCourseSelectAfterScroll(DataSet: TDataSet);
procedure tblCourseSelectAfterDelete(DataSet: TDataSet);
procedure tblClassAfterOpen(DataSet: TDataSet);
procedure tblCourseSelectAfterOpen(DataSet: TDataSet);
procedure qryCourseArrangeAfterOpen(DataSet: TDataSet);
procedure qryCourseArrangeAfterScroll(DataSet: TDataSet);
procedure tblClassAfterScroll(DataSet: TDataSet);
private
procedure ToggleMode;
public
{ Public declarations }
end;
var
frmCourseArrange: TfrmCourseArrange;
implementation
{$R *.dfm}
procedure TfrmCourseArrange.FormShow(Sender: TObject);
begin
tblClass.Active := true;
tblCourse.Active := true;
end;
procedure TfrmCourseArrange.btnQuitClick(Sender: TObject);
begin
close;
end;
procedure TfrmCourseArrange.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tblCourse.Active := false;
tblClass.Active := false;
end;
{tblClass}
procedure TfrmCourseArrange.tblClassAfterOpen(DataSet: TDataSet);
begin
qryClassInfo.Active := false;
qryCourseArrange.Active := false;
end;
procedure TfrmCourseArrange.tblClassAfterScroll(DataSet: TDataSet);
begin
qryClassInfo.Active := false;
qryClassInfo.ParamByName('ClassID').AsString := tblClass.FieldByName('ClassID').AsString;
qryClassInfo.Active := true;
qryCourseArrange.Active := false;
qryCourseArrange.ParamByName('ClassID').AsString := tblClass.FieldByName('ClassID').AsString;
qryCourseArrange.Active := true;
end;
{qryCourseArrange}
procedure TfrmCourseArrange.qryCourseArrangeAfterOpen(DataSet: TDataSet);
begin
if qryCourseArrange.Eof then
begin
tblCourseSelect.Filter := 'ID=-1';
tblCourseSelect.Filtered := true;
tblCourseSelect.Active := true;
end;
end;
procedure TfrmCourseArrange.qryCourseArrangeAfterScroll(DataSet: TDataSet);
begin
tblCourseSelect.Active := false;
tblCourseSelect.Filter := 'ID=''' + qryCourseArrange.FieldByName('ID').AsString + '''';
tblCourseSelect.Filtered := true;
tblCourseSelect.Active := true;
end;
{ tblCourseSelect}
procedure TfrmCourseArrange.tblCourseSelectAfterOpen(DataSet: TDataSet);
begin
ToggleMode;
end;
procedure TfrmCourseArrange.tblCourseSelectAfterScroll(DataSet: TDataSet);
begin
ToggleMode;
end;
procedure TfrmCourseArrange.dbnCourseSelectClick(Sender: TObject; Button: TNavigateBtn);
begin
ToggleMode;
end;
procedure TfrmCourseArrange.ToggleMode;
procedure EnableInput(Enabled: Boolean);
begin
dbllCourseName.Enabled := Enabled;
dbeClassDate.Enabled := Enabled;
dbeClassRoom.Enabled := Enabled;
end;
begin
case tblCourseSelect.State of
dsInsert, dsEdit:
begin
EnableInput(true);
dbnCourseSelect.VisibleButtons := [nbPost, nbCancel];
dbeClassDate.SetFocus;
end;
else
EnableInput(false);
dbnCourseSelect.VisibleButtons := [nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh];
end;
end;
procedure TfrmCourseArrange.tblCourseSelectBeforeDelete(DataSet: TDataSet);
var
strMsg: string;
begin
strMsg := '是否确定要删除以下课程安排?'#13;
strMsg := strMsg + Format(' 课程名称:%s'#13, [qryCourseArrange['CourseName']]);
strMsg := strMsg + Format(' 选课班级:%s'#13, [tblClass['ClassName']]);
strMsg := strMsg + Format(' 上课时间:%s'#13, [qryCourseArrange['ClassDate']]);
strMsg := strMsg + Format(' 上课教室:%s', [qryCourseArrange['ClassRoom']]);
if MessageDlg(strMsg, mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
Abort;
end;
procedure TfrmCourseArrange.tblCourseSelectAfterDelete(DataSet: TDataSet);
begin
qryCourseArrange.Active := false;
qryCourseArrange.ParamByName('ClassID').AsString := tblClass.FieldByName('ClassID').AsString;
qryCourseArrange.Active := true;
end;
procedure TfrmCourseArrange.tblCourseSelectBeforePost(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
tblCourseSelect.FieldByName(FieldName).AsString := dbText.Text;
end;
begin
CheckField('ClassDate', '上课时间', dbeClassDate, true);
CheckField('ClassRoom', '上课教室', dbeClassRoom, true);
if tblCourseSelect.FieldByName('CourseID').AsString = '' then
begin
ShowMessage('请选择一门课程!');
dbllCourseName.SetFocus;
Abort;
end;
tblCourseSelect['ClassID'] := tblClass['ClassID'];
end;
procedure TfrmCourseArrange.tblCourseSelectAfterPost(DataSet: TDataSet);
begin
qryCourseArrange.Active := false;
qryCourseArrange.ParamByName('ClassID').AsString := tblClass.FieldByName('ClassID').AsString;
qryCourseArrange.Active := true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -