⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frm_ownerinfo.pas

📁 是一个用delphi设计的考勤系统
💻 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 + -