📄 u_xlkm.~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 + -