📄 shorcutfrm.pas
字号:
unit ShorCutFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ValEdit, StdCtrls, Buttons, DB, DBTables;
type
TShortCutForm = class(TForm)
ScoreListEdt: TValueListEditor;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
GroupBox1: TGroupBox;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
procedure ScoreListEdtKeyPress(Sender: TObject; var Key: Char);
procedure ScoreListEdtValidate(Sender: TObject; ACol, ARow: Integer;
const KeyName, KeyValue: String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ShortCutForm: TShortCutForm;
implementation
uses AddNewFrm, MainFrm;
{$R *.dfm}
procedure TShortCutForm.FormCreate(Sender: TObject);
var
i,j:integer;
ScoreField:TField;
FieldName,FieldValue:string;
begin
{ for i:=1 to ScoreListEdt.RowCount-1 do
ScoreListEdt.DeleteRow(i);}
for i:=0 to AddNewForm.query1.FieldCount-1 do
begin
j:=AddNewForm.Query1.FieldList.IndexOf('第一题');
ScoreField:=AddNewForm.query1.Fields[i];
if (i>=j) and ScoreField.Visible then
begin
FieldName:=ScoreField.FieldName;
FieldValue:=ScoreField.AsString;
ScoreListEdt.InsertRow(FieldName,FieldValue,True);
end;
end;
end;
procedure TShortCutForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
AddNewForm.Show;
end;
procedure TShortCutForm.BitBtn1Click(Sender: TObject);
var
i,StuGrade:integer;
ScoreField:TField;
FieldName,FieldValue:string;
begin
try
StuGrade:=0;
for i:=1 to ScoreListEdt.RowCount-1 do
begin
{ FieldName:=ScoreListEdt.Cells[0,i];
FieldValue:=ScoreListEdt.Cells[1,i];
//与下面两条语句等价
}
FieldName:=ScoreListEdt.Keys[i];
FieldValue:=ScoreListEdt.Values[FieldName];
StuGrade:=StuGrade+StrToInt(FieldValue);
AddNewForm.query1.FieldByName(FieldName).AsString:=FieldValue;
end;
AddNewForm.EdtGrade.Text:=IntToStr(StuGrade);
Close;
except
showmessage('输入数据有误,不能增加!');
end;
end;
procedure TShortCutForm.ScoreListEdtKeyPress(Sender: TObject;
var Key: Char);
begin
if not (Key in ['0'..'9','.']) then
Key:=Char(0);
end;
procedure TShortCutForm.ScoreListEdtValidate(Sender: TObject; ACol,
ARow: Integer; const KeyName, KeyValue: String);
var
FieldValue:single;
FieldMax:array[0..40] of integer;
begin
MainForm.GetFieldMax(FieldMax);
try
FieldValue:=StrToFloat(KeyValue);
if FieldValue>FieldMax[ARow] then
begin
FieldValue:=FieldMax[ARow];
ShowMessage(Format('%s 得分超过该题分数上限 %d !',[KeyName,FieldMax[ARow]]));
end;
except
ShowMessage('数据错误,请重新输入!');
FieldValue:=0;
end;
ScoreListEdt.Cells[ACol,ARow]:=FloatToStr(FieldValue);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -