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

📄 addnewfrm.pas

📁 一小的学生成绩管理系统,是学习DELPHI的好资料.
💻 PAS
字号:
unit AddNewFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB,IniFiles, Grids, ValEdit, DBTables, DBGrids,
  Buttons, ExtCtrls;

const
  iniFileName='user\DBDSCore.ini';
type
  TAddNewForm = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    CbAbsent: TComboBox;
    Label2: TLabel;
    EdtStuNo: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    dsQuery: TDataSource;
    Query1: TQuery;
    GroupBox2: TGroupBox;
    Label6: TLabel;
    DBGrid: TDBGrid;
    sbShortCut: TSpeedButton;
    Panel1: TPanel;
    Label7: TLabel;
    EdtStuName: TEdit;
    EdtGrade: TEdit;
    sbAdd: TSpeedButton;
    sbDelete: TSpeedButton;
    sbExit: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure sbExitClick(Sender: TObject);
    procedure sbShortCutClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbAddClick(Sender: TObject);
    procedure CbAbsentClick(Sender: TObject);
    procedure EdtStuNoExit(Sender: TObject);
    procedure sbDeleteClick(Sender: TObject);
    procedure DBGridColExit(Sender: TObject);
  private
    procedure SetEnable(State:boolean);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  AddNewForm: TAddNewForm;
  IsNewStu:Boolean;

implementation

uses ShorCutFrm, MainFrm, CharFrm;

{$R *.dfm}

procedure TAddNewForm.FormCreate(Sender: TObject);
var
  IniFile:TIniFile;
  FieldNum:integer;
begin

  IniFile:=TIniFile.Create(IniFileName);
  FieldNum:=IniFile.ReadInteger('DBStructure','FieldNum',10);
//  Label1.Caption:=IntToStr(FieldNum);
  IniFile.Free;
  IsNewStu:=False;
end;

procedure TAddNewForm.sbExitClick(Sender: TObject);
begin
  Close;
end;

procedure TAddNewForm.sbShortCutClick(Sender: TObject);
begin
  ShortCutForm:=TShortCutForm.Create(self);
  AddNewForm.Hide;
  ShortCutForm.Show;
end;

procedure TAddNewForm.SetEnable(State:boolean);
begin
  EdtStuno.Enabled:=not State;
  EdtStuName.Enabled:=State;
  EdtGrade.Enabled:=State;
  cbAbsent.Enabled:=State;
  sbShortCut.Enabled:=State;
  sbDelete.Enabled:=State;
  sbAdd.Enabled:=State;
end;

procedure TAddNewForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   if Query1.Modified then
     Query1.Cancel;
   if MainForm.Query1.Active then MainForm.Query1.Refresh;
   if MainForm.bbtnState.Caption='浏览数据' then
     MainForm.bbtnStateClick(Sender);
   MainForm.Show;
end;

procedure TAddNewForm.sbAddClick(Sender: TObject);
var
  i:integer;
  StrSQL:string;
begin

  if Trim(EdtStuName.Text)='' then
  begin
    ShowMessage('请输入姓名!');
    if isNewStu then
    begin
      EdtStuno.Enabled:=True;
      EdtStuno.SetFocus;
    end;
    exit;
  end;
try


    query1.FieldByName('姓名').AsString:=Trim(EdtStuName.Text);

    if cbAbsent.ItemIndex=0 then query1.FieldByName('缺考').AsBoolean:=False
    else begin
       query1.FieldByName('缺考').AsBoolean:=True;
       for i:=3 to Query1.FieldCount-1 do
          Query1.Fields[i].AsFloat:=0;
    end;
    query1.FieldByName('总成绩').AsFloat:=StrToFloat(EdtGrade.Text);

      query1.Post; 
except
  showmessage('数据输入有误!');
end;
  SetEnable(False);
  EdtStuno.SetFocus;
end;

procedure TAddNewForm.CbAbsentClick(Sender: TObject);
begin
   if cbAbsent.ItemIndex=0 then
   begin
     dbGrid.Enabled:=True;
     query1.FieldByName('缺考').AsBoolean:=False;
   end
   else begin
     dbGrid.Enabled:=False;
     query1.FieldByName('缺考').AsBoolean:=True;
   end;
end;

procedure TAddNewForm.EdtStuNoExit(Sender: TObject);
var
  Stuno,strSQL:string;
  i:integer;
begin

  if Trim(EdtStuno.Text)='' then exit;
  SetEnable(True);
  EdtStuName.Text:='';
  EdtGrade.Text:='0';
  Stuno:=trim(EdtStuno.Text);
  sbDelete.Enabled:=False;
  if length(Stuno)>0 then
  begin
  try
    query1.Close;
    query1.RequestLive:=True;
    strSQL:='Select * from StudentScore where 学号 ="'+Stuno+'"';
    query1.SQL.Text:=strSQL;
    DBGrid.DataSource:=dsQuery;
    query1.Open;
    if query1.RecordCount>0 then
    begin
      query1.First;
      query1.Edit;
      EdtStuName.Text:=query1.FieldValues['姓名'];
      EdtGrade.Text:=query1.FieldValues['总成绩'];
      if query1.FieldValues['缺考'] then
         cbAbsent.ItemIndex:=1
      else
         cbAbsent.ItemIndex:=0;
      sbDelete.Enabled:=True;
      IsNewStu:=False;
    end
    else begin //查无此人
      IsNewStu:=True;
      CbAbsent.ItemIndex:=0;
//      EdtStuName.SelectAll;
      EdtStuName.SetFocus;
      query1.Append;
      query1.FieldByName('学号').AsString:=stuno;
      query1.FieldByName('姓名').AsString:=stuno;
    end;
  except
  end;
  end;
end;


procedure TAddNewForm.sbDeleteClick(Sender: TObject);
begin
if id_yes=Application.MessageBox('真的要删除该学生成绩吗?',
                '确认信息',mb_YesNo) then exit;
try
  Query1.Close;
  Query1.SQL.Text:='Delete From StudentScore where 学号='+
     ''''+Trim(EdtStuno.Text)+'''';
  Query1.ExecSQL;
except
end;
   sbDelete.Enabled:=False;
   SetEnable(False);
   EdtStuno.SetFocus;
end;

procedure TAddNewForm.DBGridColExit(Sender: TObject);
var
  FieldMax:array [0..40] of integer;
begin
   MainForm.GetFieldMax(FieldMax);
   if DBGrid.SelectedField<>nil then
   with DBGrid.SelectedField do
   begin
     if asFloat>FieldMax[index] then
     begin
       Showmessage('输入数据大于该题分数上限!');
       asFloat:=FieldMax[index];
     end;
   end;
end;

end.

⌨️ 快捷键说明

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