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

📄 xdqlb.pas

📁 不完备信息的数据发现
💻 PAS
字号:
unit xdqlb;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, Db, DBTables, Grids, DBGrids, StdCtrls, Buttons, Mask, DBCtrls,
  ExtCtrls, DBClient, MConnect, ADODB;

type
  Txdqlbf = class(TForm)
    DS_dqlb: TDataSource;
    Panel_top: TPanel;
    SB_select: TSpeedButton;
    SB_exit: TSpeedButton;
    DBGrid_dqlb: TDBGrid;
    Splitter1: TSplitter;
    TreeView_dqlb: TTreeView;
    Q_dqlb: TADOQuery;
    procedure FormShow(Sender: TObject);
    procedure SB_exitClick(Sender: TObject);
    procedure SB_selectClick(Sender: TObject);
    procedure DBGrid_dqlbDblClick(Sender: TObject);
    procedure TreeView_dqlbChange(Sender: TObject; Node: TTreeNode);
  private
    { Private declarations }
  public
    { Public declarations }
   function GetNodeLevel(sFormat,sCode:string):integer;
   procedure Dingwei;//更新树

  end;

var
  xdqlbf: Txdqlbf;
  cTreeCodeFormat:string='22222';
  mynode:array[0..6] of TTreenode;
  xcurid:string;
  curnode:TTreeNode;
  curlevel:integer;

implementation
uses dm,main_page;
{$R *.DFM}

function Txdqlbf.GetNodeLevel(sFormat,sCode:string):integer;
var i,level,iLen:integer;
begin
  level:=-1;
  iLen:=0;
  if (sFormat<>'') and (sCode<>'') then
    for i:=1 to Length(sFormat) do //分析编码格式,找出当前代码层次
    begin
      iLen:=iLen+StrToInt(sFormat[i]);
      if Length(sCode)=iLen then
      begin
        level:=i;
        break;
      end;
    end;
  result:=level;
end;

procedure Txdqlbf.FormShow(Sender: TObject);
var dqbh,nodeTxt:string;
    level:integer;
begin
  SelAffirm:=0;
  Q_dqlb.Close;
  Q_dqlb.SQL.Text:='select dqbh,dqmc FROM '+DatabaseName+'CG_dqlb order by dqbh';
  Q_dqlb.Open;

  //初始化变量
  TreeView_dqlb.Enabled:=True;
  TreeView_dqlb.Items.Clear;
  level:=0 ;
  TreeView_dqlb.items.clear;
 //设置根节点
  mynode[level]:=TreeView_dqlb.items.add(TreeView_dqlb.TopItem,'地区类别');
  mynode[level].ImageIndex:=1;
  //遍历数据表,利用编码字段记录排序规律,依次添加树节点
  Q_dqlb.first;
   while not Q_dqlb.Eof do
    begin
     dqbh:=trim(Q_dqlb.FieldByName('dqbh').AsString);
     nodeTxt:=dqbh+'-'+trim(Q_dqlb.FieldByName('dqmc').AsString);
     level:=GetNodeLevel(cTreeCodeFormat,dqbh);

     //这里返回代码的层次数
     if level>0 then
      begin
       //增加下一节点时,用添加子节点的方法可轻松实现节点间的层次关系。
      //注意:这里的父节点是用当前节点的上一级节点mynode[level-1]
       mynode[level]:=TreeView_dqlb.items.addchild(mynode[level-1],nodeTxt);
       mynode[level].ImageIndex:=2;
      end;
     Q_dqlb.next;//下一条记录
    end;
    mynode[0].expand(False);
    dingwei;
  //设置颜色
  Panel_top.Color:=color_top;
  DBGrid_dqlb.FixedColor :=color_dbgrid;
end;

procedure Txdqlbf.dingwei;
var n:integer;
begin
  TreeView_dqlb.SetFocus;
  curnode:=TreeView_dqlb.Selected;
  curlevel:=TreeView_dqlb.Selected.Level;
  n:=pos('-',curnode.Text )-1;
  xcurid:=copy(curnode.text,1,n);
  if length(xcurid)<1 then
   begin
    Q_dqlb.Filtered:=False;
    Q_dqlb.Filter:='dqbh=''%''';
    Q_dqlb.Filtered:=True;
    Q_dqlb.Filtered:=False;
   end
  else
   begin
    Q_dqlb.Filtered:=False;
    Q_dqlb.Filter:='dqbh='+''''+xcurid+'*''';
    Q_dqlb.Filtered:=True;
   end;
end;

procedure Txdqlbf.SB_exitClick(Sender: TObject);
begin
  SelAffirm:=0;
  close;
end;

procedure Txdqlbf.SB_selectClick(Sender: TObject);
begin
  SelAffirm:=1;
  close;
end;

procedure Txdqlbf.DBGrid_dqlbDblClick(Sender: TObject);
begin
  SelAffirm:=1;
  close;
end;

procedure Txdqlbf.TreeView_dqlbChange(Sender: TObject; Node: TTreeNode);
begin
  dingwei;
end;

end.

⌨️ 快捷键说明

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