powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Получение handle по имени items в TreeView
25 сообщений из 25, страница 1 из 1
Получение handle по имени items в TreeView
    #32986824
Фотография autumn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся тут с такой проблеммой - необходимо получить handle по названию items в TreeView.
Все названия итемов уникальны. Пользую PB8
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987217
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Травёрсать дерево :-)
RTFM - FindItem PowerScript function/Syntax 4 For TreeView controls
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987240
Фотография autumn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппRTFM - FindItem PowerScript function/Syntax 4 For TreeView controls
FindItem - эт конечно замечательно, но немного не то, или я не понял раздел хелпа.
Повторюсь
- Есть название (label) итема в дереве
- требуеться получить handle этог итема в дереве.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987280
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может вам ещё еду прожевать? :-)
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987286
Фотография autumn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппМожет вам ещё еду прожевать? :-)
Ну можно, а почему бы и нет? А то у меня с зубьями трабла некоторая наблюдаеться. Скока будет стоит прожевывание еды?
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987289
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
autumn ФилиппRTFM - FindItem PowerScript function/Syntax 4 For TreeView controls
FindItem - эт конечно замечательно, но немного не то, или я не понял раздел хелпа.
Повторюсь
- Есть название (label) итема в дереве
- требуеться получить handle этог итема в дереве.

Не помню есть ли подходящая Вам функция в PFC, но ручками рекурсивный обход дерева пишется за 15 минут. Причём в PB итераторы писать - рахат лукум. Попробуйте, не лишайше себя доступных радостей ;-)) Судя по последней реплике, именно к этому вас Филипп и склоняет...
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987297
Фотография autumn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Enlighten meНе помню есть ли подходящая Вам функция в PFC, но ручками рекурсивный обход дерева пишется за 15 минут. Причём в PB итераторы писать - рахат лукум. Попробуйте, не лишайше себя доступных радостей ;-)) Судя по последней реплике, именно к этому вас Филипп и склоняет...
Я понял к чему меня склоняет Филипп (я всеж не понял сколько это будет стоить?). Обход дерева - вещь вполне очевидная, и за сколько он пишеться - я в курсе. Ежли нет других вариантов(о чем и спрашивалось) - придеться остановиться на этом. Хотя когда в дереве 1500 и более итемов - эт не самый рациональный вариант.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987338
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
autumn Enlighten meНе помню есть ли подходящая Вам функция в PFC, но ручками рекурсивный обход дерева пишется за 15 минут. Причём в PB итераторы писать - рахат лукум. Попробуйте, не лишайше себя доступных радостей ;-)) Судя по последней реплике, именно к этому вас Филипп и склоняет...
Я понял к чему меня склоняет Филипп (я всеж не понял сколько это будет стоить?). Обход дерева - вещь вполне очевидная, и за сколько он пишеться - я в курсе. Ежли нет других вариантов(о чем и спрашивалось) - придеться остановиться на этом. Хотя когда в дереве 1500 и более итемов - эт не самый рациональный вариант.

Во-первых, 10^3 это не те объёмы данных, о которых можно серьёзно говорить. Соотв "нерациональность" по любому сильно врядли будет видна невооруженным глазом. Если железо не из музея.
Во-вторых, если контрол специально не заточен на поиск по лэйблу, спец функция будет делать то же самое - бежать по графу и сравнивать с заданным образцом. Где ж нерациональность?
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987345
Фотография autumn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Enlighten meВо-первых, 10^3 это не те объёмы данных, о которых можно серьёзно говорить. Соотв "нерациональность" по любому сильно врядли будет видна невооруженным глазом. Если железо не из музея.
Во-вторых, если контрол специально не заточен на поиск по лэйблу, спец функция будет делать то же самое - бежать по графу и сравнивать с заданным образцом. Где ж нерациональность?
Хм, даже ежли железо не музейное ИМХО - тормоза будут. Вообщем поглядим.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987351
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
autumn Enlighten meНе помню есть ли подходящая Вам функция в PFC, но ручками рекурсивный обход дерева пишется за 15 минут. Причём в PB итераторы писать - рахат лукум. Попробуйте, не лишайше себя доступных радостей ;-)) Судя по последней реплике, именно к этому вас Филипп и склоняет...
Я понял к чему меня склоняет Филипп (я всеж не понял сколько это будет стоить?). Обход дерева - вещь вполне очевидная, и за сколько он пишеться - я в курсе. Ежли нет других вариантов(о чем и спрашивалось) - придеться остановиться на этом. Хотя когда в дереве 1500 и более итемов - эт не самый рациональный вариант.

