Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Глюк у дерева  [new]
alex11100
Guest
Дерево - глюкалово
когда же мелкософт его спилит
и пропишет намертво у лисы???

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

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

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

 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
а нодочка светится на дереве себе нормально


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

Спасибо
27 окт 05, 16:33    [2013364]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
А не надо создавать объектную ссылку на колекцию. Т.е. вот этого самого

loNodes = ThisForm.oleTree.Nodes

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

ThisForm.oleTree.Nodes.count

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

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

loNodes = ThisForm.oleTree.Nodes

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

"Проще" надо быть, и "дерево" у тебя зацветет
27 окт 05, 16:45    [2013445]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
я через Item() и обращаюсь

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

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

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


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



проще никак
крутой тулбар
запросы формируются к SQL
клеются из 3-х условий да еще по маскам
27 окт 05, 17:04    [2013593]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
не зацветет оно никогда!!!!
рожденный ползать летать не может

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

его просто нужно поддернуть как-то
27 окт 05, 17:06    [2013605]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
alex11100
я через Item() и обращаюсь

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

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

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

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

Да, так прямо и добавляешь

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

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

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

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

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

Вместо
loNode = .item(.count)

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

lnCount = .count
loNode = .item(m.lnCount)
27 окт 05, 17:22    [2013729]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
ВладимирМ , ну что ж Вы меня за балбеса держите

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

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

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

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

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

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

сейчас попробую от lonode уйти
на with .nodes
27 окт 05, 17:29    [2013779]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
я думаю
нужно както
инфу выдернуть и заново переначитать
если у дерева есть нодес а каунт равен 0
27 окт 05, 17:30    [2013786]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Если не трудно, сделай примерчик и положи здесь во вложении. Кстати, какая версия FoxPro.
27 окт 05, 17:41    [2013840]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
вот такой вариант и ошибочный!!!!

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

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


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

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

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

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

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

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

во засада
27 окт 05, 17:46    [2013882]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
примерчик не получится

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


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

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


достало это дерево !!!!!!!!
разозлюсь свой контрол напишу
27 окт 05, 17:49    [2013906]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
версия 9 лицензия
27 окт 05, 17:50    [2013913]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
alex11100
примерчик не получится

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

Да не нужны мне твои 3 класса. Просто сделай голую форму и то, куда ты там дабавляешь дерево. Тоже "с нуля". Самый минимум. Чтобы просто показать основную идею, как там у тебя используется дерево.
27 окт 05, 17:52    [2013924]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
да при чем тут форма

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

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

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

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

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

в нем неправильное поведение активиса и проявляется
в тулбаре себя даже комбобокс неправильно ведет
(в сервиспаке к 9 -ке исправили этот глюк )
27 окт 05, 17:57    [2013948]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Ну так что, сложно написать всю эта "бодягу" с нуля? На базовых классах FoxPro. Ну, и вручную создать несколько узлов дерева? Потом сделать небольшой PRG с созданием этого ToolBar. Все это завернуть в архив и положить во вложение, указав куда смотреть, где ошибки.
27 окт 05, 17:59    [2013973]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
попробую завтра набросать

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

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


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

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

вот если бы уйти на свой объект
родной для фокса
27 окт 05, 18:04    [2013995]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
ошибку я уже назвал

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

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

в дебужере все прокатывает
такое впечатление как времени не хватает
как будто метод адд не до конца дорабатывает
27 окт 05, 18:08    [2014011]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Вообще-то, надо понимать, что Debugger немного перестраивает работу приложения. Хотя бы в активизации окон и времени задержек. Поэтому далеко не всегда отладка под Debugger бывает полезной.

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

_VFP.AutoYield = .F.

По умолчанию, она установлена в .T., что мешает работе с ActiveX
27 окт 05, 18:19    [2014072]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
alex11100
Guest
да, пробовал

применение активиксов считаю нехорошим делом
вот и все тут, но деваться некуда.
27 окт 05, 18:23    [2014089]     Ответить | Цитировать Сообщить модератору
 Re: Глюк у дерева  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi alex11100!

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

Posted via ActualForum NNTP Server 1.3

28 окт 05, 05:25    [2014932]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить