FTree - Selecionar Child

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
rrricci
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qua, 09 Jan 2008 10:46 am
Localização: SP

Olá galera, tenho uma árvore com diversos nós. Quando eu seleciono(2 cliques) um nó eu excuto o comando abaixo para alterar o ícone dele:

Selecionar tudo

v_node_value := ftree.get_tree_node_property('v_tree2', :SYSTEM.TRIGGER_NODE, Ftree.NODE_VALUE);

Ftree.Set_Tree_Node_Property('v_tree2', v_node_value, Ftree.NODE_ICON, 'icone_marcado');
O que eu quero fazer é quando eu clicar num nó "pai", o sistema automaticamente selecionar(trocar o ícone) de todos os nós filhos daquele nó.

Alguém poderia me ajudar?

Obrigado,

Renato[/code]
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Acho que você terá que abrir um CURSOR com todos nós filhos e executar manualmente um por um o comando pra trocar o icone.
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Segue um exemplo para navegar pelos filhos de um nó na árvore, partido de um determinado nó selecionado:

Selecionar tudo

declare
  htree     ITEM;  
  find_node FTREE.NODE; 
  v_nivel   number(8);
begin
  htree := FIND_ITEM('B0.ARV');  

  if id_null(htree) then
  	message('Item não existe...');
  	raise form_trigger_failure;
  end if;
  
  -- Posiciona o cursor no nó selecionado.(Assumindo que só é possível selecionar um nó na árvore...)
	find_node := ftree.get_tree_selection(htree);
	
	-- Atualiza o ícone do nó selecionado
	ftree.set_tree_Node_property('B0.ARV', find_node, ftree.node_icon, 'icone_novo');

	v_nivel   := ftree.get_tree_node_property(htree, find_node, ftree.node_depth);
	
	loop

		find_node := FTREE.FIND_TREE_NODE
		( htree
		, ''
		, FTREE.FIND_NEXT
		, FTREE.NODE_LABEL
		, FTREE.ROOT_NODE
		, find_node
		);

		exit when ftree.id_null(find_node)
		       or ftree.get_tree_node_property(htree, find_node, ftree.node_depth) <= v_nivel;
	
		message('Encontrou um filho: '||ftree.get_tree_node_property(htree, find_node, ftree.node_label)
		||' no nível '||ftree.get_tree_node_property(htree, find_node, ftree.node_depth)
		);
		
		-- Atualiza o ícone do nó filho
		ftree.set_tree_Node_property('B0.ARV', find_node, ftree.node_icon, 'icone_novo');
		
	end loop;

end;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes