解决方案 »
- 有没有CheckBoxGroup或类似的控件?
- Dephi直接用代码操作Excel代码 下载
- Delphi SPCOMM 实时画波形不行?? 单片机连续每20MS发个数据到PC 求助!
- 关于文本加密、和防止文件考贝,请大家进来讨论一下,请大家给点意见
- 哪位大侠有关于tms charts 的例子
- 关于COMBOBOX的问题,请各位帮忙,谢谢!!!!!!
- 关于Graphics绘图效率问题
- 我有一个控件的源代码,为何我在DELPHI6中加入了,却用不了控件的方法。大家帮我看看。
- dbgrid的大小有限 不能完全吧所有的字段都显示出来 要通过滚动条拖动 能不能判断某个字段在显示?还是不在显示
- quickrep是不是有这样的问题?
- 多线程的问题!
- delphi HttpQueryInfo查询响应头信息,执行成功,但是返回的是空字符串
//edit1.text:='abc,def,ghi';procedure TForm1.Button1Click(Sender: TObject);
var
sList:TStringList;
i,j:Integer;
NodeList:TList; procedure GetLevelNodes(ALevel:Integer);
var
i:Integer;
begin
NodeList.Clear;
for i:=0 to TreeView1.Items.Count-1 do
if TreeView1.Items[i].Level=ALevel then
NodeList.Add(TreeView1.Items[i]);
end;
procedure AddNode(const ATxt:string;APNode:TTreeNode);
var
i:Integer;
begin
if trim(ATxt)='' then exit;
for i:=1 to length(ATxt) do
TreeView1.Items.AddChild(APNode,ATxt[i]);
end;
begin
sList:=TStringList.Create;
try
sList.Delimiter:=',';
sList.DelimitedText:=edit1.Text;
if sList.Count<=0 then exit;
TreeView1.Items.Clear;
AddNode(sList[0],nil); NodeList:=TList.Create;
try
for i:=1 to sList.Count-1 do
begin
GetLevelNodes(i-1);
for j:=0 to NodeList.Count-1 do
AddNode(sList[i],TTreeNode(NodeList[j]));
end;
finally
NodeList.Free;
end;
finally
sList.Free;
end; TreeView1.FullExpand;
end;
我的看法是:题目让你把一个父节点的全部儿子节点找出来。//定义节点
TpNode=^TaNode;
TaNode=record
Data:array of yourDataType;//每层的元素
Next:TpNode;//下一层指针
end;//至于节点的赋值,我不详细写了,就是每层的元素赋值完成之后NEW一下,把NEXT指向NEW
//下面的过程简单演示了递归的方法,我学艺不精,你自己也研究一下吧
procedure crNode(aNode:TpNode);
var i:Integer;
begin
for i:=Low(aNode.Data) to High(aNode.Data) do
if aNode.Next<>nil then
crNode(aNode.Next)
else
//添加节点;
end;
var A,B,C:TStringList;
i,j,k:Integer;
NowNode,NowNode1,NowNode2:TTreeNode;
begin
A:=TStringList.Create;
B:=TStringList.Create;
C:=TStringList.Create;
A.Delimiter:=',';
B.Delimiter:=',';
C.Delimiter:=',';
A.DelimitedText:='A,B,C';
B.DelimitedText:='D,E,F';
C.DelimitedText:='H,I,J';
if A.Count<=0 then exit;
TreeView1.Items.Clear;
For i:=0 to A.Count-1 do
begin
NowNode:=TreeView1.Items.Add(nil,A.Strings[i]);
For j:=0 to B.Count-1 do
begin
NowNode1:=TreeView1.Items.AddChild(NowNode,B.Strings[j]);
For k:=0 to C.Count-1 do
begin
NowNode2:=TreeView1.Items.AddChild(NowNode1,C.Strings[k]);
end;
end;
end;
TreeView1.FullExpand;
end;
A.Free;
B.Free;
C.Free;