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

📄 formpunish.pas

📁 Delphi数据库编程
💻 PAS
字号:
unit FormPunish;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, DBCtrls, ExtCtrls, StdCtrls, Mask, Grids, DBGrids;

type
  TfrmPunish = class(TForm)
    Label1: TLabel;
    Label5: TLabel;
    dbgPunish: TDBGrid;
    btnQuit: TButton;
    dbeStudentID: TDBEdit;
    dbnPunish: TDBNavigator;
    dbeRecDate: TDBEdit;
    dsPunish: TDataSource;
    tblPunish: TTable;
    dbrgPunish: TDBRadioGroup;
    dbmDesc: TDBMemo;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    dbtName: TDBText;
    tblStudent: TTable;
    dsStudent: TDataSource;
    dbtSex: TDBText;
    dbtBirthday: TDBText;
    dbtClass: TDBText;
    tblClass: TTable;
    dsClass: TDataSource;
    dbtMaster: TDBText;
    procedure btnQuitClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure tblPunishAfterScroll(DataSet: TDataSet);
    procedure dbnPunishClick(Sender: TObject; Button: TNavigateBtn);
    procedure tblPunishBeforeDelete(DataSet: TDataSet);
    procedure tblPunishBeforePost(DataSet: TDataSet);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  Private
    procedure ToggleMode;
  Public
    { Public declarations }
  end;

var
  frmPunish: TfrmPunish;

implementation

{$R *.dfm}

procedure TfrmPunish.FormShow(Sender: TObject);
begin
  tblPunish.Active := true;
  tblStudent.Active := true;
  tblClass.Active := true;
  ToggleMode
end;

procedure TfrmPunish.btnQuitClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmPunish.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  tblPunish.Active := false;
  tblStudent.Active := false;
  tblClass.Active := false; 
end;

procedure TfrmPunish.tblPunishAfterScroll(DataSet: TDataSet);
begin
  ToggleMode;
end;

procedure TfrmPunish.dbnPunishClick(Sender: TObject; Button: TNavigateBtn);
begin
  ToggleMode;
end;

procedure TfrmPunish.ToggleMode;
  procedure EnableInput(Enabled: Boolean);
  begin
    dbgPunish.Enabled := not Enabled;
    dbeStudentID.Enabled := Enabled;
    dbeRecDate.Enabled := Enabled;
    dbrgPunish.Enabled := Enabled;
    dbmDesc.Enabled := Enabled;
  end;
begin
  case tblPunish.State of
    dsInsert, dsEdit:
      begin
        EnableInput(true);
        dbnPunish.VisibleButtons := [nbPost, nbCancel];
        dbeStudentID.SetFocus;
      end;
  else
    EnableInput(false);
    dbnPunish.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast,
      nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh];
  end;
end;

procedure TfrmPunish.tblPunishBeforeDelete(DataSet: TDataSet);
var
  strMsg: string;
begin
  strMsg := Format('确定要删除学生“%s”的处罚记录吗?'#13, [tblPunish['StudentID']]);
  strMsg := strMsg + Format('  姓名:%s'#13, [tblStudent['Name']]);
  strMsg := strMsg + Format('  时间:%s'#13, [tblPunish['RecDate']]);
  strMsg := strMsg + Format('  处罚:%s', [tblPunish['Punish']]);
  if MessageDlg(strMsg, mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
    Abort;
end;

procedure TfrmPunish.tblPunishBeforePost(DataSet: TDataSet);
begin
  if tblStudent.Eof then
  begin
    ShowMessage('学号输入错误,没有这个学生!');
    dbeStudentID.SetFocus;
    Abort;
  end;
  if dbeRecDate.Text  = '' then begin
    ShowMessage('请输入记录日期!');
    dbeRecDate.SetFocus;
    Abort;
  end;
  if dbrgPunish.Value  = '' then begin
    ShowMessage('请输入处罚种类!');
    dbrgPunish.SetFocus;
    Abort;
  end;

  dbmDesc.Text := Trim(dbmDesc.Text);
  dbmDesc.Text := StringReplace(dbmDesc.Text, '''', '', [rfReplaceAll]);
  dbmDesc.Text := StringReplace(dbmDesc.Text, ' ', '', [rfReplaceAll]);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -