powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужен совет опытного человека
22 сообщений из 22, страница 1 из 1
Нужен совет опытного человека
    #32164013
РусланVFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста решить следующий вопрос:

Мне нужно на форме отображать данные в виде дерева. Данные представлены в таком виде:

table1

поля:
int i_id1
char c_name

ключи

ID1- primary- от i_id



table2

поля:
int i_id2
int i_partition
char c_name

ключи

ID2- primary- от i_id2
ID_PART - regular - от i_partition




table3

поля:

int i_id3
int i_subpartition
char c_name

ключи

ID3- primary- от i_id3
ID_SUBPART - regular -от i_subpartition

Таблицы связаны по ключам :

ID1<->ID_PART ,

ID2<->ID_SUBPART


Пробовал класс InGrid, но что то он у меня глючит. До одного момента работает все отлично, но потом вдруг данные из таблиц вообще перестают отображаться в Гридах.

Заранее благодарен.
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #32164157
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А объект TreeView - не подойдет?

Что это такое и азы работы с ним можешь почитать здесь

http://kodu.neti.ee/~juri4/vfpplus/ax_treeview_ru.htm
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #32164499
РусланVFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но в нем нету поиска по записям, как, например, в том же Ingrid'e, а хотелось бы. Неужели все пользуются TreeView'ом?
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #32164954
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "поиск по записям"? И кстати, что за класс "InGrid"?

Организовать позиционирование указателя в TreeView на нужный узел достаточно просто. Только начинать надо с уяснения того, что именно ты хочешь получить.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Нужен совет опытного человека
    #38189493
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМА объект TreeView - не подойдет?

Что это такое и азы работы с ним можешь почитать здесь

http://kodu.neti.ee/~juri4/vfpplus/ax_treeview_ru.htm

