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

📄 u_xlkm.~pas

📁 试卷管理系统
💻 ~PAS
字号:
unit U_xlkm;

interface

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

type
  Tfrm_xlkm = class(TForm)
    DBGrid1: TDBGrid;
    GroupBox2: TGroupBox;
    tbl_xlkm: TTable;
    DataSource1: TDataSource;
    tbl_zy: TTable;
    tbl_gwlb: TTable;
    tbl_gwzl: TTable;
    tbl_khdx: TTable;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    combo_zy: TComboBox;
    combo_gwlb: TComboBox;
    Label4: TLabel;
    combo_gwzl: TComboBox;
    Label5: TLabel;
    combo_khdx: TComboBox;
    tbl_xlkmKMMC: TStringField;
    tbl_xlkmZYXH: TSmallintField;
    tbl_xlkmGWLBXH: TSmallintField;
    tbl_xlkmGWZLXH: TSmallintField;
    tbl_xlkmKMXH: TSmallintField;
    tbl_xlkmKHDXXH: TSmallintField;
    Query1: TQuery;
    btn_insert: TButton;
    btn_delete: TButton;
    btn_edit: TButton;
    btn_save: TButton;
    btn_cancel: TButton;
    Label6: TLabel;
    edt_xlsj: TEdit;
    Label7: TLabel;
    edt_tj: TEdit;
    Label8: TLabel;
    Label10: TLabel;
    Memo1: TMemo;
    Label11: TLabel;
    Memo2: TMemo;
    tbl_xlkmTJ: TStringField;
    tbl_xlkmBZ: TMemoField;
    tbl_xlkmKH: TMemoField;
    btn_nr: TButton;
    BitBtn2: TBitBtn;
    tbl_xlkmnr: TTable;
    CheckBox1: TCheckBox;
    tbl_xlkmIFXUANXUN: TBooleanField;
    tbl_xlkmXLSJ: TFloatField;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure combo_zyChange(Sender: TObject);
    procedure combo_gwlbChange(Sender: TObject);
    procedure combo_gwzlChange(Sender: TObject);
    procedure combo_khdxChange(Sender: TObject);
    procedure btn_closeClick(Sender: TObject);
    procedure btn_insertClick(Sender: TObject);
    procedure btn_deleteClick(Sender: TObject);
    procedure tbl_xlkmAfterScroll(DataSet: TDataSet);
    procedure btn_saveClick(Sender: TObject);
    procedure btn_cancelClick(Sender: TObject);
    procedure btn_editClick(Sender: TObject);
    procedure btn_nrClick(Sender: TObject);
  private
    { Private declarations }
    xh:integer;
    appending:boolean;
  public
    { Public declarations }
  end;

var
  frm_xlkm: Tfrm_xlkm;

implementation
uses U_kmnr;
{$R *.dfm}

procedure Tfrm_xlkm.FormCreate(Sender: TObject);
begin
  tbl_zy.First;
  while not tbl_zy.Eof do
  begin
    combo_zy.Items.AddObject(tbl_zy.FieldByName('zymc').AsString,TObject(tbl_zy.FieldByName('zyxh').AsInteger));
    tbl_zy.Next;
  end;
  if combo_zy.Items.Count<>0 then
    combo_zy.ItemIndex:=0
  else
    exit;
  combo_zyChange(self);
end;

procedure Tfrm_xlkm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  tbl_khdx.Close;
  tbl_gwzl.Close;
  tbl_gwlb.Close;
  tbl_xlkm.Close;
  tbl_zy.Close;
end;

procedure Tfrm_xlkm.combo_zyChange(Sender: TObject);
begin
  combo_gwlb.Items.Clear;
  tbl_gwlb.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]));
  tbl_gwlb.First;
  while not tbl_gwlb.Eof do
  begin
    combo_gwlb.Items.AddObject(tbl_gwlb.FieldByName('gwlbmc').AsString,TObject(tbl_gwlb.FieldByName('gwlbxh').AsInteger));
    tbl_gwlb.Next;
  end;

  if combo_gwlb.Items.Count<>0 then
    combo_gwlb.ItemIndex:=0;

  combo_gwlbChange(self);

end;

