📄 unithouse.pas
字号:
unit UnitHouse;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, ImgList, ComCtrls, Buttons, DB, ADODB,
ExtCtrls;
type
TfrmHouse = class(TForm)
GroupBox1: TGroupBox;
DBGrid1: TDBGrid;
pclHouse: TPageControl;
TabSheet1: TTabSheet;
GroupBox2: TGroupBox;
Label1: TLabel;
edtCId: TEdit;
Label2: TLabel;
edtHId: TEdit;
Label3: TLabel;
edtHname: TEdit;
Label4: TLabel;
edtHouseholder: TEdit;
Label5: TLabel;
edtHAddress: TEdit;
Label6: TLabel;
edtHphone: TEdit;
Label7: TLabel;
edtHtelephone: TEdit;
Label9: TLabel;
memHouse: TMemo;
adoHouse: TADOQuery;
DataSource1: TDataSource;
adoHouseHId: TWideStringField;
adoHouseCId: TWideStringField;
adoHouseHname: TWideStringField;
adoHouseHAddress: TWideStringField;
adoHouseHphone: TWideStringField;
adoHouseHtelephone: TWideStringField;
adoHouseHouseholder: TWideStringField;
adoHouseHUserWC: TWideStringField;
adoHouseHmemo: TWideStringField;
ADOHouseConn: TADOConnection;
Panel1: TPanel;
bbtnAdd: TBitBtn;
bbtnModify: TBitBtn;
bbtnDel: TBitBtn;
bbtnSave: TBitBtn;
bbtnCancel: TBitBtn;
bbtnExit: TBitBtn;
ADOTable1: TADOTable;
procedure bbtnAddClick(Sender: TObject);
procedure bbtnModifyClick(Sender: TObject);
procedure bbtnCancelClick(Sender: TObject);
procedure bbtnExitClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure bbtnSaveClick(Sender: TObject);
procedure adoHouseAfterScroll(DataSet: TDataSet);
procedure bbtnDelClick(Sender: TObject);
procedure bbtngotoClick(Sender: TObject);
private
{ Private declarations }
procedure ButtonState(btag : integer); //按钮状态
procedure showlist; //列表显示
procedure iniData; //初始化combox下拉列表
public
{ Public declarations }
end;
var
frmHouse: TfrmHouse;
iflag : integer; //记录操作,如添加,iflag=1;修改,iflag=2
strHID : string; //家庭编号
strMsg : string;
strsql : string;
strSearch : string; //查询条件
const DOADD = 1;
const DOMODIFY = 2;
const DOCANCEL = 3;
const DOSHOW = 4;
implementation
uses unitADOconn;
{$R *.dfm}
{
*************************************************************************************
函数名称:按钮状态
功能描述:要求在增加状态后,只有保存,取消可以操作,别的按钮不可操作。修改、删除状态也一样。
输入参数:btag,添加,btag=1;修改,btag=2
输出参数:
返回 值: 无
说 明:
*************************************************************************************
}
procedure TfrmHouse.ButtonState(btag : integer);
begin
case btag of
1 : //添加时按钮状态
begin
bbtnModify.Enabled := false;
bbtnSave.Enabled := true;
bbtnCancel.Enabled := true;
bbtnDel.Enabled := false;
end;
2: //修改
begin
bbtnAdd.Enabled := false;
bbtnSave.Enabled := true;
bbtnCancel.Enabled := true;
bbtnDel.Enabled := false;
end;
3: //取消
begin
bbtnadd.Enabled := true;
bbtnModify.Enabled := true;
bbtnDel.Enabled := true;
bbtnSave.Enabled := false;
end;
4: //显示状态
begin
bbtnadd.Enabled := true;
bbtnModify.Enabled := true;
bbtnDel.Enabled := true;
bbtnSave.Enabled := false;
end
else
exit;
end;
end;
procedure TfrmHouse.bbtnAddClick(Sender: TObject);
begin
iflag := DOADD;
buttonState(DOADD);
edtHId.SetFocus;
edtHId.ReadOnly := false;
edtHname.ReadOnly := false;
edtHouseholder.ReadOnly := false;
edtHAddress.ReadOnly := false;
edtHphone.ReadOnly := false;
edtHtelephone.ReadOnly := false;
memhouse.ReadOnly := false;
edtHId.Text := '';
edtHname.Text := '';
edtHouseholder.Text := '';
edtHAddress.Text := '';
edtHphone.Text := '';
edtHtelephone.Text := '';
memHouse.Text := '';
end;
procedure TfrmHouse.bbtnModifyClick(Sender: TObject);
begin
iflag := DOMODIFY;
ButtonState(DOMODIFY);
edtHname.ReadOnly := false;
edtHouseholder.ReadOnly := false;
edtHAddress.ReadOnly := false;
edtHphone.ReadOnly := false;
edtHtelephone.ReadOnly := false;
memhouse.ReadOnly := false;
edtHname.SetFocus;
end;
procedure TfrmHouse.bbtnCancelClick(Sender: TObject);
begin
ButtonState(DOCANCEL);
if iflag=1 then
begin
edtHId.Text := adoHouse.fieldbyname('HId').AsString;
edtHname.Text := adoHouse.fieldbyname('Hname').AsString;
edtHouseholder.Text := adoHouse.fieldbyname('Householder').AsString;
edtHAddress.Text := adoHouse.fieldbyname('HAddress').AsString;
edtHphone.Text := adoHouse.fieldbyname('Hphone').AsString;
edtHtelephone.Text := adoHouse.fieldbyname('Htelephone').AsString;
memHouse.Text := adoHouse.fieldbyname('Hmemo').AsString;
iflag := 0;
end;
if iflag=2 then
begin
adopub.Close;
adopub.SQL.Text := 'select * from THouse where HId='''+edtHId.Text+'''';
adopub.Open;
edtHname.Text := adopub.fieldbyname('Hname').AsString;
edtHouseholder.Text := adopub.fieldbyname('Householder').AsString;
edtHAddress.Text := adopub.fieldbyname('HAddress').AsString;
edtHphone.Text := adopub.fieldbyname('Hphone').AsString;
edtHtelephone.Text := adopub.fieldbyname('Htelephone').AsString;
memHouse.Text := adopub.fieldbyname('Hmemo').AsString;
adopub.Close;
iflag := 0;
end;
end;
procedure TfrmHouse.bbtnExitClick(Sender: TObject);
begin
close;
end;
{
*************************************************************************************
函数名称:显示DBGrid列表
功能描述:将THouse表中的数据在DBGrid列表中显示出来
输入参数: 无
输出参数: 无
返回 值: 无
说 明: 添加、修改、删除操作要调用该函数以达到显示更新后的数据显示目的
*************************************************************************************
}
procedure TfrmHouse.showlist;
begin
try
adoHouse.Close;
adoHouse.Open;
except
on e:exception do
showmessage('列表显示失败');
end;
edtCID.ReadOnly := true;
edtHId.ReadOnly := true;
edtHname.ReadOnly := true;
edtHouseholder.ReadOnly := true;
edtHAddress.ReadOnly := true;
edtHphone.ReadOnly := true;
edtHtelephone.ReadOnly := true;
memhouse.ReadOnly := true;
edtHId.Text := adoHouse.fieldbyname('HId').AsString;
edtHname.Text := adoHouse.fieldbyname('Hname').AsString;
edtHouseholder.Text := adoHouse.fieldbyname('Householder').AsString;
edtHAddress.Text := adoHouse.fieldbyname('HAddress').AsString;
edtHphone.Text := adoHouse.fieldbyname('Hphone').AsString;
edtHtelephone.Text := adoHouse.fieldbyname('Htelephone').AsString;
memHouse.Text := adoHouse.fieldbyname('Hmemo').AsString;
ButtonState(4);
end;
procedure TfrmHouse.FormShow(Sender: TObject);
begin
inidata;
showlist;
edtCID.Text := 'C001';
edtCID.ReadOnly := true;
pclHouse.TabIndex := 0;
if blnAdd = false then //如果用户没有添加的权限,则将添加按钮置为不可见状态
bbtnAdd.Visible := false;
if blnModify = false then //如果用户没有修改的权限,则将修改按钮置为不可见状态
bbtnModify.Visible := false;
if blnDel = false then //如果用户没有删除的权限,则将删除按钮置为不可见状态
bbtnDel.Visible := false;
end;
{
*************************************************************************************
函数名称:数据保存
功能描述:将添加、修改的数据保存到数据库中
输入参数: 无
输出参数: 无
返回 值: 无
说 明: 添加、修改操作要调用该函数以达到显示更新后的数据显示目的
*************************************************************************************
}
procedure TfrmHouse.bbtnSaveClick(Sender: TObject);
var
strMsg : string;
begin
try
case iflag of
1:
begin
strMsg := '添加';
if length(edtHID.Text)<>9 then
begin
showmessage('请输入九位正确的家庭编号'); //家庭编号为4位社区编号+2位楼号+3位室号
exit; //比如:coo101501
end;
adopub.Close;
adopub.SQL.Text := 'select * from THouse where HId=''' + edtHId.Text +''''; //如果库中有相同的用户编号,以下将判断它的状态值
adopub.Open;
if adopub.RecordCount<>0 then
begin
if adopub.FieldByName('HState').AsString='1' then //如果状态值为1,说明库中有相同的家庭编号,已经存在该用户
begin
showmessage('已经存在该用户');
exit;
end
else //如果状态值为0,将其状态值恢复为1
begin
adoshare.Close;
strsql := 'update THouse set Hname=''' + edtHname.Text + ''',HAddress='''+edtHAddress.Text+''',Hphone=''';
strsql := strsql + edtHphone.Text + ''',Htelephone='''+edtHtelephone.Text+''',Householder='''+edtHouseholder.Text;
strsql := strsql + ''',HState='+'''1'''+',Hmemo='''+memHouse.Text + ''' where HId='''+edtHId.Text+'''';
adoshare.SQL.Text := strsql;
adoshare.ExecSQL;
adoshare.Close;
showmessage('添加成功');
showlist;
exit;
end;
end;
//如果库中没有相同的用户编号,则添加一条新记录,将状态值置为1
adoshare.Close;
strsql := 'insert into THouse (HId,CId,Hname,HAddress,Hphone,Htelephone,Householder,HState,HUserWC,Hmemo) values (''';
strsql := strsql + edtHId.Text + ''',''' + edtCId.Text + ''',''' + edtHname.Text + ''',''' + edtHAddress.Text;
strsql := strsql + ''',''' + edtHphone.Text + ''',''' + edtHtelephone.Text + ''',''' + edtHouseholder.Text;
strsql := strsql + ''',' + '''1''' + ',''' + ''',''' + memHouse.Text + ''')';
adoshare.SQL.Text := strsql;
adoshare.ExecSQL;
adoshare.Close;
showmessage('添加成功');
showlist;
end;
2:
begin
strMsg := '修改';
adoshare.Close;
strsql := 'update THouse set Hname=''' + edtHname.Text + ''',HAddress='''+edtHAddress.Text+''',Hphone=''';
strsql := strsql + edtHphone.Text + ''',Htelephone='''+edtHtelephone.Text+''',Householder='''+edtHouseholder.Text;
strsql := strsql + ''',Hmemo='''+memHouse.Text + ''' where HId='''+edtHId.Text+'''';
adoshare.SQL.Text := strsql;
adoshare.ExecSQL;
adoshare.Close;
showmessage('修改成功');
showlist;
end
else
exit;
end;
except
on e:exception do
showmessage('执行'+strMsg+'操作不成功');
end;
end;
procedure TfrmHouse.adoHouseAfterScroll(DataSet: TDataSet);
begin
edtHId.Text := adoHouse.fieldbyname('HId').AsString;
edtHname.Text := adoHouse.fieldbyname('Hname').AsString;
edtHouseholder.Text := adoHouse.fieldbyname('Householder').AsString;
edtHAddress.Text := adoHouse.fieldbyname('HAddress').AsString;
edtHphone.Text := adoHouse.fieldbyname('Hphone').AsString;
edtHtelephone.Text := adoHouse.fieldbyname('Htelephone').AsString;
memHouse.Text := adoHouse.fieldbyname('Hmemo').AsString;
end;
{
*************************************************************************************
函数名称: 初始化数据
功能描述: 将数据字典中的数据初始化到combox下拉列表中
输入参数: 无
输出参数: 无
返回 值: 无
说 明:
*************************************************************************************
}
procedure TfrmHouse.iniData;
begin
try
adoshare.close;
adoshare.SQL.Text := 'select a.DId,a.DName from TDataParam a,TDataType b where a.DTypeId=b.DTypeId and b.DTypeName=''卫生厕''';
adoshare.Open;
while not adoshare.Eof do
begin
adoshare.Next;
end;
adoshare.Close;
adoshare.close;
adoshare.SQL.Text := 'select HId from THouse';
adoshare.Open;
while not adoshare.Eof do
begin
adoshare.Next;
end;
adoshare.Close;
except
on e:exception do
showmessage('初始化下拉列表失败');
end;
end;
procedure TfrmHouse.bbtnDelClick(Sender: TObject);
var
iDel : integer;
begin
iDel := application.MessageBox('确定要删除吗?','删除提示',MB_YESNO+MB_Iconquestion);
if iDel=6 then
begin
adoshare.Close;
adoshare.SQL.Text := 'update THouse set HState=''0'' where HID='''+edtHID.Text+'''';
adoshare.ExecSQL;
adoshare.Close;
showmessage('删除成功');
showlist;
end
else
begin
exit;
end;
end;
procedure TfrmHouse.bbtngotoClick(Sender: TObject);
begin
pclHouse.TabIndex := 0;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -