因为节点不多,我手动添加了个treeview,不是动态从库里调的,然而这样的treeview用法我却没用过,点击节点触发时,select属性不起作用啊
一年级
一一班
一二班
一三班
二年级
二一班
二二班
三二班
三年级
三一班
三二班
三三班我把一一班,一二班,一三班到三三班的selected index分别设为0.1.2.3...9,现在要这样,左边是这个treeview,右边是一个pagecontrol,我想点哪个子节点就显示那个TabSheet在程序里用的时候点击第一个分类中(一年级)的3个节点,很正常,显示是TabSheet是对的,
但是点第二个和第三个分类时,比如二一班,显示的还是一一班的TabSheet,二二班,显示的也是一二班的TabSheet,不知道是怎么回事,
换句话说就是点第二个分类里的子节点,显示的是第一个分类里子节点的东西,请大家看一下我的代码错在哪里procedure TFormMain.TreeView1Change(Sender: TObject; Node: TTreeNode);
var i:integer;
begin
if not (TTreeView(Sender).Selected = NIL) then
begin
if TTreeView(Sender).Selected.HasChildren then
begin
//
end
else
begin
if not (TTreeView(Sender).Selected.Parent=NIL) then
if TTreeview(Sender).Selected.Index=0 then
for i:=0 to ComponentCount-1 do
begin
if components[i] is TTabSheet then
TTabSheet(Components[I]).TabVisible:=false; //隐藏其它的TabSheet,只显示TabSheet1
self.TabSheet1.TabVisible:=true;
end; if TTreeview(Sender).Selected.Index=1 then
for i:=0 to ComponentCount-1 do
begin
if components[i] is TTabSheet then
TTabSheet(Components[I]).TabVisible:=false; //隐藏其它的TabSheet,只显示TabSheet2
self.TabSheet2.TabVisible:=true;
end; if TTreeview(Sender).Selected.Index=2 then
for i:=0 to ComponentCount-1 do
begin
if components[i] is TTabSheet then
TTabSheet(Components[I]).TabVisible:=false;
self.TabSheet3.TabVisible:=true;
end;........................
if TTreeview(Sender).Selected.Index=8 then
for i:=0 to ComponentCount-1 do
begin
if components[i] is TTabSheet then
TTabSheet(Components[I]).TabVisible:=false;
self.TabSheet9.TabVisible:=true;
end; end;
end;
end;
一年级
一一班
一二班
一三班
二年级
二一班
二二班
三二班
三年级
三一班
三二班
三三班我把一一班,一二班,一三班到三三班的selected index分别设为0.1.2.3...9,现在要这样,左边是这个treeview,右边是一个pagecontrol,我想点哪个子节点就显示那个TabSheet在程序里用的时候点击第一个分类中(一年级)的3个节点,很正常,显示是TabSheet是对的,
但是点第二个和第三个分类时,比如二一班,显示的还是一一班的TabSheet,二二班,显示的也是一二班的TabSheet,不知道是怎么回事,
换句话说就是点第二个分类里的子节点,显示的是第一个分类里子节点的东西,请大家看一下我的代码错在哪里procedure TFormMain.TreeView1Change(Sender: TObject; Node: TTreeNode);
var i:integer;
begin
if not (TTreeView(Sender).Selected = NIL) then
begin
if TTreeView(Sender).Selected.HasChildren then
begin
//
end
else
begin
if not (TTreeView(Sender).Selected.Parent=NIL) then
if TTreeview(Sender).Selected.Index=0 then
for i:=0 to ComponentCount-1 do
begin
if components[i] is TTabSheet then
TTabSheet(Components[I]).TabVisible:=false; //隐藏其它的TabSheet,只显示TabSheet1
self.TabSheet1.TabVisible:=true;
end; if TTreeview(Sender).Selected.Index=1 then
for i:=0 to ComponentCount-1 do
begin
if components[i] is TTabSheet then
TTabSheet(Components[I]).TabVisible:=false; //隐藏其它的TabSheet,只显示TabSheet2
self.TabSheet2.TabVisible:=true;
end; if TTreeview(Sender).Selected.Index=2 then
for i:=0 to ComponentCount-1 do
begin
if components[i] is TTabSheet then
TTabSheet(Components[I]).TabVisible:=false;
self.TabSheet3.TabVisible:=true;
end;........................
if TTreeview(Sender).Selected.Index=8 then
for i:=0 to ComponentCount-1 do
begin
if components[i] is TTabSheet then
TTabSheet(Components[I]).TabVisible:=false;
self.TabSheet9.TabVisible:=true;
end; end;
end;
end;
TTreeview(Sender).Selected.SelectedIndex这样就可以得到你定义的那个值了。
给你写了一个简单的例子,把你的
一一班,一二班,一三班,二一班,二二班,二三班,三一班,三二班,三三班的SelectedIndex的值依次写为0,1,2,3,4,5,6,7,8
把PageControl中的TabSheet名字依次改为TabSheet0,TabSheet1,TabSheet2,TabSheet3,TabSheet4,TabSheet5,TabSheet6,TabSheet7,TabSheet8
然后按照下面的代码写就可以了unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ImgList;type
TForm1 = class(TForm)
TreeView1: TTreeView;
PageControl1: TPageControl;
TabSheet0: TTabSheet;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
TabSheet6: TTabSheet;
TabSheet7: TTabSheet;
TabSheet8: TTabSheet;
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if Assigned(FindComponent('TabSheet'+IntToStr(TreeView1.Selected.SelectedIndex))) then
PageControl1.ActivePage:=TTabSheet(FindComponent('TabSheet'+IntToStr(TreeView1.Selected.SelectedIndex)));
end;end.
直接用这里的参数Node来处理,如:
if Node.Index= 0 then
...