|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Дана база data1.dbc, в ней таблица table1.dbf, в таблице поля id, znachenie, info. Дана форма ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2014, 13:28 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Я на это сайтике почитал http://kodu.neti.ee/~juri4/vfpplus/ax_treeview_03_ru.htm но как привязать поля с таблицы вообще не понял.... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2014, 13:29 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Claymore, ну стандартное же дерево - {id, parentid , данные_узла} ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2014, 13:32 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Есть ли еще какое нибудь пошаговое создание базы данных в treeview foxpro??? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2014, 13:35 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Claymore, А при чём тут ole контрол и создание БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2014, 13:58 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
IgorNG, Сейчас попытаюсь объяснить всё) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2014, 14:02 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Вот как бы самое начало чет прописал: ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2014, 14:10 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Я увидел что ты тренируешься. Лох. Скажи свою фамилию, чтобы такого дибила на работу не брать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2014, 20:00 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
P-232Я увидел что ты тренируешься. Лох. Скажи свою фамилию, чтобы такого дибила на работу не брать. Ну зачем же так оскорбительно? Человек учится. Правда, лучше бы он для начала литературу почитал, чтоб не выглядеть смешным. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2014, 21:07 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
P-232, Ты где живешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2014, 08:43 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
IgorNG, Извини, что смешно выгляжу (V_V) прост, читал я литературу и чет, но как говорится, смотрю в книгу вижу фигу( ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2014, 08:44 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Claymore, Treeveiw - это контрол на форме, который отображает какие-то данные (чаще всего из таблицы). При чем здесь создание базы данных - непонятно. Лучше формулируй свои вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2014, 12:12 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
IgorNG, Да правильно, извини, что неграмотно выразился насчет БД, да я наверн попытаюсь сам разобраться в этом treeview, спасибо что не остаешься равнодушным))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2014, 12:26 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Claymore, У дерева есть события, например у вас на скриншоте есть событие Init, в котором прописан код построения веток дерева. Если Вы пытаетесь на лету добавить\удалить\отредактировать данные в дереве, то соответственно нужно написать обработку событий дерева. Прямой связки межу деревом и таблицей нету, Вам нужно в обработчике событий писать код, который будет выполнять обновление данных в таблице при срабатывании события. tanglir пытается вам подсказать, что у каждой ветки дерева есть свой id и parentid узла, вот по ним нужно определять что конкретно вы хотите обновить в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2014, 20:37 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Claymore, Как я понял, проблема вообще не в контроле. Проблема в таблице, для хранения данных Выше кто то уже подсказал. Стандартный вид таблицы для дерева это ID, parentID, Name Думаю в инете найдешь описание этой структуры. Но по простому есть ID, у него есть Name. Этот Name отображается в наименовании узла. У узла есть ветви, так вот, все parentID указывают на этот ID. Не уверен, что ясно. Но тебе надо разобраться именно в этом. Создать структуру. А потом уже привязать ее к контролу. Примеров в инете масса. Ну и естественно, имена полей могут быть другими ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2014, 14:06 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
asdor, Можешь кинуть ссылку на примеры, нахожу, но вообще не то, там не то что поля разные, там вообще не связано с таблицами... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2014, 10:15 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Я так понимаю, Вы хотите использовать объект TreeView для создания/изменения/удаления записей таблицы? В принципе, такое возможно, но уж больно "муторно". Придется писать много кода, но, что более важно, у Вас постоянно будут возникать проблемы с идентификацией уровня вложенности узла. Чтобы было понятно в чем проблема, представьте такую картинку в TreeView 0_1 --- 1_1 0_2 Вы находитесь на узле "0_1" и нажимаете кнопку "Добавить". Где должен быть создан новый элемент? На каком уровне? Как элемент, вложенный внутрь узла "0_1" или как элемент, расположенный после узла "0_1", но на том же уровне вложенности? Если как вложенный, то первый или последний? Ну, т.е. какая картинка должна получиться в TreeView после нажатия кнопки "Добавить" Вариант 1 0_1 --- 1_1 0_3 <-- Новый узел 0_2 Вариант 2 0_1 --- 1_1 --- 1_2 <-- Новый узел 0_2 Вариант 3 0_1 --- 1_2 <-- Новый узел --- 1_1 0_2 Вариант 4 0_1 --- 1_1 ------- 1_1_1 <-- Новый узел 0_2 TreeView - это объект, имеющий 2 измерения, а кнопка "Добавить" дает "интуитивно понятное" указание только на одно измерение (добавить после/перед текущим узлом). Это то, что касается чисто технической стороны вопроса. А есть еще организационный вопрос. TreeView - как собака, друг, но друг ОДНОГО человека. Того, кого она считает "вожаком". Ко всем другим "человекам" в лучшем случае равнодушна. То же самое с TreeView. TreeView - это объект, понятный только тому, кто занимается его ведением. Т.е. хорош только для ОДНОГО человека. Любой другой человек будет постоянно путаться в том, что и где в этом самом TreeView находится и поминать "тихим не злым словом" того, кто ТАК расположил узлы. Ну, ведь "совершенно очевидно", что вот этот узел должен быть внутри вот этого узла, а не внутри вон того... В любом случае, я бы Вам не советовал использовать объект TreeView для модификации данных. Только для отображения. Т.е в обычном Grid создаете/изменяете записи. А в TreeView только отображаете результат ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2014, 17:32 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
ВладимирМ, Только "Вариант 2" остальные исключаются! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2014, 10:22 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Claymore, ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2014, 10:44 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Не могу сообразить как правильно написать код в init формы form1, помогите) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2014, 10:46 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Я тут подумал, правильнее таблица будет выглядеть так: ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2014, 10:58 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Claymore, Не совсем понятно что бы хотите услышать своим "апом". Вам же уже много кто сказал - id,parentid как правило... как правило оба int(id даже автоинкиментом можно сделать) Ну а ключами нодов как вариант будут "_"+str(id) Если три поля в таблице кажутся "правильнее" - дело Ваше, Вам сопровождать ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2014, 14:43 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
rock-n-roll, Ды понимаешь я не соображу как код написать в init (V_V) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2014, 14:58 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
Claymore, в смысле как- а что он должен делать? Наполнять первый уровень тривью?(кстати, если поискать по этому же форуму-полно объяснений почему рекомендуется строить только "необходимое отображать в данный момент")- так и этому полно примеров на этом же форуме Дай перефразирую твой вопрос-"Есть таблица id,parentid,name. Нужны обобщенные методы по наполнению тривьюхи" Так? Тогда делается это примерно так: Рисуется метод (ADDLEVEL) который будет строить уровень по переданному ParentID также этот метод добавит по одному "ФИКТИВНОМУ" узлу для всех имеющих потомков в таблице только для того чтобы появился крест(здесь извини лень вырезать .is_color и .is_ico считай что .F.) Код: plsql 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.
Метод EXPEND тривьюхи если есть фиктивный-удаляет его и строит следующий уровень, если нет значит ветвь уже построена ранее Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Итого что может быть в ините.. Ну наверно ADDLEVEL(0,.T.) ну если все таки хочется придать "полуразвернутый вид" пару EXPEND А я вообще правильно тебя понял? Если да то не ленись, пошукай по форуму-сее уже обсуждалось и не раз ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2014, 16:45 |
|
Создание базы данных с Treeview
|
|||
---|---|---|---|
#18+
ClaymoreВладимирМ, Только "Вариант 2" остальные исключаются! Это Вы сейчас так думаете. Причем, насколько я понимаю, думаете только Вы. Мнением пользователей Вы не интересовались. О чем я и говорю. TreeView - друг ОДНОГО человека. В данном случае персонально Ваш. ClaymoreЯ тут подумал, правильнее таблица будет выглядеть так: Не то, чтобы описанная структура была не правильной, но она избыточна. Вам придется кроме генерации значения id еще как-то "сконструировать" генератор значения key. Да, TreeView требует в качестве значения ключа узла символьное значение. Но ведь можно символьное значение получать "на лету" (в процессе построения дерева) из числового значения id. Например, переведя id в строку и добавив какой-нибудь символ. Например, "_". Другими словами, вполне достаточно будет иметь такую структуру Код: sql 1. 2. 3. 4. 5. 6. 7.
А при заполнении TreeView формировать значение ключа примерно так Код: sql 1.
ClaymoreНе могу сообразить как правильно написать код в init формы form1, помогите) Существует 2 принципиальные стратегии заполнения TreeView Вариант 1 Сразу заполнить все узлы дерева на всех уровнях вложенности Недостаток: при большом количестве узлов дерева потребует много времени на его заполнения. С точки зрения пользователя, форма будет открываться очень долго. Правда, понятие "много узлов" сильно зависит от железа. Т.е. "много" - это когда время открытия формы больше 2..3 секунд. А сколько узлов можно успеть создать за это время напрямую зависит от используемого железа. От структуры дерева и алгоритма его наполнения время построения дерева зависит слабо. Вариант 2 При открытии формы заполняется только первый уровень. А остальные уровни заполняются "по требованию". Обычно в момент первого раскрытия соответствующего узла. Так работает проводник в Windows. Оба варианта требуют не очевидного программирования. Не сложного, а именно не очевидного. Не привычного. Сразу заполнить все узлы дерева на всех уровнях вложенности Проблема в том, что в TreeView невозможно сначала создать дочерний узел, а потом - родительский. Необходимо строить дерево строго "сверху вниз". Сначала родителя, потом потомка. На первый взгляд кажется ничего сложного. Но это при "гладкой" структуре заполнения таблицы как в примере. А если структура данных будет не "гладкая", ну, например idparentid102153102150 Т.е. не получится просто просканировать таблицу сверху вниз и последовательно создавать узлы в дереве. Необходимо сначала "выстроить" записи в нужной последовательности. Замечу, что "хитрый индекс" здесь не поможет. Если не создавать дополнительных полей сортировки с "обвязкой" в виде триггеров для поддержания этих полей в актуальном состоянии, то возможны два решения 1. Рекурсия 2. "Бесконечный" цикл с исключением ранее использованных значений Системным ограничением FoxPro является ограничение на количество процедур, вызванных одна из другой. В данном случае это означает ограничение на количество рекурсий или количество уровней дерева. Для VFP9 - по умолчанию не более 128 вложенных процедур. Для младших версий - не более 32. Если рассматривать решение с бесконечным циклом, то можно так Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2014, 17:09 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1582714]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 480ms |
0 / 0 |