Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Динамический набор в грид / 20 сообщений из 20, страница 1 из 1
18.10.2010, 21:02
    #36906131
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
День добрый!

Вот такой вопросик. Есть небезызвестное свойство DynamicControlSource у Column, если в качестве
значения этого свойства прописать вычисляемое выражение, то для каждой отображаемой записи
грид можно использовать свой контрол... Проблема в следующем .... Таблица источник содержит
довольно много записей > 10.000, и хотелось бы вычислять эти контролы только для отображаемого
набора (+- 2-ух кратный), в противном случае (в моей реализации на 30.000 программа думает
5 мин.).... То бишь по сути получать диапазон отображаемых записей.... Как это можно сделать?

пасиба
...
Рейтинг: 0 / 0
19.10.2010, 06:03
    #36906498
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
_usa__83_День добрый!

Вот такой вопросик. Есть небезызвестное свойство DynamicControlSource у Column, если в качестве
значения этого свойства прописать вычисляемое выражение, то для каждой отображаемой записи
грид можно использовать свой контрол... Проблема в следующем .... Таблица источник содержит
довольно много записей > 10.000, и хотелось бы вычислять эти контролы только для отображаемого
набора (+- 2-ух кратный), в противном случае (в моей реализации на 30.000 программа думает
5 мин.).... То бишь по сути получать диапазон отображаемых записей.... Как это можно сделать?

пасиба
Вообще, движок фокса вычисляет контролы как раз для видимых в данный момент элементов. Покажите где, как и в каком методе вы назначаете DynamicControlSource.

Ключевым здесь будет "в каком методе".
...
Рейтинг: 0 / 0
19.10.2010, 07:36
    #36906541
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
Kruchinin Pahan,

Column.DynamicCurrentControl={имя_массива_контролов[RECNO(псевдоним_таблицы_источника)]} ....
задается в методе (у меня называется) INITIALIZE (что-т вроде принудительной инициализации)...
Вообщем то что Фокс должен вычислять только видимые это ясно, в противном случае стандартный
грид висел ~столько же что и мой "доработанный"... Задача как раз именно в том, чтобы я мог
получить примерно следующее: "Видимыми на текущий момент являются записи с n до n+m"... Код могу прицепить, эт малость переработанная версия предложнного варианта (забыл автора) "Иерархические данные в фоксовом гриде"....
...
Рейтинг: 0 / 0
19.10.2010, 08:23
    #36906574
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
_usa__83_,

Помогут ActiveRow, RelativeRow для вычисления верхней видимой строки. И Height, RowHeight для вычисления количества строк.

А вот почему тормозит - непонятно. Контролов сильно много?
...
Рейтинг: 0 / 0
19.10.2010, 08:30
    #36906584
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
Kruchinin Pahan,

Да нет, - контролов то штук 15, записей в таблице 30.000 (на тек. момент) и для каждой записи
надо вычислить какой контрол использовать, то бишь надо пробежаться по всем записям, а хотелось бы только по небольшому числу.... Попробую посмотрю Ваш вариант, пасиба
...
Рейтинг: 0 / 0
19.10.2010, 08:34
    #36906589
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
_usa__83_Kruchinin Pahan,

Да нет, - контролов то штук 15, записей в таблице 30.000 (на тек. момент) и для каждой записи
надо вычислить какой контрол использовать, то бишь надо пробежаться по всем записям, а хотелось бы только по небольшому числу.... Попробую посмотрю Ваш вариант, пасиба
А занафига пробегаться? Не понятно. Почему это предварительно нельзя вычислить. Покажите, таки код.
...
Рейтинг: 0 / 0
19.10.2010, 09:55
    #36906705
Динамический набор в грид
_usa__83_Kruchinin Pahan,

Да нет, - контролов то штук 15, записей в таблице 30.000 (на тек. момент) и для каждой записи
надо вычислить какой контрол использовать,Задлянафига? Зачем для всех? Какой дурак будет ковырять сразу 30 тыс. записей? Что значит вычислять для каждой? Условие подстановки нужного контрола пишется для одной строки ибо именно при выводе строки на экран это вычисление и происходит. Для десятка-двух обновременно видимых на экране записей все не так уж и плохо. Или я что-то не понял?
...
Рейтинг: 0 / 0
21.10.2010, 07:43
    #36910994
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
проходящий.,

Ну дык че так сразу, просто попробовал.... ну не получилось... Поэтому я и задал вопрос о получении "ограниченного набора", - только тех записей которые отображаются.... ActiveRow и ReleativeRow хороши но только когда не пользуешься скролом, в этом случае и ActiveRow и RelativeRow уходят в 0...
...
Рейтинг: 0 / 0
21.10.2010, 10:12
    #36911230
Динамический набор в грид
_usa__83_проходящий.,

