Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Глюк у дерева / 19 сообщений из 19, страница 1 из 1
27.10.2005, 16:33:39
    #33348148
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
Дерево - глюкалово
когда же мелкософт его спилит
и пропишет намертво у лисы???

ладно, ситуация такая
в принципе у себя проблему кое как обошел, но хочется добить

есть дерево, лежит очень глубоко
и не одно - 2 их уродца таких
есть класс-контейнер
у него есть дерево
2 таких контейнера всунуты в другой класс-контейнер
а уже этот контейнер всунут в класс-тулбар
во как и по другому низя
да еще этот тулбар - сплошной блин интеллект - умнее меня

а проблема в том,
что иногда нода берет и недобавляется
обошел так, спасибо MichaelD из Перьми подсказал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 with this  
          .OleTree.visible = .f.  
         * Создаем новую запись: Получаем ссылку на колекцию узлов  
          loNodes = .oleTree.Nodes  
          lnSelectedKey = .nSelectedKey  
          with loNodes  
         	* Формируем ноду   
          	if lnSelectedKey= 0   
          		.add(, 2 ,lcKey,lcStr,lnPict)  
          	else  
          		.add(alltrim(str(lnSelectedKey))+'_',iif(tnChild= 1 , 4 , 2 ),lcKey,lcStr,lnPict)  
          	endif  
          	loNode = .item(.count)  
          endwith  
     endwith  


ну думаю, ладно проблема решена, ан нет

после этого добавления смотрю count у нодов = 1
передергиваю кое чего, запускаю пару -тройку методов
смотрю - count у нодов стал 0
а нодочка светится на дереве себе нормально


кто подскажит чего это такое???
как бы дереву все передернуть, чтобы
и нода была и каунт у нод был правильный

Спасибо
...
Рейтинг: 0 / 0
27.10.2005, 16:45:36
    #33348184
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
А не надо создавать объектную ссылку на колекцию. Т.е. вот этого самого

loNodes = ThisForm.oleTree.Nodes

Для чтения данных из дерева вполне годятся прямые ссылки

ThisForm.oleTree.Nodes.count

Собственно, и основной "глюк" у тебя был связан именно с объектной ссылкой на коллекцию.

Если ты работаешь через ссылку

loNodes = ThisForm.oleTree.Nodes

то обращение к элементам дерева только и исключительно через метод Item(), как и советовал Михаил.

"Проще" надо быть, и "дерево" у тебя зацветет
...
Рейтинг: 0 / 0
27.10.2005, 17:04:51
    #33348274
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
я через Item() и обращаюсь

обращаюсь Item такойто-такойто, а там каунт 0 !!!

а там каунт у нод почему то 0 становится сам

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


хорошо как начитать дерево
(добавить) без ссылки ?????
как ее убить тогда чтобы она не сдергивала каунт



проще никак
крутой тулбар
запросы формируются к SQL
клеются из 3-х условий да еще по маскам
...
Рейтинг: 0 / 0
27.10.2005, 17:06:52
    #33348279
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
не зацветет оно никогда!!!!
рожденный ползать летать не может

это не родной объект - вот и проблема

его просто нужно поддернуть как-то
...
Рейтинг: 0 / 0
27.10.2005, 17:22:32
    #33348338
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
alex11100я через Item() и обращаюсь

обращаюсь Item такойто-такойто, а там каунт 0 !!!

а там каунт у нод почему то 0 становится сам
Не понял, какое количество может быть у самого узла дерева? Count - это свойство собственно коллекции узлов. Но никак не одного узла. А Item() - это метод получения ссылки на один узел

alex11100хорошо как начитать дерево
(добавить) без ссылки ?????
Да, так прямо и добавляешь

Код: plaintext
1.
2.
this.OleTree.visible = .f.
loNode = this.OleTree.Nodes.add(, 2 ,lcKey,lcStr,lnPict)

В крайнем случае можно так:

Код: plaintext
1.
2.
3.
4.
with this.OleTree
	.visible = .f.
	loNode = .Nodes.add(, 2 ,lcKey,lcStr,lnPict)
endwith

если очень хочется помучиться, тогда нужно "фиксировать" каждый шаг

Код: plaintext
1.
2.
3.
4.
5.
6.
with this.OleTree
	.visible = .f.
	with .Nodes
		loNode = .add(, 2 ,lcKey,lcStr,lnPict)
	endwith
endwith

Вместо
Код: plaintext
loNode = .item(.count)

Писать что-то вроде

Код: plaintext
1.
2.
lnCount = .count
loNode = .item(m.lnCount)
...
Рейтинг: 0 / 0
27.10.2005, 17:29:26
    #33348365
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
ВладимирМ , ну что ж Вы меня за балбеса держите

я же объясняю, что так всю жизнь
и делал

а эта сво... недопиленная

loNode = this.OleTree.Nodes.add(,2,lcKey,lcStr,lnPict)

