这是事件代码:procedure TForm1.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
var
s1,s2:string;
node1:ttreenode;
begin
    {要去掉原来的假装子节点的空格值}
    //showmessage(node.Item[0].text);
  if trim(node.Item[0].Text)='' then
  begin //也就是说执行一次之后就有记录在那里了,你要是没有这个begin end限制的话会再在下面添加一模一样的记录。这是不需要触发执行的。
    node.Item[0].delete;    s1:=copy(node.Text,1,posex('_',node.Text,1)-1); //从第一个位置找,找到‘——’前面的位置为止。
   //showmessage(s1);
    adoquery1.Close;
    adoquery1.SQL.Text:='select * from sys_menu where parentnodeid=:p1 ';
    adoquery1.Parameters.ParamByName('p1').Value:=s1;
    adoquery1.open;    while not adoquery1.Eof do
    begin
      s1:=trim(adoquery1.FieldByName('menuID').asstring);
      s2:=trim(adoquery1.FieldByName('menutitle').AsString);
      node1:=treeview1.Items.AddChild(node,s1+'_'+s2);      if (adoquery1.FieldByName('isparentflag').asinteger=1) then
        begin
        treeview1.Items.AddChild(node1,s1+'_'+s2);
        end;
        adoquery1.Next;    end;
  end;
end;这是代码做出来的效果:也就是说第三层不对。
是不是因为treeview1.item[0].text=''这个判断的原因、?
要怎么改?