我写的treeview的遍历 ,欢迎交流(0分)

  • 主题发起人 轻音乐
  • 开始时间
To 轻音乐
在你的源程序里, 你的goto和Exit是完全等效的, 不是吗?
你不会告诉我break 和 Exit的区别没学过吧[8D]
 
to 大富翁WW 兄 如果要在最后还要做些事情,用exit就会执行不到了
 
[:)], 见仁见智吧
 
改造了一下,可以遍历树和指定节点。
如果不在最后处理其他事情可以将goto 改成exit;
procedure GetNode(Node:TTreeNode);
var
flag:integer;
label ok;
begin
flag:= node.Level ;
while True do
begin
if node.HasChildren then
node := node.GetFirstChild
else
begin
while node.IsLast do
if node.Level = flag then
goto ok
else
node := node.Parent;
node := node.GetNextSibling;
end;
end;
ok:null; //结束
{do otherthing}
end;
 
虽然我刚学习DELPHI,但好象方向也没错呀。。。看我写的一个实际用的例程,请对DELPHILAI的看法不以为然的朋友给提提意见(branchno 是我用来区别不同分公司的用户的

procedure TForm1.btnLookClick(Sender: TObject);
begin
TreeLook.items.clear;
with tmpquery do
begin
close;
sql.clear;
sql.text:='select * from codetree where BranchNo='''+branchno+''' order by treelevel,fathersxh,sxh ' ;
open;
first;
FatherNode:=Nil;
Fathersxh:=0 ;
while not eof do
begin
NowFathersxh:=FieldbyName('FatherSxh').asinteger;
//是否要重新查找父节点
if NowFatherSxh<>FatherSxh then
begin
loopi:=0;
while Pnode(treelook.items[loopi].data)^.sxh<>NowFatherSxh do inc(loopi);
Fathersxh:=NowFatherSxh;
FatherNode:=treelook.items[loopi];
end;
//生成节点数据 并作为其父亲的子节点加入
new(node0);
node0^.sxh:=fieldbyname('sxh').asinteger;
node0^.branchno:=fieldbyname('branchno').asstring ;
treelook.items.addchildobject(FatherNode,fieldbyname('nodename').asstring,node0);
next;
end ;
end;
end;





表结构
CREATE TABLE CODETREE (
SXH INTEGER NOT NULL,
FATHERSXH INTEGER,
SONNODE INTEGER,
NODENAME CHAR(40),
BRANCHNO CHAR(6),
TREELEVEL INTEGER DEFAULT 0 NOT NULL,
)
SXH是表的首键,

 
连跳两层循环,就得用GoTo的!
还有什么咱们程序员Delphi工资高不高,同楼主以及象我这样的
低手的水平无关吧!有关的应该是老板的黑手有多黑。
 
呵呵,这个问题还用讨论??
影响中,treeview好象用不着递归
这位大富翁WW老大是对的。
顺便问一个问题,这里是不是搞笑一点。
还有什么时代了,还用goto去跳转??
不是一定不能用,是可以不用就尽量不要用。
在上面这种情况下,个人觉得多余。
另:本人乃菜鸟一名,有不对的地方请各位富翁多多包涵。
 
递归是所有程序员必须掌握的,用它写出来的程序比较简洁,可是效率并不很高,过于复杂的递归,不易理解,而且还会堆栈溢出。所以我觉得并不一定使用递归,数据结构的书中不是说了吗,所有递归的程序都可以改造成非递归程序。向遍历Treeview,我觉得就没有必要使用递归。
 
用其他的条件绝对比goto 好
 
如果我向一個表增加記錄時,我怎麼在treeview中動態加載增加的記錄裡的幾個字段,如:
表(系,班,姓名,學號,性別,年齡,入學日期)我想在向表裡增加如下數據時
(計算機,五班,張紅,03b021,男,23,2002/03/05)時,也在treeview中增加象下面的結構:
+計算機
-五班
-張紅
同時結點展開,並顯示增加的此條數據的內容,我該怎麼做,請以上高人指教!並且點計算機時可以顯示全部計算機系的全部班級記錄,點五班時顯示全部學生姓名,點姓名時顯示個人資料,怎麼做?
 
看了这个帖子,我知道程序员工资下降的原因了。
没别的任何意思,只为表明自己多知道了点东西
 
to Yhhe 和楼上的各位‘高人’
我开此帖的目的是为了交流,我也并没有说我的好,只是为了看看别人的做法,
没碰到这么多的‘大富翁’说三道四之后并没有留下什么让我感动的东西,
我不是什么大富翁,我只是在有问题的时候想与大家交流一下,没想到看到的是楼上
一些高人的一张张嘴脸,你们真是高到不屑一顾了,除了费话连一点有用的东西也没留下。

我感谢楼上为我帖出代码的朋友,不过我要另开帖给那些只会说三道四的‘高人’加分
希望你们见谅。
 
使用
try
exit;//代替"goto ok"
finally
null;//--->代替"ok:null; //结束"
end;
 
干什么使的,用GOTO写程序还那么多的理由,真是气死人
 
goto有时候用一下还是有奇效的。
 
很久没上DFW了,现在怎么都变成这样了? :(

多花点时间优化自已的数据结构和程序框架吧,别为了那一点点所谓的“代码简练”、“XX技术”、“高效率代码”浪费时间,
再说如果你的系统效率太低(速度慢)我想数据库/系统架构的设计应占了绝大部分吧。

再说现在有良好代码风格的人实在是不多,这与代码的简练与否无关,有多少人敢说:半年后我再回头来看现在的系统代码能一目了然?
或者说别人来看我的代码能一目了然呢?
(以上纯属个人胡言乱语,大家也就胡乱看看吧)
 
顶部