📄 addnewfrm.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 + -