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

📄 shorcutfrm.~pas

📁 一小的学生成绩管理系统,是学习DELPHI的好资料.
💻 ~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 + -