📄 people_unit.~pas
字号:
unit people_unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, DBGrids, ComCtrls, Mask,
DBCtrls, XPMenu, RXCtrls, DB, ADODB, ToolEdit, ExtDlgs;
type
Tpeople = class(Tform)
Image2: TImage;
Label1: TLabel;
Label18: TLabel;
BitBtn7: TBitBtn;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
XPMenu1: TXPMenu;
ADOTable1: TADOTable;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
Panel1: TPanel;
GroupBox2: TGroupBox;
RxLabel1: TRxLabel;
RxLabel2: TRxLabel;
RxLabel3: TRxLabel;
RxLabel4: TRxLabel;
RxLabel5: TRxLabel;
RxLabel6: TRxLabel;
RxLabel7: TRxLabel;
RxLabel8: TRxLabel;
RxLabel9: TRxLabel;
RxLabel10: TRxLabel;
RxLabel11: TRxLabel;
RxLabel12: TRxLabel;
RxLabel13: TRxLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit4: TEdit;
Edit3: TEdit;
Edit8: TEdit;
Edit5: TEdit;
ComboBox1: TComboBox;
Edit6: TEdit;
Edit7: TEdit;
Edit9: TEdit;
ComboBox2: TComboBox;
Edit10: TEdit;
Label3: TLabel;
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
ADOQuery3: TADOQuery;
ModisfyTable: TADOTable;
RxLabel14: TRxLabel;
ModiCount: TADOQuery;
Button1: TButton;
ADOTable2: TADOTable;
OpenPictureDialog1: TOpenPictureDialog;
Image1: TImage;
filenameedit1: TButton;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure onclose(Sender: TObject; var Action: TCloseAction);
procedure ShowFrm(Sender: TObject);
procedure onkeypress(Sender: TObject; var Key: Char);
procedure BitBtn7Click(Sender: TObject);
procedure CheckChange(Sender: TObject);
procedure CheckChange2(Sender: TObject);
procedure checkchange3(Sender: TObject);
procedure onchangeID(Sender: TObject);
procedure filenameedit1Click(Sender: TObject);
private
MaxNo:integer;
{ Private declarations }
public
{ Public declarations }
end;
var
people: Tpeople;
icount:string;
FieldsValues1,FieldsValues2:integer;
FieldsLimit:boolean;
implementation
uses MainDataModule, MainFormUnit;
{$R *.dfm}
function Max(const A, B: integer): integer;
begin
if A > B then
Result := A
else
Result := B;
end;
procedure Tpeople.FormCreate(Sender: TObject);
begin
inherited;
adotable1.TableName:='SystemParamTable';
adotable1.Active:=true;
FieldsValues1:=ADOTable1.Fieldbyname('首项目值一').asinteger;
FieldsValues2:=ADOTable1.Fieldbyname('首项目值二').asinteger;
FieldsLimit:=ADOTable1.Fieldbyname('首项目限值').asboolean;
adotable1.Active:=false;
adotable1.TableName:='FieldsNewName';
adotable1.Active:=true;
Rxlabel1.Caption:=ADOTable1.Fieldbyname('身份证号').asstring;
Rxlabel2.Caption:=ADOTable1.Fieldbyname('姓名').asstring;
Rxlabel4.Caption:=ADOTable1.Fieldbyname('民族').asstring;
Rxlabel5.Caption:=ADOTable1.Fieldbyname('户籍地址').asstring;
Rxlabel6.Caption:=ADOTable1.Fieldbyname('工作单位').asstring;
Rxlabel7.Caption:=ADOTable1.Fieldbyname('暂住地址').asstring;
Rxlabel8.Caption:=ADOTable1.Fieldbyname('暂住时间').asstring;
Rxlabel9.Caption:=ADOTable1.Fieldbyname('电话').asstring;
Rxlabel10.Caption:=ADOTable1.Fieldbyname('备注').asstring;
Rxlabel11.Caption:=ADOTable1.Fieldbyname('婚否').asstring;
Rxlabel12.Caption:=ADOTable1.Fieldbyname('附注').asstring;
Rxlabel13.Caption:=ADOTable1.Fieldbyname('照片').asstring;
ADOtable1.Active:=false;
end;
procedure Tpeople.BitBtn2Click(Sender: TObject);
begin
inherited;
close;
end;
procedure Tpeople.BitBtn1Click(Sender: TObject);
var
delstr:string;
begin
inherited;
//检查
if (edit1.Text='') or (edit2.text='') then
begin
messageBox(Handle,PChar('〖'+Rxlabel1.caption+'〗和〖'+Rxlabel2.Caption+'〗必须填写。'),'系统提示',MB_ok+MB_ICONWARNING);
exit;
end;
if FieldsLimit then
begin
if (length(edit1.text)<>FieldsValues1) and (length(edit1.text)<>FieldsValues2) then
begin
messageBox(Handle,PChar(Format('请确认〖'+Rxlabel1.caption+'〗必须为%D或%D位',[FieldsValues1,FieldsValues2])),'系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
exit;
end;
end;
//增加
if checkbox1.Checked then
begin
ADOQuery1.Close;
ADOQuery1.sql.Clear;
ADOQuery1.sql.Add('select 身份证号 from MainDataTable where 身份证号='''+edit1.text+'''');
ADOQuery1.Open;
if ADOQuery1.RecordCount>0 then
begin
messageBox(Handle,PChar('项目〖'+Rxlabel1.Caption+'〗的值〖'+edit1.text+'〗已经存在于数据库中!'),'系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
exit;
end;
//检查编号
with ModiCount do
begin
close;
sql.Clear;
sql.Add('select 编号 from MainDataTable');
open;
while not Eof do
begin
MaxNo:=Max(MaxNo,Fields[0].Asinteger);
Next;
end;
end;
modicount.Close;
//开始添加记录
try
if ADOtable1.Active then ADOtable1.Active:=false;
ADOtable1.TableName:='MainDataTable';
ADOtable1.Active:=true;
ADOtable1.Append;
ADOtable1.Fieldvalues['编号']:=MaxNo+1;
ADOtable1.Fieldvalues['身份证号']:=edit1.text;
ADOtable1.Fieldvalues['姓名']:=edit2.text;
ADOtable1.Fieldvalues['性别']:=combobox1.text;
ADOtable1.Fieldvalues['民族']:=edit3.text;
ADOtable1.Fieldvalues['婚否']:=combobox2.text;
ADOtable1.Fieldvalues['户籍地址']:=edit4.text;
ADOtable1.Fieldvalues['工作单位']:=edit5.text;
ADOtable1.Fieldvalues['暂住地址']:=edit6.text;
ADOtable1.Fieldvalues['暂住时间']:=edit7.text;
ADOtable1.Fieldvalues['电话']:=edit8.text;
ADOtable1.Fieldvalues['备注']:=edit9.text;
ADOtable1.Fieldvalues['附注']:=edit10.text;
//ADOtable1.Fieldvalues['照片']:=filenameedit1.text;
ADOtable1.post;
except
messageBox(Handle,'更新数据失败,请重新启动程序!','系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
exit;
end;
ADOQuery1.Close;
ADOTable1.Active:=false;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
edit8.Text:='';
edit9.Text:='';
edit10.Text:='';
//filenameedit1.Text:='';
combobox1.ItemIndex:=-1;
combobox2.ItemIndex:=-1;
end;
//修改
if checkbox2.Checked then
begin
try
cursor:=crhourglass;
if ModisfyTable.Active then ModisfyTable.Active:=false;
ModisfyTable.TableName:='MainDataTable';
ModisfyTable.Active:=true;
with ModisfyTable do
begin
if locate('身份证号',edit1.text,[]) then
begin
edit;
Fieldvalues['身份证号']:=edit1.text;
Fieldvalues['姓名']:=edit2.text;
Fieldvalues['性别']:=combobox1.text;
Fieldvalues['民族']:=edit3.text;
Fieldvalues['婚否']:=combobox2.text;
Fieldvalues['户籍地址']:=edit4.text;
Fieldvalues['工作单位']:=edit5.text;
Fieldvalues['暂住地址']:=edit6.text;
Fieldvalues['暂住时间']:=edit7.text;
Fieldvalues['电话']:=edit8.text;
Fieldvalues['备注']:=edit9.text;
Fieldvalues['附注']:=edit10.text;
// Fieldvalues['照片']:=filenameedit1.text;
post;
refresh;
end;
end;
ModisfyTable.active:=false;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
edit8.Text:='';
edit9.Text:='';
edit10.Text:='';
// filenameedit1.Text:='';
combobox1.ItemIndex:=-1;
combobox2.ItemIndex:=-1;
cursor:=crdefault;
messageBox(Handle,'修改记录成功!','系统提示',MB_ok+MB_ICONinformation);
exit;
except
messageBox(Handle,'非法操作:更新数据失败!!','系统提示',MB_ok+MB_ICONWARNING);
application.Terminate;
end;
end;
//删除
if checkbox3.Checked then
begin
try
if ModisfyTable.Active then ModisfyTable.Active:=false;
ModisfyTable.TableName:='MainDataTable';
ModisfyTable.Active:=true;
with ModisfyTable do
begin
if locate('身份证号',edit1.text,[]) then
begin
delstr:=format('删除记录会造成编号断缺,这样的话你必须手动去插入一条相同编号的记录才能保证编号连续。确定删除〖'+Rxlabel1.Caption+'〗为[%S]的记录吗?',[ModisfyTable.Fields[2].AsString]);
if MessageBox(Handle,PChar(delStr),'警告',MB_YESNO or MB_ICONWARNING)=IDyes then
begin
delete;
ModisfyTable.Active:=false;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
edit8.Text:='';
edit9.Text:='';
edit10.Text:='';
// filenameedit1.Text:='';
combobox1.ItemIndex:=-1;
combobox2.ItemIndex:=-1;
messageBox(Handle,'你已经成功地删除了该记录!','系统提示',MB_ok+MB_ICONWARNING);
exit;
end;
end;
end;
except
messageBox(Handle,'非法操作:更新数据失败!!','系统提示',MB_ok+MB_ICONWARNING);
application.Terminate;
end;
end;
end;
procedure Tpeople.onclose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
mainform.StatusBar1.panels[1].text:='';
end;
procedure Tpeople.ShowFrm(Sender: TObject);
begin
try
ADOQuery2.Close;
ADOQuery2.sql.clear;
ADOQuery2.sql.add('select * from FieldsSelect');
ADOQuery2.open;
except
messageBox(Handle,'非法操作:数据库读取错误!','系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
application.Terminate;
end;
Rxlabel3.visible:=ADOQuery2.Fields[0].asboolean;
combobox1.Visible:=ADOQuery2.Fields[0].asboolean;
Rxlabel4.Visible:=ADOQuery2.Fields[1].asboolean;
edit3.Visible:=ADOQuery2.Fields[1].asboolean;
Rxlabel5.Visible:=ADOQuery2.Fields[2].asboolean;
edit4.Visible:=ADOQuery2.Fields[2].asboolean;
Rxlabel6.Visible:=ADOQuery2.Fields[3].asboolean;
edit5.Visible:=ADOQuery2.Fields[3].asboolean;
Rxlabel11.visible:=ADOQuery2.Fields[4].asboolean;
combobox2.Visible:=ADOQuery2.Fields[4].asboolean;
Rxlabel7.Visible:=ADOQuery2.Fields[5].asboolean;
edit8.Visible:=ADOQuery2.Fields[5].asboolean;
Rxlabel8.Visible:=ADOQuery2.Fields[6].asboolean;
edit7.Visible:=ADOQuery2.Fields[6].asboolean;
Rxlabel9.Visible:=ADOQuery2.Fields[7].asboolean;
edit8.Visible:=ADOQuery2.Fields[7].asboolean;
Rxlabel10.Visible:=ADOQuery2.Fields[10].asboolean;
edit9.Visible:=ADOQuery2.Fields[10].asboolean;
Rxlabel12.Visible:=ADOQuery2.Fields[8].asboolean;
edit10.Visible:=ADOQuery2.Fields[8].asboolean;
Rxlabel13.Visible:=ADOQuery2.Fields[9].asboolean;
filenameedit1.Visible:=ADOQuery2.Fields[9].asboolean;
ADOQuery2.sql.clear;
adoquery2.Close;
//判断
if checkbox1.Checked then mainform.StatusBar1.panels[1].text:='目前是增加记录操作!';
end;
procedure Tpeople.onkeypress(Sender: TObject; var Key: Char);
begin
if key=#13 then { 判断是按执行键}
perform(WM_NEXTDLGCTL,0,0); {移动到下一个控件}
end;
procedure Tpeople.BitBtn7Click(Sender: TObject);
begin
gethelp;
end;
procedure Tpeople.CheckChange(Sender: TObject);
begin
if checkbox1.Checked then
begin
checkbox2.Checked:=false;
checkbox3.Checked:=false;
mainform.StatusBar1.panels[1].text:='目前是增加记录操作!';
label3.caption:='下拉选单项目不能被修改!〖'+Rxlabel1.Caption+'〗和〖'+Rxlabel2.Caption+'〗必须填写!';
end;
end;
procedure Tpeople.CheckChange2(Sender: TObject);
begin
if checkbox2.Checked then
begin
checkbox1.Checked:=false;
checkbox3.Checked:=false;
mainform.StatusBar1.panels[1].text:='目前是修改记录操作!';
label3.caption:='〖'+rxlabel1.Caption+'〗不可修改,输入〖'+rxlabel1.Caption+'〗系统会自动查找其他相应资料!';
end;
end;
procedure Tpeople.checkchange3(Sender: TObject);
begin
if checkbox3.Checked=true then
begin
checkbox1.Checked:=false;
checkbox2.Checked:=false;
mainform.StatusBar1.panels[1].text:='目前是删除记录操作!';
label3.caption:='注:删除数据会造成编号断缺,需要在数据表中手工插入相应编号记录!';
end;
end;
procedure Tpeople.onchangeID(Sender: TObject);
begin
if not checkbox1.Checked then
begin
with adoquery3 do
begin
close;
sql.clear;
sql.add('select * from MainDataTable where 身份证号='''+edit1.text+'''');
try
open;
except
messageBox(Handle,'非法操作:数据库读取错误!','系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
application.Terminate;
end;
edit2.Text:=fields[3].asstring;
combobox1.Text:=fields[4].asstring;
edit3.Text:=fields[5].asstring;
edit4.Text:=fields[6].asstring;
edit5.Text:=fields[7].asstring;
combobox2.Text:=fields[8].asstring;
edit6.Text:=fields[9].asstring;
edit7.Text:=fields[10].asstring;
edit8.Text:=fields[11].asstring;
edit9.Text:=fields[14].asstring;
edit10.Text:=fields[12].asstring;
// filenameedit1.Text:=fields[13].asstring;
sql.Clear;
end;
adoquery3.Close;
end;
end;
procedure Tpeople.filenameedit1Click(Sender: TObject);
begin
openpicturedialog1.execute;
image1.picture.loadfromfile(openpicturedialog1.filename);
{var
graphic1:Timage;
begin
graphic1:=Timage.Create(self);
graphic1.picture.loadfromfile(openpicturedialog1.filename);
adotable2.TableName:='maindatatable';
adotable2.open;
adotable2.edit;
adotable2.fieldbyname('照片').assign(graphic1.Picture);
adotable2.post;
adotable2.close;
graphic1.free;
end;}
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -