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

📄 formcoursearrange.pas

📁 Delphi数据库编程
💻 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 + -