powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Деревянный каталог
11 сообщений из 11, страница 1 из 1
Деревянный каталог
    #33522151
S_Fandey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как возможно связать в дереве объекты из разных таблиц. Так что бы родительский объект находился в одной таблице, а дочерний в другой.
Дерево в свою очередь чтобы имело около 5-7 уровней с возможностью копирования объекта.
...
Рейтинг: 0 / 0
Деревянный каталог
    #33522165
S_Fandey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите чайнику апологеты Фокса. Пожайлуста!!!!
...
Рейтинг: 0 / 0
Деревянный каталог
    #33522240
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
таблицы сюда киньте и
нарисуйте, что Вы желаете увидеть
...
Рейтинг: 0 / 0
Деревянный каталог
    #33523332
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi S_Fandey!

Дерево и так и так заполняется вручную - потому как вы напишете код
заполнения, так оно и будет - и совершенно никакой разницы нет заполняется
оно из одной таблицы, или из 10-ти.
Аналогично и для всего прочего - нет никаких таких специальых функций в
дереве ни для копирования, ни даже для простого перетакивания - всё это
реализуется руками - причём так как это нужно для конкретной задачи.
И наконец простой совет - начинать нужно с малого - изучить как вообще
работает дерево, как оно заполняется, какие там события происходят... Благо
материалов хватает - стоит лишь поискать.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Деревянный каталог
    #33523377
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
PUBLIC oform1

oform1=NEWOBJECT("form1")
oform1.Show
RETURN

DEFINE CLASS form1 AS form
	Top =  0 
	Left =  0 
	Height =  305 
	Width =  388 
	DoCreate = .T.
	Caption = "Net Tree"
	Icon = (_Screen.Icon)
	enabledrag = .F.
	onode = .NULL.
	Name = "Form1"
	indrag = .F.

	ADD OBJECT tree AS olecontrol WITH ;
		DragIcon = "images\dragmove.cur", ;
		Top =  0 , ;
		Left =  0 , ;
		Height =  206 , ;
		Width =  281 , ;
		Name = "Tree"


	ADD OBJECT images AS olecontrol WITH ;
		Top =  265 , ;
		Left =  0 , ;
		Height =  100 , ;
		Width =  100 , ;
		Name = "Images"

	PROCEDURE loadnode
		Lparameters m.parentid
		With this
			Local o, tmp[ 1 ], m.id
			Select * from NetTree where parentid=m.parentid into cursor _
			If _TALLY >  0 
				Scan all
					.Tree.Nodes.Add(m.parentid, 4 ,id,name,NodeType)
					m.id=id
					select count(*) from NetTree where ParentId=m.Id into array tmp
					If TMP[ 1 ]> 0 
						o=.Tree.Nodes.Add(m.id, 4 ,,)
						o.Tag='~'
					EndIf
				EndScan 
			EndIf
			USE in _
		EndWith
	ENDPROC

	PROCEDURE makevisible
		Lparameters m.id
		With this
			Local tmp[ 1 ], tmpcount, oNode, m.ParentID
			Select NetTree
			Locate for ID=m.ID 
			If Found()
				Dimension tmp[ 1 ]
				tmpCount= 0 
				m.ParentId=ParentID
				DO While Found()
					tmpCount = tmpCount +  1  
					Dimension tmp[tmpCount]
					Tmp[tmpCount]=ID
					If Type(".Tree.Nodes.Item(id)")='O' 
						Exit
					Else
						m.ParentID=ParentID
						Locate for ID=m.ParentID
					EndIf
				EndDo
				For i=tmpCount to  1  step - 1 
					Select NetTree
					Locate for Id=TMP[i]
					oNode=.Tree.Nodes.Item(id)
					.Tree.Expand(oNode)
				Next
				oNode.EnsureVisible()
				.Tree.SelectedItem=oNode
			EndIf
		EndWith
	ENDPROC

	PROCEDURE Init
		With this
			Select NetTree
			Go TOP
			.Tree.ImageList=.Images.Object
			.Tree.Nodes.Add(, 0 ,id,"Acme Network", 5 , 5 )
			.LoadNode(id)

			.Resize()

		EndWith
	ENDPROC

	PROCEDURE Resize
		With this
			.Tree.Width=.Width
			.Tree.Height=.Height
		EndWith
	ENDPROC

	PROCEDURE tree.Expand
		*** ActiveX Control Event ***
		LPARAMETERS node
		With this
			If Node.Children >  0 
				If Node.Child.Tag='~'
					Local m.Index
					m.Index=Node.Child.Index
					This.Nodes.Remove(m.index)
					This.parent.LoadNode(Node.Key)
				EndIf
			EndIf
		EndWith
	ENDPROC

	PROCEDURE tree.MouseDown
		*** ActiveX Control Event ***
		LPARAMETERS button, shift, x, y
		If button= 1  and ThisForm.EnableDrag 
			ThisForm.onode=This.SelectedItem 
		EndIf
	ENDPROC

	PROCEDURE tree.MouseMove
		*** ActiveX Control Event ***
		LPARAMETERS button, shift, x, y
		If Button= 1 
			If ThisForm.EnableDrag
				If Not ThisForm.oNode.Key='__________'
					ThisForm.Indrag=.T.
					This.Drag( 1 )
				EndIf
			EndIf
		EndIf
	ENDPROC

	PROCEDURE tree.NodeCheck
		*** ActiveX Control Event ***
		LPARAMETERS node

		this.Object.Enabled=.F.

		IF node.checked=.f. && Крыжик убираем - обычный шрифт и "-" в тексте
			node.Bold=.f.
			node.text=node.text+' -'
		ELSE && Крыжик добавляем - жирный шрифт и "+" в тексте
			node.Bold=.t.
			node.text=node.text+' +'
		ENDIF 
		this.Object.Enabled=.T.
	ENDPROC


	PROCEDURE tree.DragDrop
		LPARAMETERS oSource, nXCoord, nYCoord
		If IsNull(This.DropHighlight)
			thisform.indrag=.F.
		Else
			If ThisForm.oNode=This.DropHighlight
			Else
				If Type("ThisForm.oNode.Parent")="O" ;
				and Not IsNull(ThisForm.oNode.Parent) 

					Local m.Id, m.ParentID

					Select NetTree
					Locate for Id=ThisForm.oNode.Key
					If Found()
						Replace ParentID with This.DropHighlight.Key
						ThisForm.oNode.Parent=This.DropHighlight
					EndIf
				EndIf
				thisform.indrag=.F.
				this.DropHighlight=.NULL.
			EndIf
		EndIf
	ENDPROC

	PROCEDURE tree.DragOver
		LPARAMETERS oSource, nXCoord, nYCoord, nState
		If ThisForm.indrag 
			Local x,y, o
			x=nXCoord-This.Left
			y=nYCoord-This.Top
			This.DropHighlight=This.HitTest(x* 15 , y* 15 )

			If Vartype(This.DropHighlight)="O" ;
				and not IsNull(This.DropHighlight)

				If This.DropHighlight.Children >  0  ;
				and Not This.DropHighlight.Expanded 

					This.Expand(This.DropHighlight)
					This.DropHighlight.Expanded=.T.

				EndIf
			EndIf
		EndIf
	ENDPROC

