Código Delphi
[-]if tvLista.Items.Count = 0 then
Y lo de las imagenes, estas asignando siempre una imagen al mismo nodo, el primero de la lista, prueba con algo parecido a esto:
Código Delphi
[-]...
tnParentNode:=tvLista.Items.Add(nil,'Titulo 1');
tnParentNode.ImageIndex:=1;
...
tnParentNode:=tvLista.Items.Add(nil,'Titulo 2');
tnParentNode.ImageIndex:=5;
...
Y haciendo esto, estas creando solo nodos "PADRE", si quieres añadir un hijo a un nodo, debes usar algo parecido a esto:
Código Delphi
[-]var
tnParentNode: TTreeNode;
tnChildNode: TTreeNode;
begin
tnParentNode:=TreeView1.Items.Add(nil,'Titulo 1');
tnParentNode.ImageIndex:=5;
tnChildNode:=TreeView1.Items.AddChild(tnParentNode, 'Titulo 2');
tnChildNode.ImageIndex:=6;
Saludos.