procedure Tfrm_xlkm.combo_gwlbChange(Sender: TObject);
begin
  combo_gwzl.Items.Clear;

  if combo_gwlb.Items.Count<>0 then
    tbl_gwzl.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]))+' and gwlbxh='+inttostr(Integer(combo_gwlb.Items.Objects[combo_gwlb.ItemIndex]))
  else
    tbl_gwzl.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]));

  tbl_gwzl.First;
  while not tbl_gwzl.Eof do
  begin
    combo_gwzl.Items.AddObject(tbl_gwzl.FieldByName('gwzlmc').AsString,TObject(tbl_gwzl.FieldByName('gwzlxh').AsInteger));
    tbl_gwzl.Next;
  end;

  if combo_gwzl.Items.Count<>0 then
    combo_gwzl.ItemIndex:=0
  else
  begin
    if combo_gwlb.Items.Count<>0 then
      tbl_xlkm.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]))+' and gwlbxh='+inttostr(Integer(combo_gwlb.Items.Objects[combo_gwlb.ItemIndex]))
    else
      tbl_xlkm.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]));
    combo_khdx.Items.Clear;
    exit;
  end;

   combo_gwzlChange(self);
end;

procedure Tfrm_xlkm.combo_gwzlChange(Sender: TObject);
begin
  combo_khdx.Items.Clear;

  if combo_gwlb.Items.Count<>0 then
    tbl_khdx.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]))+' and gwlbxh='+inttostr(Integer(combo_gwlb.Items.Objects[combo_gwlb.ItemIndex]))+' and gwzlxh='+inttostr(Integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex]))
  else
    tbl_khdx.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]))+' and gwzlxh='+inttostr(Integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex]));

  tbl_khdx.First;
  while not tbl_khdx.Eof do
  begin
    combo_khdx.Items.AddObject(tbl_khdx.FieldByName('khdxmc').AsString,TObject(tbl_khdx.FieldByName('khdxxh').AsInteger));
    tbl_khdx.Next;
  end;

  if combo_khdx.Items.Count<>0 then
    combo_khdx.ItemIndex:=0
  else
    exit;

  combo_khdxChange(self);
end;

procedure Tfrm_xlkm.combo_khdxChange(Sender: TObject);
begin
  if combo_gwlb.Items.Count<>0 then
    tbl_xlkm.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]))+' and gwlbxh='+inttostr(Integer(combo_gwlb.Items.Objects[combo_gwlb.ItemIndex]))+' and gwzlxh='+inttostr(Integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex]))
                    +' and khdxxh='+ inttostr(Integer(combo_khdx.Items.Objects[combo_khdx.ItemIndex]))
  else
    tbl_xlkm.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]))+' and gwzlxh='+inttostr(Integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex]))
                    +' and khdxxh='+ inttostr(Integer(combo_khdx.Items.Objects[combo_khdx.ItemIndex])) ;


  if combo_khdx.Items.Count<>0 then
    tbl_xlkm.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]))+' and gwlbxh='+inttostr(Integer(combo_gwlb.Items.Objects[combo_gwlb.ItemIndex]))+' and gwzlxh='+inttostr(Integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex]))
                    +' and khdxxh='+ inttostr(Integer(combo_khdx.Items.Objects[combo_khdx.ItemIndex]))
  else
    tbl_xlkm.Filter:='zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]))+' and gwzlxh='+inttostr(Integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex]));
end;

procedure Tfrm_xlkm.btn_closeClick(Sender: TObject);
begin
  close;
end;

procedure Tfrm_xlkm.btn_insertClick(Sender: TObject);
var
  n,max,i:integer;
begin

  tbl_xlkm.DisableControls;

  n:=tbl_xlkm.RecordCount;
  max:=0;
  tbl_xlkm.First;
  while not tbl_xlkm.Eof do
  begin
    if max<tbl_xlkm.fieldbyname('kmxh').AsInteger then max:=tbl_xlkm.fieldbyname('kmxh').AsInteger;
    tbl_xlkm.Next;
  end;

  xh:=1;
  if n<max then
  begin
    for i:=1 to max do
    begin
      if not tbl_xlkm.Locate('kmxh',i,[]) then
      begin
        xh:=i;
        break;
      end;
    end;
  end
  else
    xh:=n+1;

  appending:=true;

  tbl_xlkm.Append;

  tbl_xlkm.EnableControls;
  btn_insert.Enabled:=false;

  btn_save.Enabled:=true;
  btn_cancel.Enabled:=true;
  Edit1.SetFocus;

