powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Ftree - создание Node. Не могу создать Node "открытым".
10 сообщений из 10, страница 1 из 1
Ftree - создание Node. Не могу создать Node "открытым".
    #36422893
dennny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый, АЛЛ! Прошу помощи ввиду странной работы функции
ADD_TREE_NODE вопреки заявленной работе описанной в документации.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	v_new_root_node2 := FTREE.ADD_TREE_NODE
	(
		htree,
		v_new_root_node,
		FTREE.PARENT_OFFSET,
		FTREE.LAST_CHILD,
		FTREE.EXPANDED_NODE,
		'[' || people_rec.Id || '] ' ||
		people_rec.Lname || ' ' || people_rec.Fname || ' ' || people_rec.Mname ,
	  NULL, 
	  people_rec.Id
	 );

Параметр state = FTREE.EXPANDED_NODE - однако узел создается
в нужной ветке с верным родителем, но создается "закрытым".
В чем может быть хитрость ?
...
Рейтинг: 0 / 0
Ftree - создание Node. Не могу создать Node "открытым".
    #36423103
LEAF_NODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FTREE.LEAF_NODE

Ни в чём не уверен, но попробовать можно
...
Рейтинг: 0 / 0
Ftree - создание Node. Не могу создать Node "открытым".
    #36423127
dennny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все так же ноды создаются "закрытыми" или свернутыми.
...
Рейтинг: 0 / 0
Ftree - создание Node. Не могу создать Node "открытым".
    #36423152
LEAF_NODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня всё работает, использую
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
			if lnsub >  0  then -- добавление ветки
		   	new_node := ftree.add_tree_node(
		   		TmpTree,
		   		TmpNode,
		   		ftree.parent_offset,
		   		ftree.last_child,
		   		ftree.collapsed_node,
		   		next_rec.Alias,
		   		'',
		   		next_rec.ID   		
		   		);	
			else -- добавление листа
		   	new_node := ftree.add_tree_node(
		   		TmpTree,
		   		TmpNode,
		   		ftree.parent_offset,
		   		ftree.last_child,
		   		ftree.leaf_node,
		   		next_rec.Alias,
		   		'',
		   		next_rec.ID
		   		);	
			end if;

Обрати внимание Null и ''.
Сейчас попробую у себя NULL, посмотрю, что получится.
...
Рейтинг: 0 / 0
Ftree - создание Node. Не могу создать Node "открытым".
    #36423173
dennny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайдем с другого конца - как программно ОТКРЫТЬ некоторую ноду после её создания ?
Есть такая возможность изменит её state ?
...
Рейтинг: 0 / 0
Ftree - создание Node. Не могу создать Node "открытым".
    #36423179
LEAF_NODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поменял у себя на NULL и EXPANDED_NODE - стало плохо, как у тебя, отображается неправильно.
NULL и LEAF_NODE - работают правильно.
'' и LEAF_NODE - работают правильно.
...
Рейтинг: 0 / 0
Ftree - создание Node. Не могу создать Node "открытым".
    #36423200
LEAF_NODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После внесения изменений с целью тестирования твоих проблем код такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
PROCEDURE EXPAND_NODE(TmpTree Item /*default :SYSTEM.TRIGGER_ITEM*/,TmpNode ftree.node default :system.trigger_node)
IS
	

	ex_value varchar2( 255 ) := ftree.get_tree_node_property(TmpTree, TmpNode, ftree.node_value);
	new_node	ftree.node;	
	
	cursor next_level (TmpID number) is
		Select Id, Alias From APPS.XXT_MDM_ModelsTree_VW Where Parent = TmpID Order By Alias;
	cursor subs (TmpID number) is
		select count(ID) issub from APPS.XXT_MDM_ModelsTree_VW where Parent = TmpID; -- количество детей
		
	lnsub number;

BEGIN

	for next_rec in next_level(ex_value) loop
		
		new_node := ftree.find_tree_node(TmpTree, next_rec.ID, 
			ftree.find_next, ftree.node_value, 
			ftree.root_node, ftree.root_node);
			
		if ftree.id_null(new_node) then -- если узел ешо не добавлен

	   	open subs(next_rec.ID);
	   	fetch subs into lnsub;  	
	   	close subs;
		
			if lnsub >  0  then -- добавление ветки
		   	new_node := ftree.add_tree_node(
		   		TmpTree,
		   		TmpNode,
		   		ftree.parent_offset,
		   		ftree.last_child,
		   		ftree.collapsed_node,
		   		next_rec.Alias,
		   		Null,
		   		next_rec.ID   		
		   		);	
			else -- добавление листа
		   	new_node := ftree.add_tree_node(
		   		TmpTree,
		   		TmpNode,
		   		ftree.parent_offset,
		   		ftree.last_child,
		   		ftree.leaf_node,
		   		next_rec.Alias,
		   		Null,
		   		next_rec.ID
		   		);	
			end if;			
		end if;
	end loop;
  
END;
...
Рейтинг: 0 / 0
Ftree - создание Node. Не могу создать Node "открытым".
    #36423603
dennny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче проделал ПОИСК ноды после создания и её открытие вроде как

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
DECLARE
	htree ITEM;
	v_new_root_node FTREE.NODE;
        v_new_root_node2 FTREE.NODE;	
        find_node FTREE.NODE;	
  
	CURSOR c1 is
	select id,Lname,Fname,MName,DECODE(Parent_Id,NULL,'0',Parent_Id) Parent_Id from Peoples123 /*where Parent_ID is null*/ order by Id;
	
BEGIN

-- Отрисовка дерева подчинения сотрудников
htree := Find_Item('TREE_BLOCK.TREE');

-- Create a ROOT NODE for the tree.
v_new_root_node := FTREE.ADD_TREE_NODE
(
	htree,
	FTREE.ROOT_NODE,
	FTREE.PARENT_OFFSET,
	FTREE.LAST_CHILD,
	FTREE.EXPANDED_NODE,
	'#',
  '', '0');

-- Cursor for All peoples
FOR people_rec in c1 LOOP

	v_new_root_node := Ftree.Find_Tree_Node(htree, People_rec.Parent_Id, Ftree.FIND_NEXT,
                   Ftree.NODE_VALUE, Ftree.ROOT_NODE, Ftree.ROOT_NODE);
                   
	v_new_root_node2 := FTREE.ADD_TREE_NODE
	(
		htree,
		v_new_root_node,
		FTREE.PARENT_OFFSET,
		FTREE.LAST_CHILD,
		FTREE.EXPANDED_NODE,
		'[' || people_rec.Id || '] ' ||
		people_rec.Lname || ' ' || people_rec.Fname || ' ' || people_rec.Mname ,
	  '', 
	  people_rec.Id
	 );

 	FTREE.SET_TREE_SELECTION (people_rec.Id,v_new_root_node2,Ftree.SELECT_ON);
               
END LOOP;


- ругается циклически на каждую ноду и на невозможность определить референс на неё.
...
Рейтинг: 0 / 0
Ftree - создание Node. Не могу создать Node "открытым".
    #36423610
dennny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FRM-40105: Unable to resolve reference to item ... .
...
Рейтинг: 0 / 0
Ftree - создание Node. Не могу создать Node "открытым".
    #36439912
luchik_5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
раскрыть узел можно только тогда, когда у него есть потомки! Поэтому сначала придётся добавить потомков, а потом родителю выставить раскрытость
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Ftree - создание Node. Не могу создать Node "открытым".
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]