powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Логическое цвето выделение нескольких записей
18 сообщений из 18, страница 1 из 1
Логическое цвето выделение нескольких записей
    #33877889
Sea.Starry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто- нибудь пробывал организовывать выделение нескольких записей в Grid'e
я использовал механизм предложенный Дмитриtv Баянов'ым

Для каждой предметной таблицы БД необходимо открывать вспомогательную таблицу с набором записей (списком маркировки), имеющих два поля – первичный ключ GUID и признак маркировки lMarked. При операции выделения строки в список маркировки добавляется новая запись, в которую заносится значение первичного ключа предметной маркируемой записи и логическое значение признака выделения. Обе таблицы связываются реляцией по первичным ключам. В визуальную компоненту, отвечающую за показ цвета записи на экране (к примеру, DinamicBackColor), вставляется выражение динамической проверки признака маркирования в виде:
IIF(Seek(GUID) .and. MarkTable.lMarked, Color1, Color2). Для полной функциональности необходимо создать набор функций, реализующих полный набор операций с маркированными строками: выделение, отмена выделения для текущей строки, для всех строк, для строк по логическому WHERE условию, проверка на выделение.

Но такой алгоритм вызывает явные тормоза при наличии большого количества видимых на экране строк и столбцов Grid'a

В предлогаемом моем примере используйте пробел для выделения/снятия маркировки записей и при resiz'e формы можно ощутить ити тормоза на более слабых машинах точно в виде запаздывания resiz'a grida за формой

Эти тормоза связвны с постоянным seekom ключа в вспомогательной таблице в свойствах dynamicbackcolor и dynamicforecolor

Версия VFOXPRO 7
Предлогайте свой вариант
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33877993
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
изв, но пример для 9-ки
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33878031
Sea.Starry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то я не нашел в коде выделения груп.
Повнимательней прочитайте вoпрос
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33878069
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, странно

в чекбокс потычте

а табличку линковать
не вижу особого смысла

никто не мешает
при выборке добавить в курсор дополнительное поле
и тормозов не будет
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33878110
Sea.Starry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как раз в рекомендуемом примере и было сказано выше что необходимость создавать дополнительное поле не нужна
Без него нада
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33878466
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй вместо курсора одномерный массив и ascan
если ascan( тра та та ) > 0 помечаешь если нет не помечаешь
все будет летать
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33878538
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я попробую
если будет время выложить без поля пример
только по-позже

там идея понятна
просто создается избыточное количество записей в дополнительном курсоре
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33880737
Sea.Starry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Массив ито хорошо но из за теоретического барьера 65000 как то не по себе
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33880852
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
продолженеи темы с классами

выделение - держать шифт и стрелками вверх и вниз
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33882382
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sea.StarryМассив ито хорошо но из за теоретического барьера 65000 как то не по себе

сколько времени нужно что бы отметить 65000 элементов в гриде?
по секунде на элемент.... 18 часов :-)
это раз...
да и вообще зачем человеку одновременно выводить в грид 65 000 записей?
что он с ними делать будет?
должны быть условия отбора....
это два..

юзай массив не боись ;-)
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33882414
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скан в массиве
будет дольше работать чем сик по курсору
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33882573
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100скан в массиве
будет дольше работать чем сик по курсору

Это ложь...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE CURSOR cr_test  ( fld1 n ( 6 )) 
DIMENSION atest( 1500 )
FOR ncnt= 1  TO  1500  
	INSERT INTO cr_test ( fld1 ) VALUES (  ncnt )
	atest(ncnt) = ncnt
ENDFOR 
SELECT cr_test
INDEX ON  fld1 TAG fld1 
nlTBeginAscan =SECONDS() 
*/* ia?aei iienea ascan ii
FOR nl1=1 TO 10000
	ASCAN(atest,1400-nl1)
ENDFOR 
nlTtotalAscan =SECONDS()- nlTBeginAscan
nlTBeginSeek =SECONDS() 
*/* ia?aei iienea seek ii
FOR nl2= 1  TO  10000 
	nlSeekexpr =  1400 -nl2
	bl = SEEK( nlSeekexpr ,"cr_test" )
ENDFOR 
nlTtotalSeek =SECONDS()- nlTBeginSeek
MESSAGEBOX("Seek*1000: " + TRANSFORM(nlTtotalSeek)+ CHR( 13 ) ;
			 + "Ascan*1000: " + TRANSFORM(nlTtotalAscan ) )
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33882752
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что ложь то

ну твой же тест дает
на сике 0,031
на скане 0,203

и где ложь

скан работает медленнее
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33882770
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strong alex11100скан в массиве
будет дольше работать чем сик по курсору

Это ложь...



Сорри стормозил scan действительно быстрее,
но имхо не критично для данного случая
0,1 секунда на 10 000 итераций мне кажется не очень критично
что 0,03 что 0,1

в общем каждый выбирает то что ему удобнее, лично мне решение с массивом кажется более изящным. ( никаких накладных расходов на индех и курсор, а массив можно в свойства класса запихнуть и все)

Еще раз приношу извинения за некоторую скоропалительность выводов.
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33882848
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну так и не опредилился быстрее или медленнее

а мне сик милее
и следить за массивом не нужно
курсор висит себе и висит
и сам буферится
и сам убъется

с курсором удобней, вот и все
я сам на 5-й лисе в массивы справочники загонял из сети,
чтобы ФС разгрузить
а сейчас лучше курсоры использовать
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33882975
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, SEEK быстрее...
опять ошибся когда писал :-(
полезный топик, я не знаю почему но считал что ascan быстрее. :-)
учтем ...
написал как то классик и поехало...
но тормозов никаких не было никогда...
привычка знаете ли иногда вредная штука...
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33883357
Sea.Starry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну во первых fox 7 пример я не смог запустить но на сколько я понил из кода там тоже идет поиск в курсоре т.е от моего примера ничем не отличается значит в dynamicbackcolor кроме функции на seek в курсоре ничего хорошо не придумешь TT
...
Рейтинг: 0 / 0
Логическое цвето выделение нескольких записей
    #33883415
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну во-вторых нужно на 9-м пробовать

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


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