Delphi递归加载树形(TreeView)列表
//采用递归方法,D7编译调试通过。
//数据采用ADOQuery读取,并将数据暂存在一个动态数组中,树形列表控件为TreeView。
procedure TForm1.LoadTreeInfo;
type
TInfo = record
ID, //代码
Name, //名称
SuperID //上级代码
: string;
//附加字段随需添加
end;
var
sql: string;
i, nCount: Integer;
arrInfo: array of TInfo;
NewNode: TTreeNode;
//加载一个节点
procedure InitOneNode(ANode: TTreeNode; AId: string);
var
k: Integer;
begin
for k := 0 to length(arrInfo) - 1 do
if arrInfo[k].SuperID = AId then
begin
NewNode := TreeView1.Items.AddChild(ANode, arrInfo[k].Name);
InitOneNode(NewNode, arrInfo[k].ID);
end;
end;
begin
TreeView1.Items.BeginUpdate;
TreeView1.Items.Clear;
sql := 'select ID, Name, SuperID from DictionaryTable order by ID';
ADOQuery1.Close;
ADOQuery1.SQL.Text := sql;
ADOQuery1.Open;
nCount := ADOQuery1.RecordCount;
if nCount > 0 then
begin
SetLength(arrInfo, nCount);
for i := 0 to nCount - 1 do
with arrInfo[i] do
begin
ID := Trim(ADOQuery1.FieldByName('ID').AsString);
Name := Trim(ADOQuery1.FieldByName('Name').AsString);
SuperID := Trim(ADOQuery1.FieldByName('SuperID').AsString); //无没有此字段,可根据上下级编码规则赋值
ADOQuery1.Next;
end;
end;
ADOQuery1.Close;
if nCount > 0 then
&nb
相关文档:
(一) 使用动态创建的方法
首先创建 Excel 对象,使用ComObj:
var ExcelApp: Variant;
ExcelApp := CreateOleObject( 'Excel.Application' );
1) 显示当前窗口:
ExcelApp.Visible := True;
2) 更改 Excel 标题栏:
ExcelApp.Caption := '应用程序调用 Microsoft Excel';
3) 添加新工作簿:
ExcelApp.WorkBooks.Add ......
1.防止刷新时闪烁的终极解决办法
{ 防止刷新时闪烁的终极解决办法(对付双缓冲无效时) }
Perform($000B, 0, 0); //锁屏幕 防止闪烁
// 做一些会发生严重闪烁的事情..
//解锁屏幕并重画
Perform($000B, 1, 0);
RedrawWindow(Handle, nil, 0, RDW_FRAME + RDW_INVALIDATE + R ......
一、Delphi中流的基本概念及函数声明
在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性和方法。
TStream类中定义的属性介绍如下:
1、Size:此属性以字节返回流中数据大小。
2、Position:此属性控制流中存取指针的位置 ......
Delphi字符串函数大全
uses StrUtils;
【字符串函数大全】
首部 function AnsiResemblesText(const AText, AOther: string): Boolean;
$[StrUtils.pas
功能 返回两个字符串是否相似
  ......