В таком случае встает вопрос - каким образом эти самые "1500 и более итемов" в дерево попали, и не нужно ли чё-нить запомнить про эти самые "1500 и более итемов" в момент их туда попадания, типа для облегчения идиотского поиска по "названия итемов уникальны"...
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987364
Фотография autumn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппВ таком случае встает вопрос - каким образом эти самые "1500 и более итемов" в дерево попали, и не нужно ли чё-нить запомнить про эти самые "1500 и более итемов" в момент их туда попадания, типа для облегчения идиотского поиска по "названия итемов уникальны"...
Итемы эти туда попали из таблицы в базе. В принципе - можно добавить в каждое табло в базе отдельное поле которое будет( может быть) соответствовать handle в дереве, но таблиц, по кторым строятся подобные деревья - несколько. Тож вариант не очень.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987374
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
autumn ФилиппВ таком случае встает вопрос - каким образом эти самые "1500 и более итемов" в дерево попали, и не нужно ли чё-нить запомнить про эти самые "1500 и более итемов" в момент их туда попадания, типа для облегчения идиотского поиска по "названия итемов уникальны"...
Итемы эти туда попали из таблицы в базе. В принципе - можно добавить в каждое табло в базе отдельное поле которое будет( может быть) соответствовать handle в дереве, но таблиц, по кторым строятся подобные деревья - несколько. Тож вариант не очень.

Ну я ваще то парень простой, но всё же и без вас догадался, что итемы эти туда попали из таблицы в базе. КАК они туда попали?
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987376
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
autumn ФилиппВ таком случае встает вопрос - каким образом эти самые "1500 и более итемов" в дерево попали, и не нужно ли чё-нить запомнить про эти самые "1500 и более итемов" в момент их туда попадания, типа для облегчения идиотского поиска по "названия итемов уникальны"...
Итемы эти туда попали из таблицы в базе. В принципе - можно добавить в каждое табло в базе отдельное поле которое будет( может быть) соответствовать handle в дереве, но таблиц, по кторым строятся подобные деревья - несколько. Тож вариант не очень.

Никогда бы не догадался. Это сильно. Экспрессивно. Первобытно как-то... Мне триста лет, я выполз из тьмы. (С) Макаревич.

А может, не так радикально попробовать:
Создаём датасторе. В нем резервируем интовое поле под хэндл. Селектим туда несметные полторы тышши записей. Запузыриваем процесс порождения дерева - во ((С)Крамаров). Не забываем прописывать свежеобретенные хэндлы... Или что-то вроде этого... А в datastore поиск быстрый-пребыстрый...
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987387
Фотография autumn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Enlighten meНикогда бы не догадался. Это сильно. Экспрессивно. Первобытно как-то... Мне триста лет, я выполз из тьмы. (С) Макаревич.
Ну все не так первобытно. Иногда проще обойтись без datastore.

Создаём датасторе. В нем резервируем интовое поле под хэндл. Селектим туда несметные полторы тышши записей. Запузыриваем процесс порождения дерева - во ((С)Крамаров). Не забываем прописывать свежеобретенные хэндлы... Или что-то вроде этого... А в datastore поиск быстрый-пребыстрый...
Ну да, поиск там вполне быстрый. Но к чему такие осложнения. Ежли можно посредством курсоров все из базы дергать?

Правда тут появляеться проблема с поиском в дереве. Которая решаеться либо перебором handle, либо Вашей методикой.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987395
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
autumnНу да, поиск там вполне быстрый. Но к чему такие осложнения. Ежли можно посредством курсоров все из базы дергать?
Правда тут появляеться проблема с поиском в дереве. Которая решаеться либо перебором handle, либо Вашей методикой.

Вот классическое подтверждение моего припева.
За каким хреном вы курсоры используете, если на Powerbuildere пишете? Где вы это бранное слово услыхали? :-))
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32987401
Фотография autumn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппВот классическое подтверждение моего припева.
За каким хреном вы курсоры используете, если на Powerbuildere пишете? Где вы это бранное слово услыхали? :-))
Хм, а в чем проблема? Чего в них плохого?
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32988166
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решена у меня подобная проблема давным давно ...
Есть таблица в ~40000 записей. Никто ее всю в TreeView сразу не грузит. :)
Заполняются уровни по мере необходимости (открытия) с помощью именно КУРСОРА. Пробовал через DataStore - тормоза. Ведь принцип заполнения DataStore и есть тот самый курсор. Это получается - заполни DataStore, а затем бегай по нему заполняя TreeView. Двойная работа. Я сравнивал по скорости - выигрыш курсора перед DataStore примерно 30%.
Поиск происходит сл. образом. В базе есть процедура, которая возвращает последовательность узловых (в Вашем случае Label-ов) по уровням до искомого начиная от корневого (вот сдесь я использую DataStore).
Ну а дальше понятно- с помощью FindItem двигаемся сверху вниз базируясь на полученной последовательности. Для каждого уровня FindItem вызывается один раз. Как получить handle с помощью FindItem я описывать не буду. На время перебора по дереву не забудьте отключить перерисовку.
На машине из музея (Cel.300, 128Mb RAM, Win98, DataBase ASA8.03) до 15 уровня прога добирается ~2-3сек. ИМХО вполне прилично учитывая то, что во время заполнения еще происходит дополнительный анализ полученных данных.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32988539
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBВедь принцип заполнения DataStore и есть тот самый курсор.
Это где Вы такое вычитали? DECLARE CURSOR, FETCH да?