end;

procedure Tfrm_xlkm.btn_deleteClick(Sender: TObject);
var
  s:string;
begin
  if tbl_xlkm.RecordCount=0 then exit;
  s:='delete from xlkmnr where zyxh='
     +inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]));

  if combo_gwlb.Items.Count<>0 then
    s:=s+' and gwlbxh='+inttostr(Integer(combo_gwlb.Items.Objects[combo_gwlb.ItemIndex]))
  else
    s:=s+' and gwlbxh=0';

  if combo_gwzl.Items.Count<>0 then
    s:=s+' and gwzlxh='+inttostr(Integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex]))
  else
    s:=s+' and gwzlxh=0';

  if combo_khdx.Items.Count<>0 then
    s:=s+' and khdxxh='+inttostr(Integer(combo_khdx.Items.Objects[combo_khdx.ItemIndex]))
  else
    s:=s+' and khdxxh=0';

  s:=s+' and kmxh='+inttostr(tbl_xlkm.FieldByName('kmxh').AsInteger);

  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add(s);
  Query1.ExecSQL;

  tbl_xlkm.Delete;

end;

procedure Tfrm_xlkm.tbl_xlkmAfterScroll(DataSet: TDataSet);
begin
  if tbl_xlkm.RecordCount=0 then
  begin
    Edit1.Text:='';
    edt_xlsj.Text:='1';
    edt_tj.Text:='';
    CheckBox1.Checked:=false;
    Memo1.Lines.Clear;
    Memo2.Lines.Clear;
    exit;
  end;

  if appending then exit;

  Edit1.Text:=tbl_xlkm.fieldbyname('kmmc').AsString;
  edt_xlsj.Text:=tbl_xlkm.fieldbyname('xlsj').AsString;
  edt_tj.Text:= tbl_xlkm.fieldbyname('tj').AsString;

  Memo1.Lines.Text:=tbl_xlkm.fieldbyname('bz').AsString;
  Memo2.Lines.Text:=tbl_xlkm.fieldbyname('kh').AsString;
  CheckBox1.Checked:=tbl_xlkm.fieldbyname('ifxuanxun').AsBoolean;
end;

procedure Tfrm_xlkm.btn_saveClick(Sender: TObject);
var
  s:string;
  lg:integer;
begin

  tbl_xlkm.DisableControls;

  s:=trim(Edit1.Text);
  lg:=length(s);
  if lg=0 then
  begin
    MessageBox(0,'课目名称不能为空!','训练课目',MB_OK+MB_ICONSTOP);
    tbl_xlkm.EnableControls;
    Edit1.SetFocus;
    exit;
  end
  else
  if lg>60 then
  begin
    MessageBox(0,'课目名称不能超过30个汉字!','训练课目',MB_OK+MB_ICONSTOP);
    tbl_xlkm.EnableControls;
    Edit1.SetFocus;
    exit;
  end;

  if appending then
  begin
    if tbl_xlkm.Locate('kmmc',s,[loCaseInsensitive]) then
    begin
      MessageBox(0,'课目名称重复!','训练课目',MB_OK+MB_ICONSTOP);
      tbl_xlkm.EnableControls;
      Edit1.SetFocus;
      exit;
    end;
    tbl_xlkm.Append;
    appending:=false;
    tbl_xlkm.FieldByName('kmxh').AsInteger:=xh;
  end
  else
     tbl_xlkm.Edit;

  tbl_xlkm.FieldByName('kmmc').AsString:=s;
  tbl_xlkm.FieldByName('zyxh').AsInteger:=integer(combo_zy.Items.Objects[combo_zy.ItemIndex]);

  if combo_gwlb.Items.Count<>0 then
    tbl_xlkm.FieldByName('gwlbxh').AsInteger:=integer(combo_gwlb.Items.Objects[combo_gwlb.ItemIndex])
  else
    tbl_xlkm.FieldByName('gwlbxh').AsInteger:=0;


  if combo_gwzl.Items.Count<>0 then
    tbl_xlkm.FieldByName('gwzlxh').AsInteger:=integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex])
  else
    tbl_xlkm.FieldByName('gwzlxh').AsInteger:=0;

  if combo_khdx.Items.Count<>0 then
    tbl_xlkm.FieldByName('khdxxh').AsInteger:=integer(combo_khdx.Items.Objects[combo_khdx.ItemIndex])
  else
    tbl_xlkm.FieldByName('khdxxh').AsInteger:=0;

  tbl_xlkm.FieldByName('xlsj').AsFloat:=strtofloat(edt_xlsj.Text);
  tbl_xlkm.FieldByName('tj').AsString:=edt_tj.Text;
  tbl_xlkm.FieldByName('bz').AsString:=memo1.Lines.Text;
  tbl_xlkm.FieldByName('kh').AsString:=memo2.Lines.Text;
  tbl_xlkm.fieldbyname('ifxuanxun').AsBoolean:=CheckBox1.Checked;
  tbl_xlkm.Post;

  btn_insert.Enabled:=true;
  btn_edit.Enabled:=true;
  btn_save.Enabled:=false;
  btn_cancel.Enabled:=false;

  tbl_xlkm.EnableControls;
  tbl_xlkmAfterScroll(tbl_xlkm);
