📄 ksgl_p.pas
字号:
unit ksgl_p;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DB, DBClient, Grids, DBGridEh, Buttons, StdCtrls,
PrnDbgeh;
type
Tf_ksgl = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
cds: TClientDataSet;
DataSource1: TDataSource;
dbg: TDBGridEh;
cdstkbh: TIntegerField;
cdszkzh: TStringField;
cdssfzh: TStringField;
cdsxm: TStringField;
cdsxb: TSmallintField;
cdslxfs: TStringField;
cdslxdz: TStringField;
cdsxbmc: TStringField;
bt1: TSpeedButton;
bt2: TSpeedButton;
bt4: TSpeedButton;
bt3: TSpeedButton;
bt7: TSpeedButton;
bt6: TSpeedButton;
bt5: TSpeedButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
rb1: TRadioButton;
rb2: TRadioButton;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
bt8: TSpeedButton;
pdbg: TPrintDBGridEh;
cdsksbh: TIntegerField;
procedure readdata;
procedure enedit;
procedure unedit;
procedure cdsCalcFields(DataSet: TDataSet);
procedure bt7Click(Sender: TObject);
procedure bt8Click(Sender: TObject);
procedure cdsAfterScroll(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure bt1Click(Sender: TObject);
procedure bt2Click(Sender: TObject);
procedure bt3Click(Sender: TObject);
procedure bt4Click(Sender: TObject);
procedure bt6Click(Sender: TObject);
procedure bt5Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
sts:smallint;
vrt:olevariant;
sSql:string;
public
{ Public declarations }
end;
var
f_ksgl: Tf_ksgl;
implementation
uses dm_p, main_p, zkzgz_p;
{$R *.dfm}
procedure Tf_ksgl.readdata;
begin
sSql:='select * from k_ksmdb where tkbh='+inttostr(f_main.tkbh)+' order by ksbh';
dm.skc.AppServer.getdata(sSql,vrt);
cds.Active:=false;
cds.Data:=vrt;
end;
procedure Tf_ksgl.enedit;
begin
bt1.Enabled:=false;
bt2.Enabled:=false;
bt3.Enabled:=false;
bt4.Enabled:=false;
bt8.Enabled:=false;
dbg.Enabled:=false;
bt6.Enabled:=true;
bt5.Enabled:=true;
panel2.Enabled:=true;
edit1.SetFocus;
if sts=1 then
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
end;
end;
procedure Tf_ksgl.unedit;
begin
bt1.Enabled:=true;
bt2.Enabled:=true;
bt3.Enabled:=true;
bt4.Enabled:=true;
bt8.Enabled:=true;
dbg.Enabled:=true;
bt6.Enabled:=false;
bt5.Enabled:=false;
panel2.Enabled:=false;
sts:=0;
end;
procedure Tf_ksgl.cdsCalcFields(DataSet: TDataSet);
begin
if cds.FieldByName('xb').AsInteger=0 then
cds.FieldByName('xbmc').AsString:='男'
else cds.FieldByName('xbmc').AsString:='女';
end;
procedure Tf_ksgl.bt7Click(Sender: TObject);
begin
close;
end;
procedure Tf_ksgl.bt8Click(Sender: TObject);
var i,k,m,n,hmcd,zdcd:integer;//变量i、k、m和n、准考证号号码总长度、指定的前N位长度
s,zkzh:string; //前N位的值、准考证号
begin
if cds.IsEmpty then
begin
application.MessageBox('没有设置考生,无需自动生成准考证号!','错误信息',16);
exit;
end;
Application.CreateForm(Tf_zkzgz, f_zkzgz);
f_zkzgz.showmodal;
if f_zkzgz.Tag=1 then
begin
hmcd:=f_zkzgz.ws1.Value;
if f_zkzgz.chk1.Checked then i:=0 else
begin
i:=1;
zdcd:=f_zkzgz.ws2.Value;
s:=trim(f_zkzgz.Edit1.Text);
end;
end;
f_zkzgz.Free;
m:=1;
if i=1 then
begin
for n:=1 to (hmcd-zdcd) do m:=m*10;
end
else
begin
for n:=1 to hmcd do m:=m*10;
end;
if m<cds.RecordCount then
begin
application.MessageBox('考生人数超过可以自动生成的准考证数量,请重新设置生成规则!','错误信息',16);
exit;
end;
sts:=3;
cds.DisableControls;
try
n:=1;
cds.First;
while not cds.Eof do
begin
zkzh:=inttostr(n);
k:=length(zkzh);
if i=0 then //全自动生成
begin
for m:=k to hmcd-1 do
begin
zkzh:='0'+zkzh;
end;
end
else
begin
for m:=k to hmcd-zdcd-1 do zkzh:='0'+zkzh;
zkzh:=s+zkzh;
end;
cds.Edit;
cds.FieldByName('zkzh').AsString:=zkzh;
cds.Post;
dm.skc.AppServer.ExecSqls('update k_ksmdb set zkzh='''+zkzh+''' where tkbh='
+inttostr(f_main.tkbh)+' and ksbh='+cds.FieldByName('ksbh').AsString);
inc(n);
cds.Next;
end;
cds.EnableControls;
sts:=0;
cds.First;
except
on e:exception do
begin
application.MessageBox(pchar('数据处理失败!'+#13+#13+e.Message),'错误信息',16);
close;
end;
end;
end;
procedure Tf_ksgl.cdsAfterScroll(DataSet: TDataSet);
begin
if sts>0 then exit;
if cds.IsEmpty then
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
exit;
end;
edit1.Text:=cds.fieldbyname('zkzh').AsString;
edit2.Text:=cds.fieldbyname('xm').AsString;
edit3.Text:=cds.fieldbyname('sfzh').AsString;
edit4.Text:=cds.fieldbyname('lxfs').AsString;
edit5.Text:=cds.fieldbyname('lxdz').AsString;
rb1.Checked:=(cds.FieldByName('xb').AsInteger=0);
rb2.Checked:=not rb1.Checked;
end;
procedure Tf_ksgl.FormShow(Sender: TObject);
begin
unedit;
readdata;
end;
procedure Tf_ksgl.bt1Click(Sender: TObject);
begin
//添加
sts:=1;
enedit;
end;
procedure Tf_ksgl.bt2Click(Sender: TObject);
begin
//修改
sts:=2;
enedit;
end;
procedure Tf_ksgl.bt3Click(Sender: TObject);
begin
//删除
if cds.IsEmpty then exit;
if application.MessageBox('您确定要删除该考生吗?','确认信息',4+32)<>6 then exit;
try
dm.skc.AppServer.ExecSqls('delete from k_ksmdb where tkbh='+inttostr(f_main.tkbh)
+' and ksbh='+cds.FieldByName('ksbh').AsString);
cds.Delete;
except
on e:exception do
begin
application.MessageBox(pchar('数据处理失败!'+#13+#13+e.Message),'错误信息',16);
close;
end;
end;
end;
procedure Tf_ksgl.bt4Click(Sender: TObject);
begin
//打印
if cds.IsEmpty then exit;
sts:=3;
pdbg.Preview;
sts:=0;
cds.First;
end;
procedure Tf_ksgl.bt6Click(Sender: TObject);
begin
unedit;
cds.AfterScroll(cds);
end;
procedure Tf_ksgl.bt5Click(Sender: TObject);
var i:integer;
s:string;
begin
//存盘
if trim(edit2.Text)='' then
begin
application.MessageBox('请输入考生姓名!','提示信息',48);
edit2.SetFocus;
exit;
end;
if rb1.Checked then i:=0 else i:=1;
if sts=1 then
begin
dm.skc.AppServer.addksmd(f_main.tkbh,-1,trim(edit1.Text),trim(edit2.Text),i,
trim(edit3.Text),trim(edit4.Text),trim(edit5.Text),vrt);
end
else
begin
dm.skc.AppServer.addksmd(f_main.tkbh,cds.FieldByName('ksbh').AsInteger,trim(edit1.Text),
trim(edit2.Text),i,trim(edit3.Text),trim(edit4.Text),trim(edit5.Text),vrt);
end;
s:=vrt; //如果成功,vrt返回的是考生编号,如果失败,第一个字符是'-'。
if copy(s,1,1)='-' then//出错
begin
s:=copy(s,2,length(s)-1);
application.MessageBox(pchar(s),'错误信息',16);
exit;
end;
if sts=1 then
begin
cds.append;
cds.FieldByName('ksbh').AsInteger:=strtoint(s);
end
else
begin
cds.Edit;
end;
cds.FieldByName('zkzh').AsString:=trim(edit1.Text);
cds.FieldByName('xm').AsString:=trim(edit2.Text);
cds.FieldByName('sfzh').AsString:=trim(edit3.Text);
cds.FieldByName('lxfs').AsString:=trim(edit4.Text);
cds.FieldByName('lxdz').AsString:=trim(edit5.Text);
cds.FieldByName('xb').Asinteger:=i;
cds.Post;
unedit;
end;
procedure Tf_ksgl.FormDestroy(Sender: TObject);
begin
cds.Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -