Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Ftree - создание Node. Не могу создать Node "открытым". / 10 сообщений из 10, страница 1 из 1
21.01.2010, 14:20
    #36422893
dennny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать Node "открытым".
Уважаемый, АЛЛ! Прошу помощи ввиду странной работы функции
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
21.01.2010, 15:18
    #36423103
LEAF_NODE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать Node "открытым".
FTREE.LEAF_NODE

Ни в чём не уверен, но попробовать можно
...
Рейтинг: 0 / 0
21.01.2010, 15:26
    #36423127
dennny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать Node "открытым".
Все так же ноды создаются "закрытыми" или свернутыми.
...
Рейтинг: 0 / 0
21.01.2010, 15:32
    #36423152
LEAF_NODE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать 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
21.01.2010, 15:35
    #36423173
dennny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать Node "открытым".
Зайдем с другого конца - как программно ОТКРЫТЬ некоторую ноду после её создания ?
Есть такая возможность изменит её state ?
...
Рейтинг: 0 / 0
21.01.2010, 15:38
    #36423179
LEAF_NODE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать Node "открытым".
Поменял у себя на NULL и EXPANDED_NODE - стало плохо, как у тебя, отображается неправильно.
NULL и LEAF_NODE - работают правильно.
'' и LEAF_NODE - работают правильно.
...
Рейтинг: 0 / 0
21.01.2010, 15:44
    #36423200
LEAF_NODE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать 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
21.01.2010, 17:45
    #36423603
dennny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать 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.
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
21.01.2010, 17:48
    #36423610
dennny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать Node "открытым".
FRM-40105: Unable to resolve reference to item ... .
...
Рейтинг: 0 / 0
30.01.2010, 10:18
    #36439912
luchik_5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftree - создание Node. Не могу создать Node "открытым".
раскрыть узел можно только тогда, когда у него есть потомки! Поэтому сначала придётся добавить потомков, а потом родителю выставить раскрытость
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Ftree - создание Node. Не могу создать Node "открытым". / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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