📄 uclass_base.~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 + -