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

📄 khzlxx.pas

📁 服务信息管理系统
💻 PAS
字号:
unit khzlxx;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, StdCtrls, Buttons, ComCtrls, ToolWin, ExtCtrls, Grids,
  DBGrids, DB, DBTables;

type
  Tfrmkhzl = class(TForm)
    ImageList: TImageList;
    CoolBar1: TCoolBar;
    oToolBar: TToolBar;
    DqtjaddButton: TToolButton;
    DqxjaddButton: TToolButton;
    DqDeleteButton: TToolButton;
    PrintButton: TToolButton;
    PrintviewButton: TToolButton;
    ToolButton7: TToolButton;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    ToolButton13: TToolButton;
    ToolButton14: TToolButton;
    Panel1: TPanel;
    Splitter1: TSplitter;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Splitter2: TSplitter;
    Panel5: TPanel;
    Panel6: TPanel;
    DBGrid1: TDBGrid;
    Edit1: TEdit;
    khgjquery: TQuery;
    KhgjDataSource: TDataSource;
    Label3: TLabel;
    Label4: TLabel;
    DBGrid2: TDBGrid;
    DqmlQuery: TQuery;
    DqmlView: TTreeView;
    Label1: TLabel;
    khzlDataSource: TDataSource;
    KhxxQuery: TQuery;
    Query1: TQuery;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ToolButton14Click(Sender: TObject);
    procedure DBGrid1ColEnter(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure Panel1Resize(Sender: TObject);
    procedure Panel3Resize(Sender: TObject);
    procedure DqtjaddButtonClick(Sender: TObject);
    procedure DqxjaddButtonClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DqmlViewClick(Sender: TObject);
    procedure KhxxQueryFilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    procedure DqDeleteButtonClick(Sender: TObject);
    procedure PrintviewButtonClick(Sender: TObject);
    procedure PrintButtonClick(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmkhzl: Tfrmkhzl;
  lsbl_cxnr, dqml_bjzt, dqml_dqbh, dqml_dqdqbh, dqml_dqdqmc: string;
  { dqml_dqbh     当前选中地区的上级地区的编号
    dqml_dqdqbh  当前选中地区的编号
    dqml_dqdqmc  当前选中地区的名称}
implementation
uses mainform, dqmlgl, dqmlreport, khzlbj;

{$R *.dfm}

procedure Tfrmkhzl.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  frmkhzl := nil
end;

procedure Tfrmkhzl.ToolButton14Click(Sender: TObject);
begin
  Close;
end;

procedure Tfrmkhzl.DBGrid1ColEnter(Sender: TObject);
var
  lsbl_khbh: string;
begin
  lsbl_khbh := Trim(Khxxquery.FieldByName('kh_bh').AsString);
  KhgjQuery.Close;
  KhgjQuery.ParamByName('lsbl_khbh').AsString := lsbl_khbh;
  KhgjQuery.Prepare;
  KhgjQuery.Open;
end;

procedure Tfrmkhzl.Edit1Change(Sender: TObject);
begin
  lsbl_cxnr := Trim(Edit1.text);
  if lsbl_cxnr = '' then
    begin
      khxxquery.OnFilterRecord := nil;
      khxxquery.Filtered := False;
    end
  else
    begin
      khxxquery.OnFilterRecord := khxxqueryFilterRecord;
      khxxquery.Filtered := True;
    end;
  Label4.Caption := InttoStr(khxxquery.RecordCount);
end;

procedure Tfrmkhzl.FormResize(Sender: TObject);
begin
  Label4.Left := Panel4.Width - 106;
  Label3.Left := Panel4.Width - 178;
end;

procedure Tfrmkhzl.Panel1Resize(Sender: TObject);
begin
  if Panel1.Width > 308 then
    Panel1.Width := 308;
  if Panel1.Width < 190 then
    Panel1.Width := 190;
end;

procedure Tfrmkhzl.Panel3Resize(Sender: TObject);
begin
  if Panel3.Height > 473 then
    Panel3.Height := 473;
  if Panel3.Height < 372 then
    Panel3.Height := 372;
end;

procedure Tfrmkhzl.DqtjaddButtonClick(Sender: TObject);
begin
  dqml_bjzt := 'dqtjadd';
  frmdqmlgl := Tfrmdqmlgl.Create(Self);
  with frmdqmlgl do
    begin
      caption := '地区同级增加';
      BitBtnsave.Enabled := False;
      ShowModal;
    end;
end;

procedure Tfrmkhzl.DqxjaddButtonClick(Sender: TObject);
begin
  dqml_bjzt := 'dqxjadd';
  frmdqmlgl := Tfrmdqmlgl.Create(Self);
  with frmdqmlgl do
    begin
      caption := '地区下级增加';
      BitBtnsave.Enabled := False;
      ShowModal;
    end;
end;

procedure Tfrmkhzl.ToolButton1Click(Sender: TObject);
begin
  dqml_bjzt := 'dqedit';
  frmdqmlgl := Tfrmdqmlgl.Create(Self);
  with frmdqmlgl do
    begin
      caption := '地区编辑';
      Edit1.Text := dqml_dqdqbh;
      Edit1.Enabled := False;
      Edit2.Text := dqml_dqdqmc;
      BitBtnsave.Enabled := False;
      ShowModal;
    end;
end;

procedure Tfrmkhzl.FormCreate(Sender: TObject);
var
  pCode, yCode, pName: string;
  MainNode, yNode, zNode: TTreeNode;
begin
  MainNode := TTreeNode.Create(DqmlView.Items);
  yNode := TTreeNode.Create(DqmlView.Items);
  zNode := TTreeNode.Create(DqmlView.Items);
  dqmlView.Items.Clear;
  with DqmlQuery do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select dq_bh,dq_mc From dqxxk order by dq_bh');
      Prepare;
      Open;
    end;
  DqmlQuery.first;
  yCode := Trim(DqmlQuery.FieldByName('dq_bh').AsString);
  DqmlView.Items.BeginUpdate;
  while not DqmlQuery.eof do
    begin
      pCode := Trim(DqmlQuery.FieldByName('dq_bh').AsString);
      pName := Trim(DqmlQuery.FieldByName('dq_mc').AsString);
      case length(pCode) of
        3:
          begin
            MainNode := DqmlView.Items.AddChild(nil, pCode + ' ' + pName);
            yNode := MainNode;
          end;
        6:
          begin
            pCode := Copy(pCode, 4, 3);
            MainNode := DqmlView.Items.AddChild(yNode, pCode + ' ' + pName);
            zNode := MainNode;
          end;
        9:
          begin
            pCode := Copy(pCode, 7, 3);
            MainNode := DqmlView.Items.AddChild(zNode, pCode + ' ' + pName)
          end;
      end;
      Mainnode.SelectedIndex := 16;
      Mainnode.ImageIndex := 17;
      DqmlQuery.Next;
    end;
  DqmlView.Items.EndUpdate;
  DqmlQuery.Close;
  if DqmlView.Items.Count <> 0 then
    begin
      DqmlView.Items[0].Selected := True;
      DqmlView.OnClick(sender);
    end
  else
    begin
      DqxjaddButton.Enabled := False;
      DqDeleteButton.Enabled := False;
    end;
end;

procedure Tfrmkhzl.DqmlViewClick(Sender: TObject);
var
  lsbl_dqbh, lsbl_dqbh2, lsbl_dqbhcx, lsbl_bhcd: string;
  lsbl_word: Word;
  lsbl_dqjb, lsbl_x: Integer;
  lsbl_node: TTreeNode;
  lsbl_xjdqsl, lsbl_dqkhsl: Boolean; //此两变量是用来判断地区是否能被删除
  //任一个为真则地区不能删除
begin
  if DqmlView.Selected <> nil then
    begin
      LockWindowUpdate(handle);
      dqml_bjzt := '';
      dqml_dqbh := '';
      lsbl_node := DqmlView.Selected;
      lsbl_dqjb := DqmlView.Selected.Level;
      lsbl_dqbh := Trim(DqmlView.Selected.Text);
      lsbl_word := Pos(' ', lsbl_dqbh);
      dqml_dqdqmc := Copy(lsbl_dqbh, lsbl_word + 1, length(lsbl_dqbh));
      lsbl_dqbh := Copy(lsbl_dqbh, 1, lsbl_word - 1);
      for lsbl_x := 0 to lsbl_dqjb - 1 do
        begin
          lsbl_dqbh2 := Trim(lsbl_node.Parent.Text);
          lsbl_word := Pos(' ', lsbl_dqbh2);
          lsbl_dqbh2 := Copy(lsbl_dqbh2, 1, lsbl_word - 1);
          dqml_dqbh := lsbl_dqbh2 + dqml_dqbh; //当前选中地区的上级编号
          lsbl_dqbh := lsbl_dqbh2 + lsbl_dqbh;
          lsbl_node := lsbl_node.Parent;
        end;
      dqml_dqdqbh := lsbl_dqbh; //当前选中地区的编号
      lsbl_bhcd := inttostr(length(dqml_dqdqbh));

      //以下是判断所选地区是否能被删除
      lsbl_xjdqsl := DqmlView.Selected.HasChildren;
      //如果此地区有下级地区则不允需删除
      lsbl_dqbhcx := lsbl_dqbh + '%';
      with khxxquery do
        begin
          Filtered := False;
          Close;
          SQL.Clear;
          SQL.Add('Select * From khxxview');
          SQL.Add('where (kh_dqbh like ''' + lsbl_dqbhcx + '''' + ') order by kh_bh');
          Open;
        end;
      Label4.Caption := InttoStr(khxxquery.RecordCount);
      if KhxxQuery.RecordCount <> 0 then
        lsbl_dqkhsl := True //如果此地区还有客户则不允需删除
      else
        lsbl_dqkhsl := False;

      if (lsbl_xjdqsl = True) or (lsbl_dqkhsl = True) then
        DqDeleteButton.Enabled := False
      else
        DqDeleteButton.Enabled := True;
      //以上是判断所选地区是否能被删除}

      if DqmlView.Selected.Level = 2 then //编码长度为三级,
        Dqxjaddbutton.Enabled := False //超过三级则下级增加按钮变为不能用
      else
        Dqxjaddbutton.Enabled := True;
      Edit1.Text := '';
      LockWindowUpdate(0);
    end;
end;

procedure Tfrmkhzl.KhxxQueryFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
  Accept := (sysform.StrLike(lsbl_cxnr, KhxxQuery.FieldByName('kh_bh').AsString))
    or (sysform.StrLike(lsbl_cxnr, KhxxQuery.FieldByName('kh_mc').AsString))
    or (sysform.StrLike(lsbl_cxnr, KhxxQuery.FieldByName('kh_zjm').AsString))
    or (sysform.StrLike(lsbl_cxnr, KhxxQuery.FieldByName('kh_dh').AsString))
    or (sysform.StrLike(lsbl_cxnr, KhxxQuery.FieldByName('kh_lxr').AsString))
    or (sysform.StrLike(lsbl_cxnr, KhxxQuery.FieldByName('kh_sh').AsString));
end;

procedure Tfrmkhzl.DqDeleteButtonClick(Sender: TObject);
var
  lsbl_dqmc: string;
begin
  if dqmlView.Selected <> nil then
    begin
      lsbl_dqmc := dqmlview.Selected.Text;
      if MessageDlg('确实要删除地区【' + lsbl_dqmc + '】',
        mtConfirmation, [mbYes, mbNo], 0) = mrYes then
        begin
          with dqmlQuery do
            begin
              Close;
              SQL.Clear;
              SQL.Add('Delete from dqxxk where Trim(dq_bh)=''' + dqml_dqdqbh + '''');
              Prepare;
              try
                ExecSQL;
                dqmlview.Selected.Delete;
                dqmlView.OnClick(sender);
              except
                MessageDlg('删除数据失败', mtWarning, [mbOk], 0);
                exit;
              end;
            end;
        end;
    end;
end;

procedure Tfrmkhzl.PrintviewButtonClick(Sender: TObject);
begin
  if frmdqmlreport = nil then
    frmdqmlreport := Tfrmdqmlreport.create(self);
  frmdqmlreport.QuickRep1.ReportTitle := '《地区目录》';
  frmdqmlreport.QuickRep1.Preview;
  frmdqmlreport.Free;
  frmdqmlreport := nil;
end;

procedure Tfrmkhzl.PrintButtonClick(Sender: TObject);
begin
  if frmdqmlreport = nil then
    frmdqmlreport := Tfrmdqmlreport.create(self);
  frmdqmlreport.QuickRep1.ReportTitle := '《地区目录》';
  frmdqmlreport.QuickRep1.Print;
  frmdqmlreport.Free;
  frmdqmlreport := nil;
end;

procedure Tfrmkhzl.ToolButton2Click(Sender: TObject);
begin
  frmkhzlbj := Tfrmkhzlbj.Create(Self);
  with frmkhzlbj do
    begin
      caption := '客户资料增加';
      khzlbj_bjzt := 'khzladd';
      khxx_dqbh := dqml_dqdqbh;
      khxx_dqmc := dqml_dqdqmc;
      DqEdit.Text := dqml_dqdqmc;
      khxx_bh := '';
      ShowModal;
    end;
end;

procedure Tfrmkhzl.ToolButton3Click(Sender: TObject);
begin
  frmkhzlbj := Tfrmkhzlbj.Create(Self);
  with frmkhzlbj do
    begin
      caption := '客户资料修改';
      khzlbj_bjzt := 'khzledit';
      khxx_dqbh := dqml_dqdqbh;
      khxx_dqmc := dqml_dqdqmc;
      ShowModal;
    end;
end;

procedure Tfrmkhzl.ToolButton4Click(Sender: TObject);
var
  lsbl_selectkhbh: string;
begin
  if Khxxquery.FieldByName('kh_bh').AsString <> '' then
    begin
      if MessageBox(handle, '确定要删除当前记录吗?', pchar('提示信息'), mb_IconQuestion + mb_YesNo) = mrYes then
        begin
          lsbl_selectkhbh := Trim(Khxxquery.FieldByName('kh_bh').AsString);
          Query1.ParamByName('deletekhbh').AsString := lsbl_selectkhbh;
          try
            Query1.ExecSQL;
          except
            MessageBox(handle, '删除当前记录失败', pchar('提示信息'), mb_IconWarning + mb_OK);
          end;
          Query1.Close;
          KhxxQuery.Filtered := False;
          KhxxQuery.Close;
          KhxxQuery.Open;
          Edit1.OnChange(Sender);
        end;
    end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -