————————————我帮您总结一下以上几位高手的答案————————————1)窗体中加两个imagelist如imagelist1,imagelist2,并为其加入各显示状态下的图标(也可程序加载)。2)将TreeVIew的images属性设成imagelist1;stateimages属性设为imagelist2;3)在动态创建TreeNode时就设定各图标(而不必在OnClick事件中去干这种勾当)。 with Tvw.items.add('指定节点名','新建节点名') do begin imageindex:=0;//常态下的图标索引——这里调用imagelist1中的图标 selectedIndex:=1;//选取状态下的图标索引——这里调用imagelist1中的图标 stateIndex:=0;//这里调用imagelist2中的图标 end;————————————————————————————————————
我去试试,不过综合以上意见,我觉得只有newmanJB(布衣侠客)的第3)条意见能派上用 场。
for i := 0 to treeview1.items.count - 1 do treeview1.items[i].imageindex := 0; //全部设置成ImageList1中的图标0 for i := 0 to treeview1.items.count - 1 do treeview1.items.selectedIndex := 1;//设置选取状态为ImageList1中的图标1
—— mengbo(心有独钟)的方法好啊,这样集中一处管理方便快捷,易于维护。 ————
procedure Tform1.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode); begin with Node do if HasChildren then if Expanded then ImageIndex:=17 else ImageIndex:=16 else ImageIndex:=19; //Node.ImageIndex:=14; end;procedure Tform1.TreeView1GetSelectedIndex(Sender: TObject; Node: TTreeNode); begin with Node do if HasChildren then SelectedIndex:=ImageIndex else SelectedIndex:=18; end;
TreeView1.Selected.imageindex :=1;
imageindex:=1
stateindex:=1也要加上
如果要求点击时图标改变,设置SelectedIndex,比如SelectedIndex:=0;
如果要求点击时不改变图标那么SelectedIndex:=ImageIndex;
begin
imageindex:=0;//常态下的图标索引——这里调用imagelist1中的图标
selectedIndex:=1;//选取状态下的图标索引——这里调用imagelist1中的图标
stateIndex:=0;//这里调用imagelist2中的图标
end;————————————————————————————————————
场。
treeview1.items[i].imageindex := 0; //全部设置成ImageList1中的图标0
for i := 0 to treeview1.items.count - 1 do
treeview1.items.selectedIndex := 1;//设置选取状态为ImageList1中的图标1
mengbo(心有独钟)的方法好啊,这样集中一处管理方便快捷,易于维护。
————
Node: TTreeNode);
begin
with Node do
if HasChildren then
if Expanded then
ImageIndex:=17
else
ImageIndex:=16
else
ImageIndex:=19;
//Node.ImageIndex:=14;
end;procedure Tform1.TreeView1GetSelectedIndex(Sender: TObject;
Node: TTreeNode);
begin
with Node do
if HasChildren then
SelectedIndex:=ImageIndex
else
SelectedIndex:=18;
end;