вот так на пустом дереве не работала иногда !!!!
не добавляет и все тут хоть забей его на смерть!!!!

смотрю LONODE а тип не обжект и все тут
не сработало !!!!

разложил на конструкцию с виз - эндвиз
вроде исчезла ошибка,
ан нет

сейчас попробую от lonode уйти
на with .nodes
...
Рейтинг: 0 / 0
27.10.2005, 17:30:37
    #33348369
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
я думаю
нужно както
инфу выдернуть и заново переначитать
если у дерева есть нодес а каунт равен 0
...
Рейтинг: 0 / 0
27.10.2005, 17:41:22
    #33348401
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
Если не трудно, сделай примерчик и положи здесь во вложении. Кстати, какая версия FoxPro.
...
Рейтинг: 0 / 0
27.10.2005, 17:46:45
    #33348423
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
вот такой вариант и ошибочный!!!!

with this.OleTree
.visible = .f.
with .Nodes
loNode = .add(,2,lcKey,lcStr,lnPict)
endwith
endwith

вот нельзя напрямую из него ссылку получать
и все тут !!!!


проблема еще раз объясню

сразу после добавления все ОК

.item(.count) дает 1 и все нормаль

прыг-прыг сделал

и все .item(.count) = 0
с какого будуна интересно

а строка в дереве как ни в чем не бывало

во засада
...
Рейтинг: 0 / 0
27.10.2005, 17:49:47
    #33348438
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
примерчик не получится

3 класса там и еще погоняют кучей вприпрыжку


нужно придумать лечилку

если у дерева есть начитанные узлы,
а каут стал 0
то нужно как-то определить и полечить


достало это дерево !!!!!!!!
разозлюсь свой контрол напишу
...
Рейтинг: 0 / 0
27.10.2005, 17:50:50
    #33348444
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
версия 9 лицензия
...
Рейтинг: 0 / 0
27.10.2005, 17:52:29
    #33348452
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
alex11100примерчик не получится

3 класса там и еще погоняют кучей вприпрыжку

Да не нужны мне твои 3 класса. Просто сделай голую форму и то, куда ты там дабавляешь дерево. Тоже "с нуля". Самый минимум. Чтобы просто показать основную идею, как там у тебя используется дерево.
...
Рейтинг: 0 / 0
27.10.2005, 17:57:02
    #33348462
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
да при чем тут форма

в форме проблем нет

есть класс - тулбар

в нем контейнер- в контейнере 2 контейнера одного класса
в каждом по дереву

вот и вся проблема

тулбар дочится

в нем неправильное поведение активиса и проявляется
в тулбаре себя даже комбобокс неправильно ведет
(в сервиспаке к 9 -ке исправили этот глюк )
...
Рейтинг: 0 / 0
27.10.2005, 17:59:52
    #33348476
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
Ну так что, сложно написать всю эта "бодягу" с нуля? На базовых классах FoxPro. Ну, и вручную создать несколько узлов дерева? Потом сделать небольшой PRG с созданием этого ToolBar. Все это завернуть в архив и положить во вложение, указав куда смотреть, где ошибки.
...
Рейтинг: 0 / 0
27.10.2005, 18:04:50
    #33348488
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
попробую завтра набросать

а смысл
Вы думаете я дебужером не смотрел

я уже понял в чем беда
проблема с событиями активикса
вот и все тут


дерево для фокса не заточено
фокс - это не бейсик
тулбар фокса не предназначен для того чтобы в него
активиксы пихать

тока проблема - мне это дерево позарез нужно
покаместь для интерфейса лучше ничего не придумали

вот если бы уйти на свой объект
родной для фокса
...
Рейтинг: 0 / 0
27.10.2005, 18:08:24
    #33348497
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
ошибку я уже назвал

в коллекцию добавляется узел
число их изменяется

а потом дерево само у себя убивает каунт в 0
и это происходит под рантаймом

в дебужере все прокатывает
такое впечатление как времени не хватает
как будто метод адд не до конца дорабатывает
...
Рейтинг: 0 / 0
27.10.2005, 18:19:15
    #33348534
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
Вообще-то, надо понимать, что Debugger немного перестраивает работу приложения. Хотя бы в активизации окон и времени задержек. Поэтому далеко не всегда отладка под Debugger бывает полезной.

Да, надеюсь, у тебя сделана настройка

_VFP.AutoYield = .F.

По умолчанию, она установлена в .T., что мешает работе с ActiveX
...
Рейтинг: 0 / 0
27.10.2005, 18:23:42
    #33348541
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
да, пробовал

применение активиксов считаю нехорошим делом
вот и все тут, но деваться некуда.
...
Рейтинг: 0 / 0
28.10.2005, 05:25:08
    #33348964
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк у дерева
Hi alex11100!

Никогда не считал полезным при работе с ActiveX-ами использовать конструкции
WITH
А вот использовать Mytree.Object.Nodes... дабы пробится через фоксовую
обёртку непосредственно к контролу - это почти всегда пользую :)

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


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