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

📄 uclass_base.~pas

📁 相关的销售服务管理行业的一个软件
💻 ~PAS
字号:
unit UClass_Base;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ToolWin, ComCtrls, ExtCtrls, Db, ADODB, Grids, DBGrids,
  Menus;

type
  TfrmClass_Base = class(TForm)
    ToolBar1: TToolBar;
    Panel1: TPanel;
    Splitter1: TSplitter;
    Panel2: TPanel;
    Tv: TTreeView;
    ADOQry: TADOQuery;
    PmTree: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    SQLBackup: TStaticText;
    procedure FormShow(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure TvChange(Sender: TObject; Node: TTreeNode);
    procedure TvKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure TvClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmClass_Base: TfrmClass_Base;

implementation

uses U_DM, MyFunc;

{$R *.DFM}


procedure TfrmClass_Base.FormShow(Sender: TObject);
var
  TmpNode:TTreeNode;
  CodeLength,LengthPre:integer;
  Code,TCode,TName:String;
  i:integer;
  PData:PChar;
begin
  Tv.Items.Clear;
  ADOQry.Close;
  ADOQry.Open;
  LengthPre:=0;
  TmpNode:=TTreeNode.Create(nil);
  with ADOQry do
  begin
    While not ADOQry.Eof do
    begin
      Code:=FieldByName('Code').AsString;
      TCode:=FieldByName('TCode').AsString;
      TName:=FieldByName('Name').AsString;
      CodeLength:=length(TCode);
      Getmem(PData,CodeLength+1);
      StrPlCopy(PData,TCode,CodeLength);

      if CodeLength=4 then
      begin
        TmpNode:=Tv.Items.AddObject(nil,Code+'-'+TName,PData);
        LengthPre:=CodeLength;
      end else
      begin
        if CodeLength>LengthPre then
        begin
          TmpNode:=Tv.Items.AddChildObject(TmpNode,Code+'-'+TName,PData);
          LengthPre:=CodeLength;
        end else
        begin
          if CodeLength=LengthPre then
          begin
            TmpNode:=Tv.Items.AddObject(TmpNode,Code+'-'+TName,PData);
            LengthPre:=CodeLength;
          end else
          begin         //往上走
            for i:=1 to (LengthPre-CodeLength) div 4 do
            begin
              TmpNode:=TmpNode.Parent;
            end;
            TmpNode:=Tv.Items.AddObject(TmpNode,Code+'-'+TName,PData);
            LengthPre:=CodeLength;
          end;
        end;
      end;
      ADOQry.Next;
    end;
    ADOQry.First;
    Tv.SetFocus;
    TvClick(Sender);
  end; 
end;

procedure TfrmClass_Base.N1Click(Sender: TObject);
begin
  Tv.FullExpand;
end;

procedure TfrmClass_Base.N2Click(Sender: TObject);
begin
  Tv.FullCollapse;
end;

procedure TfrmClass_Base.TvChange(Sender: TObject; Node: TTreeNode);
//var
  //SelTCode:string;
begin
{  try
  if Tv.Selected<>nil then
  begin
    SelTCode:=copy(string(tv.Selected.Data),0,(tv.Selected.Level+1)*4);
    ADOQry.Locate('TCode',SelTCode,[loCaseInsensitive]);
  end;
  except
    //危险!新增第一条纪录时回莫名其妙报错!
  end;  }
end;
procedure TfrmClass_Base.TvKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (key=38) or  (key=40  )then
    TvClick(Sender);
end;

procedure TfrmClass_Base.TvClick(Sender: TObject);
var
  SelTCode:string;
begin
  try
  if Tv.Selected<>nil then
  begin
    SelTCode:=copy(string(tv.Selected.Data),0,(tv.Selected.Level+1)*4);
    ADOQry.Locate('TCode',SelTCode,[loCaseInsensitive]);
  end;
  except
    //危险!新增第一条纪录时回莫名其妙报错!
  end;
end;

procedure TfrmClass_Base.FormCreate(Sender: TObject);
begin
  SQLBackUp.Caption:=ADOQry.SQL.Text;
end;

end.

⌨️ 快捷键说明

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