end;

procedure Tfrm_xlkm.btn_cancelClick(Sender: TObject);
var
  s:string;
begin
  tbl_xlkm.Cancel;
  btn_insert.Enabled:=true;
  btn_edit.Enabled:=true;
  btn_save.Enabled:=false;
  btn_cancel.Enabled:=false;

  if appending then
  begin
    s:='delete from xlkmnr where zyxh='
       +inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]));

    if combo_gwlb.Items.Count<>0 then
      s:=s+' and gwlbxh='+inttostr(Integer(combo_gwlb.Items.Objects[combo_gwlb.ItemIndex]))
    else
      s:=s+' and gwlbxh=0';

    if combo_gwzl.Items.Count<>0 then
      s:=s+' and gwzlxh='+inttostr(Integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex]))
    else
      s:=s+' and gwzlxh=0';

    if combo_khdx.Items.Count<>0 then
      s:=s+' and khdxxh='+inttostr(Integer(combo_khdx.Items.Objects[combo_khdx.ItemIndex]))
    else
      s:=s+' and khdxxh=0';

    s:=s+' and kmxh='+inttostr(xh);

    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add(s);
    Query1.ExecSQL;

  end;
  appending:=false;
  tbl_xlkmAfterScroll(tbl_xlkm);
end;

procedure Tfrm_xlkm.btn_editClick(Sender: TObject);
begin
  if tbl_xlkm.RecordCount=0 then exit;

  btn_edit.Enabled:=false;

  btn_save.Enabled:=true;
  btn_cancel.Enabled:=true;
  tbl_xlkm.Edit;
  Edit1.SetFocus;
end;

procedure Tfrm_xlkm.btn_nrClick(Sender: TObject);
var
  form:Tfrm_kmnr;
begin
  if tbl_xlkm.RecordCount=0 then exit;

  form:=Tfrm_kmnr.Create(nil);

  form.zyxh:=Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]);

  if combo_gwlb.Items.Count<>0 then
    form.gwlbxh:=Integer(combo_gwlb.Items.Objects[combo_gwlb.ItemIndex])
  else
    form.gwlbxh:=0;

  if combo_gwzl.Items.Count<>0 then
    form.gwzlxh:=Integer(combo_gwzl.Items.Objects[combo_gwzl.ItemIndex])
  else
    form.gwzlxh:=0;

  if combo_khdx.Items.Count<>0 then
    form.khdxxh:=Integer(combo_khdx.Items.Objects[combo_khdx.ItemIndex])
  else
    form.khdxxh:=0;

  if appending then
    form.kmxh:=xh
  else
    form.kmxh:=tbl_xlkm.FieldByName('kmxh').AsInteger;

  form.ShowModal;
  form.Free;
end;

end.

⌨️ 快捷键说明

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