Ну дык че так сразу, просто попробовал.... ну не получилось... Поэтому я и задал вопрос о получении "ограниченного набора", - только тех записей которые отображаются.... ActiveRow и ReleativeRow хороши но только когда не пользуешься скролом, в этом случае и ActiveRow и RelativeRow уходят в 0...Уже было написано:
Вообще, движок фокса вычисляет контролы как раз для видимых в данный момент элементов. Исходя из этого совершенно непонятно какой велосипед Вы там себе изобретаете? Какие нафиг массивы? Лучше всего когда условие выбора контрола зависит только отзначений полей самой отображаемой записи. Вот это условие прописывается в DynamicCurrentControl. И все. Вы, наконец-то, намудренный код покажете или предлагаете дальше лечить даже без фотографии?
...
Рейтинг: 0 / 0
22.10.2010, 10:11
    #36913812
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
проходящий.,

Ок прицеплю, но ток чтоб не оч критично... гы-гы ок? (сегодня я финьк)
...
Рейтинг: 0 / 0
22.10.2010, 10:53
    #36913944
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
проходящий.,

Ну вот собственно в GridTree (прородитель данного безобразия) в s.vcx класс dgrid моя переделка (еще недоделка) ....
...
Рейтинг: 0 / 0
22.10.2010, 11:49
    #36914116
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
_usa__83_ ,

Чтоб не плодить огромное количество переключаемых объектов (которые будут тормозить) есть два выхода:

1. Если некоторые элементы в колонке отображаются одинаково, значит для них можно использовать один объект и можно придумать какую-то систему минимизации количества объектов. Т.е. каждая запись должна нести в себе информацию, как её отображать, каким объектом.

2. Использовать известный фокус с Backstyle_Access() методом. В колонку грида пихается контейнер, в нём может быть всё что угодно, метод Backstyle_Access() контейнера будет вызван гридом для каждой записи, соответственно, в методе можно рисовать состояние контейнера для каждой записи.

Вот в этом примере http://forum.foxclub.ru/read.php?29,370548,475187#msg-475187 использованы оба способа, для элементов дерева 1-й метод, а для отметок и пользовательских картинок 2-й.
...
Рейтинг: 0 / 0
22.10.2010, 19:25
    #36915397
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
XAndy,

Пардон а Ваше вложение, эт чаем не Ваша разработка?
...
Рейтинг: 0 / 0
22.10.2010, 21:06
    #36915480
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
_usa__83_,

Не разработка, просто пример когда-то делал. По ссылке более поздний вариант, уже использованный в приложении.
...
Рейтинг: 0 / 0
24.10.2010, 18:31
    #36916766
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
XAndy,

Дык эт то что приложено выше (this.rar) содержит как раз мою "доработку" основанную на Вашем примере.... Там TreeBoxNames[Reccount()]... Другое дело, что вся проблема заключается в следующем: при любом способе изменения видимого набора строк в Гриде (прокрутке клавишами с переводом recno() или прокрутке скролом) получать recno() "верхней" и "нижней" отображаемых записей.... вот собственно и все, тогда проблема исчезает (количество вычисляемых значений treeboxnames сводится к двум-трем десяткам).... Вот только ActiveRow и RelativeRow не помогают при скроллинге..... Так как же все-таки получать номера именно отображаемых строк?
...
Рейтинг: 0 / 0
25.10.2010, 21:41
    #36919066
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
_usa__83_,

Я не знаю способа точно это узнать. Да и не нужно это, грид сам всё знает, и лишнего вычислять не будет, т.е. достаточно использовать Backstyle_Access() контейнера в гриде, а для невидимых записей грид вызывать код не будет (или почти не будет, может какой-то буфер на пару "экранов" и есть)
...
Рейтинг: 0 / 0
26.10.2010, 08:50
    #36919500
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
XAndy,

Пасиб, посмотрим backstyle_access()
...
Рейтинг: 0 / 0
27.10.2010, 21:14
    #36924145
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
XAndy,

Пасиба! Все работает,backstyle_access() вызывается из refresh() (в частности) и, что есть самое
интересное там в действительности прокручиваются записи только отображаемые в гриде - значит
логика верна .... вот только почему-то дважды для каждой записи, но все же на текущий момент
проблема решена ....
...
Рейтинг: 0 / 0
28.10.2010, 09:50
    #36924746
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
_usa__83_,

Вот и хорошо. А дважды наверное потому, что явный вызов backstyle_access() из refresh() делать не нужно (если я правильно понял). Access() ниоткуда вызывать не нужно, он и так вызовется, т.к. гриду надо себя прорисовывать, значит грид будет получать значение backstyle для каждой записи
...
Рейтинг: 0 / 0
28.10.2010, 14:29
    #36925630
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический набор в грид
XAndy,

Дык нет, явного вызова то и нет, отловил в дебугере.... ну да лан так посмотрим...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Динамический набор в грид / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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