📄 frm_ownerinfo.pas
字号:
{
***************************************************************
* 说明:业主信息维护 *
* 时间:2003/02/20 *
* 作者:杨泉清 *
***************************************************************
}
unit Frm_OwnerInfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ModalForm, DB, ADODB, ComCtrls, Grids, DBGrids, StdCtrls,
YLabelButton, ChangeImage, Menus, ExtCtrls, ImgList;
type
TOwnerInfo = class(TMyModalForm)
BtnNew: TChangeImg;
LbtnNew: TLabelB;
BtnEdit: TChangeImg;
LBtnEdit: TLabelB;
BtnDelete: TChangeImg;
LBtnDelete: TLabelB;
BtnRefresh: TChangeImg;
LBtnRefresh: TLabelB;
BtnHelp: TChangeImg;
LBtnHelp: TLabelB;
BtnFind: TChangeImg;
LBtnFind: TLabelB;
StatusBar1: TStatusBar;
DataSource1: TDataSource;
ADOQry: TADOQuery;
ADOStp: TADOStoredProc;
BtnMe: TChangeImg;
LBtnMe: TLabelB;
GroupBox2: TGroupBox;
Tv_YzList: TTreeView;
GroupBox3: TGroupBox;
Label2: TLabel;
edtyzbh: TEdit;
Label4: TLabel;
edtyzxm: TEdit;
Label8: TLabel;
edtlxdh: TEdit;
Label3: TLabel;
Label5: TLabel;
edtyhzh: TEdit;
Label1: TLabel;
cbyyzt: TComboBox;
Label6: TLabel;
edtdz: TEdit;
GroupBox1: TGroupBox;
DBGrid1: TDBGrid;
Edtkhyh: TEdit;
ImageList1: TImageList;
AdoQryGroup: TADOQuery;
procedure BtnNewClick(Sender: TObject);
procedure BtnEditClick(Sender: TObject);
procedure BtnDeleteClick(Sender: TObject);
procedure BtnRefreshClick(Sender: TObject);
procedure BtnFindClick(Sender: TObject);
procedure BtnHelpClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure EdtxqbhKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure Tv_YzListClick(Sender: TObject);
procedure BtnMeClick(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure edtyhzhKeyPress(Sender: TObject; var Key: Char);
procedure edtlxdhKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
procedure InitValue; //初始化窗体数据
procedure SetEditValue; //设置各显示框的数据值
function CheckValue: boolean; //检查各个输入框值的准确性
procedure ExecStore(optmode: integer); //执行存储过程
procedure SetTreeView; //设置树型结构值
//设置子树的值
procedure AddGroup(tvname: TtreeView; OwnerNo: string; GroupName: string);
//设置业主和其辖属组的信息
procedure GetOwnerInfo(Yzxm: string; zmc: string);
public
{ Public declarations }
end;
var
OwnerInfo: TOwnerInfo;
implementation
uses
DM_DataModal, Uglobal, UgeneralFunc, Frm_OwnerGroup;
{$R *.dfm}
procedure TOwnerInfo.InitValue;
begin
Edtyzbh.Text := '';
Edtyzxm.Text := '';
Edtlxdh.Text := '';
Edtkhyh.Text := '';
Edtyhzh.Text := '';
Cbyyzt.ItemIndex := 0;
Edtdz.Text := '';
GsTempstr1 := '';
GsTempStr2 := '';
Edtyzbh.SetFocus;
SetTreeView;
statusbar1.Panels[2].Text := 'Insert';
end;
procedure TOwnerInfo.SetEditValue;
begin
if AdoQry.RecordCount > 0 then
begin
Edtyzbh.Text := AdoQry.fieldbyname('yzbh').Value;
Edtyzxm.Text := AdoQry.fieldbyname('yzxm').Value;
Edtlxdh.Text := AdoQry.fieldbyname('lxdh').Value;
Edtkhyh.Text := AdoQry.fieldbyname('khyh').Value;
Edtyhzh.Text := AdoQry.fieldbyname('yzzh').Value;
Cbyyzt.ItemIndex := AdoQry.fieldbyname('zt').Value;
Edtdz.Text := AdoQry.fieldbyname('lxdz').Value;
end;
end;
function TOwnerInfo.CheckValue: boolean;
begin
result := false;
if Edtyzbh.Text = '' then
begin
statusbar1.Panels[1].Text := '业主编号不可为空值,请输入!';
Edtyzbh.SetFocus;
Edtyzbh.SelectAll;
exit;
end;
if Edtyzxm.Text = '' then
begin
statusbar1.Panels[1].Text := '业主姓名不可为空值,请输入!';
Edtyzxm.SetFocus;
Edtyzxm.SelectAll;
exit;
end;
Result := true;
end;
procedure TOwnerInfo.ExecStore(OptMode: integer);
begin
with AdoStp do
begin
parameters.ParamByName('@czdx').Value := 1;
parameters.ParamByName('@czfs').Value := OptMode;
parameters.ParamByName('@yzbh').Value := Edtyzbh.Text;
Parameters.ParamByName('@yzxm').Value := Edtyzxm.Text;
Parameters.ParamByName('@yzzh').Value := Edtyhzh.Text;
Parameters.ParamByName('@khyh').Value := Edtkhyh.Text;
Parameters.ParamByName('@lxdh').Value := Edtlxdh.Text;
Parameters.ParamByName('@lxdz').Value := Edtdz.Text;
Parameters.ParamByName('@zt').Value := Cbyyzt.ItemIndex;
try
Execproc;
Statusbar1.Panels[1].Text := parameters.paramByName('@retmsg').Value;
InitValue;
except
Statusbar1.Panels[1].Text := '维护业主信息资料时出现意外!';
end;
end;
end;
procedure TOwnerInfo.SetTreeView;
var
TreeNodeTmp: TtreeNode;
TempQry: TAdoQuery;
begin
inherited;
TempQry := TAdoQuery.Create(nil);
TempQry.Connection := WindData.AdoConn;
TV_YzList.Items.Clear;
TV_YzList.Items.AddChild(nil, '所有业主');
TV_YzList.Items[0].ImageIndex := 0;
TV_YzList.Items[0].SelectedIndex := 0;
with TempQry do
begin
sql.Clear;
sql.Add('select * from zx_s_yzxx');
open;
end;
while not TempQry.Eof do
begin
TreeNodeTmp := TV_YzList.Items.AddChild(TV_YzList.Items[0], TempQry.fieldbyname('yzbh').value + ':' + TempQry.fieldbyname('yzxm').value);
TreeNodeTmp.ImageIndex := 1;
TreeNodeTmp.SelectedIndex := 1;
TempQry.Next;
end;
with TempQry do
begin
sql.Clear;
sql.Add('select * from zx_s_yzgroup');
open;
end;
while not TempQry.Eof do
begin
if (length(TempQry.FieldByName('yzbh').Value) > 0) then
AddGroup(TV_YzList, TempQry.fieldbyname('yzbh').value, TempQry.fieldbyname('zms').value);
TempQry.Next;
end;
end;
procedure TOwnerInfo.AddGroup(tvname: TtreeView; OwnerNo: string; GroupName: string);
var
tmp: Ttreenode;
tvnode_parent: tTreeNode;
i: integer;
TempAdoQry: TAdoQuery;
OwnerName: string;
begin
TempAdoQry := TAdoQuery.Create(nil);
TempAdoQry.Connection := WindData.AdoConn;
try
tvnode_parent := tvname.Items[0];
except
exit;
end;
with TempAdoQry do
begin
sql.Clear;
sql.Add('select yzbh,yzxm from zx_s_yzxx where yzbh=''' + OwnerNo + '''');
open;
end;
if TempAdoQry.RecordCount > 0 then
OwnerName := TempAdoQry.FieldByName('yzbh').Value + ':' + TempAdoQry.FieldByName('yzxm').Value;
for i := 0 to tvnode_parent.Count - 1 do
begin
if tvnode_parent.Item[i].Text = OwnerName then
begin
tvnode_parent := tvnode_parent.Item[i];
tmp := tvname.Items.AddChild(tvnode_parent, GroupName);
tmp.ImageIndex := 2;
tmp.SelectedIndex := 2;
break;
end;
end;
end;
procedure TOwnerInfo.BtnNewClick(Sender: TObject);
begin
inherited;
if CheckValue then ExecStore(1);
end;
procedure TOwnerInfo.BtnEditClick(Sender: TObject);
begin
inherited;
if CheckValue then ExecStore(3);
end;
procedure TOwnerInfo.BtnDeleteClick(Sender: TObject);
var
msg: string;
begin
inherited;
msg := '请确认要删除该笔业主信息!';
if showmsg(msg, 0, 2) then
begin
ExecStore(2);
end
else
statusbar1.Panels[1].Text := '删除操作已取消!';
end;
procedure TOwnerInfo.BtnRefreshClick(Sender: TObject);
begin
inherited;
InitValue;
statusbar1.Panels[1].Text := '';
end;
procedure TOwnerInfo.BtnFindClick(Sender: TObject);
var
Sqlstr: string;
iRec: integer;
begin
inherited;
iRec := 0;
Sqlstr := 'select * from zx_s_yzxx';
if (length(trim(Edtyzbh.Text)) > 0) then
begin
if irec < 1 then
begin
SqlStr := Sqlstr + ' where (yzbh like ''' + trim(Edtyzbh.text) + ''')';
inc(irec);
end
else begin
SqlStr := Sqlstr + ' and (yzbh like ''' + trim(Edtyzbh.text) + ''')';
inc(irec);
end;
end;
if (length(trim(Edtyzxm.Text)) > 0) then
begin
if irec < 1 then
begin
SqlStr := Sqlstr + ' where (yzxm like ''' + trim(Edtyzxm.text) + ''')';
inc(irec);
end
else begin
SqlStr := Sqlstr + ' and (yzxm like ''' + trim(Edtyzxm.text) + ''')';
inc(irec);
end;
end;
if irec = 0 then
begin
statusbar1.Panels[1].Text := '请输入查询条件';
exit;
end;
with Adoqry do
begin
sql.Clear;
sql.Add(sqlstr);
open;
end;
if Adoqry.RecordCount > 0 then
begin
SetEditValue;
Edtyzbh.SetFocus;
edtyzbh.SelectAll;
sqlstr := 'select zx_s_yzgroup.*,zx_s_yzxx.yzxm from zx_s_yzgroup left join zx_s_yzxx'
+ ' on zx_s_yzgroup.yzbh=zx_s_yzxx.yzbh where zx_s_yzgroup.yzbh=:yzbh';
with AdoQryGroup do
begin
sql.Clear;
sql.Add(Sqlstr);
AdoQryGroup.Parameters.ParamByName('yzbh').Value := EdtYzbh.Text;
open;
end;
statusbar1.Panels[1].Text := '查找到' + inttostr(Adoqry.RecordCount) + '笔符合条件的记录!';
statusbar1.Panels[2].Text := 'Modify'
end
else begin
InitValue;
statusbar1.Panels[1].Text := '无符合条件的业主信息!';
end;
end;
procedure TOwnerInfo.BtnHelpClick(Sender: TObject);
begin
inherited;
//帮助信息
HtmlHelp(Handle, gtSyscs.sHelpFileName, $0001, DWORD(PChar('Introduction.htm')));
end;
procedure TOwnerInfo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := Cafree;
end;
procedure TOwnerInfo.FormDestroy(Sender: TObject);
begin
inherited;
OwnerInfo := nil;
end;
procedure TOwnerInfo.EdtxqbhKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Sqlstr: string;
begin
inherited;
if key = 13 then
begin
if Edtyzbh.Text = '' then
begin
statusbar1.Panels[1].Text := '业主编号不可为空值,请输入!';
exit;
end;
SqlStr := 'select * from zx_s_yzxx where yzbh like ''' + trim(edtyzbh.text) + '''';
with Adoqry do
begin
sql.Clear;
sql.Add(sqlstr);
open;
end;
if Adoqry.RecordCount > 0 then
begin
SetEditValue;
statusbar1.Panels[1].Text := '查找到' + inttostr(Adoqry.RecordCount) + '笔符合条件的记录!';
statusbar1.Panels[2].Text := 'Modify'
end;
Edtyzbh.SetFocus;
edtyzbh.SelectAll;
end;
end;
procedure TOwnerInfo.FormShow(Sender: TObject);
begin
inherited;
InitValue;
end;
procedure TOwnerInfo.Tv_YzListClick(Sender: TObject);
var
TempNode: TTreeNode;
yzbh, zmc: string;
begin
inherited;
if Tv_YzList.Selected = nil then exit;
TempNode := Tv_YzList.Selected;
if TempNode.Level = 1 then //业主层
begin
yzbh := copy(TempNode.Text, 1, pos(':', TempNode.Text) - 1);
zmc := '';
GetOwnerInfo(yzbh, zmc);
end;
if TempNode.Level = 2 then //业主辖属组层
begin
//yzxm:=tempnode.Parent.Text ;
yzbh := copy(TempNode.Text, 1, pos(':', TempNode.Text) - 1);
zmc := TempNode.Text;
GetOwnerInfo(yzbh, zmc);
end;
end;
procedure TOwnerInfo.GetOwnerInfo(Yzxm: string; zmc: string);
var
Sqlstr: string;
begin
with AdoQry do
begin
sql.Clear;
sql.Add('select * from zx_s_yzxx where yzbh=''' + yzxm + '''');
open;
end;
SetEditValue;
if zmc = '' then
sqlstr := 'select zx_s_yzgroup.*,zx_s_yzxx.yzxm from zx_s_yzgroup left join zx_s_yzxx'
+ ' on zx_s_yzgroup.yzbh=zx_s_yzxx.yzbh where zx_s_yzgroup.yzbh=:yzbh'
else
sqlstr := 'select zx_s_yzgroup.*,zx_s_yzxx.yzxm from zx_s_yzgroup left join zx_s_yzxx'
+ ' on zx_s_yzgroup.yzbh=zx_s_yzxx.yzbh where (zx_s_yzgroup.yzbh=:yzbh)'
+ ' and (zx_s_yzgroup.zms =''' + trim(zmc) + ''')';
with AdoQryGroup do
begin
close;
sql.Clear;
sql.Add(Sqlstr);
Adoqrygroup.Parameters.ParamByName('yzbh').Value := Edtyzbh.Text;
open;
end;
if AdoQry.RecordCount > 0 then
statusbar1.Panels[2].Text := 'Modify'
end;
procedure TOwnerInfo.BtnMeClick(Sender: TObject);
begin
inherited;
GsTempstr1 := Edtyzbh.Text;
if GsTempstr1 = '' then
begin
statusbar1.Panels[1].Text := '请先选定一个业主,再进行组维护操作!';
exit;
end;
if not assigned(OwnerGroup) then
OwnerGroup := TOwnerGroup.Create(Application);
OwnerGroup.Show;
end;
procedure TOwnerInfo.DBGrid1DblClick(Sender: TObject);
begin
inherited;
if AdoQryGroup.RecordCount > 0 then
begin
GsTempstr2 := AdoQryGroup.fieldbyname('zbh').Value;
BtnMeClick(Sender);
end;
end;
procedure TOwnerInfo.DBGrid1CellClick(Column: TColumn);
begin
inherited;
statusbar1.Panels[1].Text := '按【组登记】按钮或双击选中的组进行业主组信息维护操作!';
end;
procedure TOwnerInfo.edtyhzhKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if not (key in ['0'..'9', #8, #13]) then key := #0;
end;
procedure TOwnerInfo.edtlxdhKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if not (key in ['0'..'9', #8, #13]) then key := #0;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -