首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求解决点二级科目不出现相应二级名的有关问题(TreeView控件)

2012-05-30 
求解决点二级科目不出现相应二级名的问题(TreeView控件)问题:TreeView科目树一点击一级科目,就在Edit1中显

求解决点二级科目不出现相应二级名的问题(TreeView控件)
问题:TreeView科目树一点击一级科目,就在Edit1中显示其下的二级科目的最后一个名称。再点二级科目就没有反应了。就是说,只有点击一级科目,才出二级科目(出来的二级科目也仅是二级本类别下的最后一个二级名称),点二级科目,在Edit1中不显示相应二级名称(目的就是想显示二级名称,想在点击二级科目是显示相应二级名称)。为什么只能点击一级科目才出二级名称(出最后一个二级名)、而点二级没有作用?请高手分析一下原因。代码如下:

  with adopian2 do
  begin
  Close;
  SQl.Clear;
  SQL.Add('select * from zu1 where 省份= :a order by 地区');
  Parameters.ParamByName('a').Value:= treeview1.Selected.Text; ;
  Open;
  end;

  if (adopian2.RecordCount>0)and(Treeview1.Selected <> Nil) then
  Edit1.Text := adopian2.Fieldbyname('地区').AsString ;

我想解决:
  如何做到 只有在点击哪个科目名称时才在Edt1中显示相应名称,如:
  1)江苏 //点此,则Edit1不显示
  11)南京 //点此,则Edit1=南京
  12)徐州 //点此,则Edit1=徐州
  2)河南 //点此,则Edit1不显示
  21)郑州 //点此,则Edit1=郑州
  22)洛阳 //点此,则Edit1=洛阳
---------附 载入窗体时代码:
procedure TfrmUWaterQftzd.FormShow(Sender: TObject);
begin
  with adopian1 do
  begin
  Close;
  SQl.Clear;
  SQL.Add('select * from pian1');
  Open;
  end;
  adopian1.First ;
  while not adopian1.Eof do
  begin
  //添加根节点
  node2:= TreeView1.Items.Add(node1,adopian1.FieldByName('省份').AsString) ;
  with adopian2 do
  begin
  Close;
  SQl.Clear;
  SQL.Add('select * from zu1 where 省份 = :a order by 地区');
  Parameters.ParamByName('a').Value:=adopian1.FieldByName('省份').AsString;
  Open;
  end;
  adopian2.First ;
  while not adopian2.Eof do
  begin
  node2.ImageIndex := 1;
  //添加子节点
  TreeView1.Items.AddChildFirst(node2,adopian2.fieldbyname('地区').asstring) ;
  adopian2.next;
  end;
  adopian1.next;
  end;
end;

[解决办法]
直接从树中取Text,而不是去重新查询

Delphi(Pascal) code
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);var  fNode:TTreeNode;begin  fNode:=TreeView1.GetNodeAt(X,Y);  if fNode<>nil Then     Edit1.Text:=fNode.Text;end; 

热点排行