我是在建立TreeView各个Node的时候给Node.ImageIndex赋的值,但是TreeView显示之后通过鼠标的点击,图标就会变来变去的不明白为什么代码大概如下,请各位高手指点,谢谢!while Not TempADOQ.Eof do
begin
if Prelvl=TempADOQ.FieldByName('LEVEL').AsInteger then
begin // Sibling
Node:=TempTree.items.Add(Node,TempADOQ.Fieldbyname('sitemcd').AsString);
end else
begin
if Prelvl<TempADOQ.FieldByName('LEVEL').AsInteger then
begin // Child
Node:=TempTree.items.AddChild(Node,TempADOQ.Fieldbyname('sitemcd').AsString);
end else
begin // Parent
while Node.Level <> TempADOQ.FieldByName('LEVEL').AsInteger do
Node:=Node.Parent;
Node:=TempTree.items.Add(Node,TempADOQ.Fieldbyname('sitemcd').AsString);
end;
end;
Prelvl:=TempADOQ.FieldByName('LEVEL').AsInteger;
Node.StateIndex:=TempADOQ.Fieldbyname('rownum').AsInteger;
case TempADOQ.FieldByName('mitemdiv').AsInteger of
1: Node.ImageIndex:=0;
2: Node.ImageIndex:=1;
4: Node.ImageIndex:=2;
end;
TempADOQ.Next;
end;
begin
if Prelvl=TempADOQ.FieldByName('LEVEL').AsInteger then
begin // Sibling
Node:=TempTree.items.Add(Node,TempADOQ.Fieldbyname('sitemcd').AsString);
end else
begin
if Prelvl<TempADOQ.FieldByName('LEVEL').AsInteger then
begin // Child
Node:=TempTree.items.AddChild(Node,TempADOQ.Fieldbyname('sitemcd').AsString);
end else
begin // Parent
while Node.Level <> TempADOQ.FieldByName('LEVEL').AsInteger do
Node:=Node.Parent;
Node:=TempTree.items.Add(Node,TempADOQ.Fieldbyname('sitemcd').AsString);
end;
end;
Prelvl:=TempADOQ.FieldByName('LEVEL').AsInteger;
Node.StateIndex:=TempADOQ.Fieldbyname('rownum').AsInteger;
case TempADOQ.FieldByName('mitemdiv').AsInteger of
1: Node.ImageIndex:=0;
2: Node.ImageIndex:=1;
4: Node.ImageIndex:=2;
end;
TempADOQ.Next;
end;
1: Node.ImageIndex:=0;
2: Node.ImageIndex:=1;
4: Node.ImageIndex:=2;
end;为何不用
case treeview.curNode.level of
0:
1:
2:
3:
end
1:
begin
Node.ImageIndex:=0;
Node.SelectedIndex:=0;
end;
end;
设置SelectedIndex同你的imageIndex一致,或您想要的图标