ENDDEFINE
...
Рейтинг: 0 / 0
Деревянный каталог
    #33527321
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi piva!

Не виснит закрытие формы по причине неразгружаемого нигде Form.oNode ?
Кстати поленился оформить пример чтоб он по Copy'n'Paste заработал :( А
всего-то и надо было описать olecontrol классы отдельно с указанием ProgId,
картинки в ImageList кодом напихать - скажем из Home(4), да тестовый курсор
на пяток записей сварганить...
А код на досуге сравню с тем что у меня накропано - я кстати сам Node не
сохраняю нигде - тока его Key :) И автозагрузку свёрнутых узлов при
Drag'n'Drop тоже не делал - зато делал "прокрутку" при нахождении курсора
вблизи верхнего или нижнего краёв контрола... Ну и коэффициенты перевода
твипов в пиксели (15) я считаю в Init дерева и сохраняю в его свойствах -
бывает что используют люди "большие" темы и там коэффициент будет другой...

Блин, давно вот зреет мысль сделать более-менее универсальный класс дерева -
т.е. вынести в свои понятные методы возможные действия - ну там CanDragNode,
CanDropNode, DoDragDrop, AddNode, NavigateToNode, FindInTree,
FindInCursor... Ну конечно завязать всё это по дефолту на одной простой
структуре курсора - чтоб среднестатистическое дерево можно было за пять
минут делать - указать пару свойств, прописать если надо пару "добавчиков" к
стандартно уже прописанным методам и вперёд...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Деревянный каталог
    #33527381
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь - это просто заготовка для работы была - пробовал drag'ать узлы - только до реальной реальзации так дело и не дошло - оказались другие работы важнее - а сюда выложил просто в качестве примера, который просил автор темы. Хотя наверное сначала автору было бы неплохо почитать статьи Юры Шутенко про treeview
...
Рейтинг: 0 / 0
Деревянный каталог
    #33537314
S_Fandey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот рисунок организации католога
...
Рейтинг: 0 / 0
Деревянный каталог
    #33537384
S_Fandey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот фрагмент базы данных работающей с деревом катологизатора
С меня сто грамм и пончик
...
Рейтинг: 0 / 0
Деревянный каталог
    #33539232
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi piva!

А, ну тогдя понятно...
Кстати вот очередная фишка дерева - Пишем в Expand event код по "подгрузке
уровня" - т.е. динамическое заполнение делаем - а оказывается этот код не
всегда вызывается!!! Если активировать Shortcut меню, а потом сразу (не
закрывая его отдельно) давить на "плюсик" для раскрытия узла, событие Expand
не срабатывает :(
Пришлось для фиктивных узлов-заглушек (ну те которые помогают вывести
"плюсик") писать осмысленный текст - типа "Надави на этот узел чтобы увидеть
реальные данные", и текст ставить серым (слегка блеклым) цветом - ну а уж в
NodeClick добавить вызов Expand для Parent - узла, ежели тиснули по этой
страшной заглушке :)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Деревянный каталог
    #33545537
S_Fandey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Всем Вам за ваши ответы и время уделённое мне!!!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Деревянный каталог
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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