У меня в справочнике 38000 записей, заполняется из DataStore по мере раскрытия узлов пользователем. Никаких тормозов нет. Через курсор быстрее не будет.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32988642
Nividimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри в атташе. Я не так давно много всяких деревянных штучек написал - может, чего сгодится. Что ты просишь - есть в том числе.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32988651
Nividimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Не прицепился :(.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32988667
Фотография autumn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NividimkaПосмотри в атташе. Я не так давно много всяких деревянных штучек написал - может, чего сгодится. Что ты просишь - есть в том числе.
Спасиб. Погляжу.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32988725
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBРешена у меня подобная проблема давным давно ...
Есть таблица в ~40000 записей. Никто ее всю в TreeView сразу не грузит. :)
Заполняются уровни по мере необходимости (открытия) с помощью именно КУРСОРА.
Вопрос (изначальный) не звучал "Как правильно работать с многоуровневыми иерархическими данными средствами PB", не так ли? So, если есть желание поговорить именно об этом, то можно создать отдельную ветку или дописать ещё одну статью к икаровской серии для начинающих. IMHO, 'course.

PaulJBВедь принцип заполнения DataStore и есть тот самый курсор.Чем докажете?

PaulJBПоиск происходит сл. образом. В базе есть процедура, которая возвращает последовательность узловых (в Вашем случае Label-ов) по уровням до искомого начиная от корневого (вот сдесь я использую DataStore).
Ну а дальше понятно- с помощью FindItem двигаемся сверху вниз базируясь на полученной последовательности. Для каждого уровня FindItem вызывается один раз. Вот с этого места поподробнее. Если я Вас правильно понял, то процедура вам выплёвывает что-то навроде 'Root_M\Branch_MN\Leaf_MN1' для параметра 'Leaf_MN1'. Соответственно, на каждом уровне вы всё-таки вынуждены проводить последовательный поиск, don't you? Как вы обходитесь одним FindItem для каждого уровня, откройте секрет...
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32989424
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк
>Это где Вы такое вычитали?

Кажись в книге по 5 ПБ или 6 точно уже не помню.
Там было предупреждение про использование опции RetrieveAsNeeded.
Упоминалось про то, что до завершения retrieve DW держит открытым курсор и при этом строки в курсоре могут быть заблокированы (см. Isolation Level).
Может в более старших версиях уже переделали ... ?

А как по вашему организуется срабатывание события RetrieveRow ?

>У меня в справочнике 38000 записей, заполняется из DataStore по мере раскрытия узлов пользователем. Никаких тормозов нет. Через курсор быстрее не будет.

А как Вы гарантируете соответствие данных в дереве и в базе?
Ведь содержимое DataStore надо обновлять ? Каждый раз Retrieve для 38000 записей ?
А так: юзер закрыл/открыл уровень - вот вам и свежие данные.

2 Enlighten me
Если я Вас правильно понял, то процедура вам выплёвывает что-то навроде 'Root_M\Branch_MN\Leaf_MN1' для параметра 'Leaf_MN1'. Соответственно, на каждом уровне вы всё-таки вынуждены проводить последовательный поиск, don't you? Как вы обходитесь одним FindItem для каждого уровня ...

Именно так. Конечно, приходится последовательно перебирать items на уровне, но ведь это не перебор всего дерева и Вы уверены что на выбранном уровне присутствует искомый элемент. Я немного не так выразился про FindItem за что прошу пардону у обчества. Имелось в виду ф-ция поиска по уровню, которая вызывается рекурсивно.
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32989733
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJB Локшин Марк
>Это где Вы такое вычитали?

Кажись в книге по 5 ПБ или 6 точно уже не помню.
Там было предупреждение про использование опции RetrieveAsNeeded.
Упоминалось про то, что до завершения retrieve DW держит открытым курсор и при этом строки в курсоре могут быть заблокированы (см. Isolation Level).
Может в более старших версиях уже переделали ... ?

Не переделали. Здесь кто-нить про RetrieveAsNeeded говорил?
В нормальном режиме нет курсора, а есть т.н. block read, который от курсора решительным образом отличается...
...
Рейтинг: 0 / 0
Получение handle по имени items в TreeView
    #32990342
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBА как Вы гарантируете соответствие данных в дереве и в базе?
Ведь содержимое DataStore надо обновлять ? Каждый раз Retrieve для 38000 записей ?
А так: юзер закрыл/открыл уровень - вот вам и свежие данные.
Гм. Произошло itempopulate, в DataStore откачалось содержимое текущего узла и вставилось в дерево. Никто естественно 38000 записей сразу не откачивает.
Для обновления есть специальная кнопочка - "обновить". А то дерево - это такая структура... был узлом а стал листом, да при том совсем еще в другом месте.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Получение handle по имени items в TreeView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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