Ссылка не рабочая..:-((
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38189561
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1ВладимирМА объект TreeView - не подойдет?

Что это такое и азы работы с ним можешь почитать здесь

http://kodu.neti.ee/~juri4/vfpplus/ax_treeview_ru.htm

Ссылка не рабочая..:-((

ActiveX компонент TreeView. Часть 1. Введение.
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190787
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не получается..
"...из системного меню VFP Tools пункт Component Gallery. Откроется окно "Catalogs - Component Gallery". В левом фрейме окна имеется дерево, в котором нужно развернуть узел ActiveX Catalog (если он свернут, разумеется). "

Как найти этот узел?

...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190805
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1Как найти этот узел?
На форме добавляешь OLE, показываешь мышкой координаты, появляется выбор объекта, выбираешь "Microsoft TreeView control 6.0"
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190806
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но я хотел пройти по статье Ю. Шутенко. и остановился на том, что в Component Gallery, у меня нет дерева объектов.... , вот и пытаюсь найти это дерево..:-)
Если я буду следовать Вашим советам,

то мне всё время прийдется спрашивать у вас, и вам это когда-нибудь надоест..:-)
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190815
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Способом из статьи никогда не пользовался, попробовал, у меня там не пусто, но дерева там нет.
Ошибки как у тебя тоже не видел никогда.
Поступим проще, в архиве форма с treeview. Скопируй с нее куда надо.
Если не откроется - значит сам контрол отсутствует на твоем компе
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190819
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пошаговая инструкция с картинками :)
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190820
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо. скорей всего надо начинать статью с проверки установлен ли этот контрол или нет, потом установка этого контрола и работа с этим контролом..:-)
У меня скорей всего этот контрол не установлен, вот теперь остановился на установке этого контрола...
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190821
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы он был не установлен, то вышло бы окно выбора файла с этим контролом. Так что все у тебя установлено.
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190824
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь примеры фоксовские посмотреть. В папке фокса подпапка Samples\Solution\ запусти solution.app
там ActiveX - ActiveX Control - Add and Remove items from treeview
там же исходники примеров.
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190828
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за пошаговую инстукцию...сейчас буду разбирать примеры...
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38190925
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ещё разбираюсь с прмерами... но возник вопрос, какой максимальный объем записей при заполнении treeview, чтоб он более-менее работал нормально... или дочернии узлы можно заполнять "на лету"
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38191002
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1Я ещё разбираюсь с прмерами... но возник вопрос, какой максимальный объем записей при заполнении treeview, чтоб он более-менее работал нормально... или дочернии узлы можно заполнять "на лету"
Заполнение нескольких тысяч записей сильно тормозит.
Я так делал для больших деревьев: заполняется только первый уровень. Чтобы показать что внутри уровня есть подуровни - в него добавлялся "спец. узел" (чтобы знак "+" показался для разворачивания). Когда пользователь разворачивает нужный элемент проверяется наличие этого "спец. узла", если есть - заполняется реальными данными.
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38191057
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно можно разобраться, но что-то уже мозг не вникает..., может подскажете, какое событие в примере( Samples\Solution\ запусти solution.app там ActiveX - ActiveX Control - Add and Remove items from treeview) реализовано, что проходя по дереву, наименование отображается в Label, как это реализовать..., т.е. что мне надо, проходя по справочнику групп, я беру из key ветки дерева id этой группы и показываю записи с этим ID в гриде
По аналогии в гриде метод AfterRowColChange..
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38191634
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1Конечно можно разобраться, но что-то уже мозг не вникает..., может подскажете, какое событие в примере(
Давно дерево не использовал, для моих задач проще в гриде извернуться.
вот как я делал когда-то
метод oleTree.Expand()
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
LPARAMETERS node
node.selected=.t.
lcKey=thisform.oleTree.selecteditem.key
if lcKey="k"
	thisform.oleTree.selecteditem.key="i"+substr(lcKey,2)
	ThisForm.oleTree.nodes.remove("c"+substr(lcKey,2))
	sele xtree
	scan for nParentId=val(substr(lcKey,2))
		thisform.AddNode(nXtreeId)
	endscan
	thisform.oleTree.click
endif


логика такая:
key состоит из буквы-префикса и ID таблицы (xtree)
префиксы
"k" - незагруженная ветка, внутри одноименный элемент с префиксом "с"
"i" - загруженная ветка

thisform.AddNode(nXtreeId) - добавление узла
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
lpara lnXtreeId
local lnRe
sele xtree
lnRe=recno()
if xtree.nXtreeId#lnXtreeId
	seek lnXtreeId in xtree order nXtreeId
endif
lnParentId=nParentId
llCh=indexseek(lnXtreeId,.f.,'xtree','nParentId')
go lnRe
lcNodeKey=iif(llCh,"k","i")+alltr(str(lnXtreeId))
ThisForm.oleTree.nodes.add("i"+iif(!empty(xtree.nParentId),alltr(str(xtree.nParentId)),'----'),4,lcNodeKey,'',thisform.geticon())
ThisForm.SetNodeText(lcNodeKey)
if llCh
	ThisForm.oleTree.nodes.add("k"+alltr(str(lnXtreeId)),4,"c"+astr(lnXtreeId),"",thisform.geticon())
endif


Если не разберешься - пиши попробую это в отдельный пример собрать.
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38191675
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И сам вывод всего остального по выбранному узлу в грид или еще куда
oleTree.Click()
Код: sql
1.
this.nodeclick()


oleTree.NodeClick()
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
LPARAMETERS node
lcKey=substr(This.SelectedItem.Key,2)
if lcKey#"----"
	seek in xtree val(lcKey) order nXtreeId
	...
else
	...
endif
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38192579
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, только что заглянул, сейчас отработаю....
...
Рейтинг: 0 / 0
Нужен совет опытного человека
    #38194974
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПоступим проще, в архиве форма с treeview. Скопируй с нее куда надо.
Если не откроется - значит сам контрол отсутствует на твоем компе

Классы создаются не копированием с формы на форму:

Menu-File-New-Class-New file
В открывшемся окне:
Class Name - имя класса
Based On - Ole Control
Store In - имя .vcx
В открывшемся окне - Control Type.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужен совет опытного человека
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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