4 / 4 / 1
Регистрация: 10.12.2010
Сообщений: 81
|
|
1 | |
Отслеживание видимых записей в области DBGrid28.06.2014, 23:02. Показов 2811. Ответов 12
Метки нет (Все метки)
Всем привет!
Можно ли узнать количество, и обратиться к записям которые находятся в видимой части DBGrida. Т.е. таблица из базы данных загружена полностью(например 100 записей), а из-за размера окна в гриде видно только 10 записей, курсор может быть хоть в центре таблицы. Можно ли как то узнать что видно 10 записей, и обратиться к этим записям для внесения изменений? delphi 11(2007) навсяк. Есть стандартные методы?
0
|
28.06.2014, 23:02 | |
Ответы с готовыми решениями:
12
Как можно подсчитать число видимых столбцов в DBGrid? Перенос записей из одного DBGrid в другой DBGrid Поиск записей по дате в DBGrid и окрашивание записей Отслеживание изменение записей |
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
||||||
29.06.2014, 00:07 | 2 | |||||
Сообщение было отмечено Stat как решение
Решение
Интересный вопрос...
Думаю можно:
Нумерация записей ведется с 1.
1
|
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
|
29.06.2014, 00:07 | 3 |
С чего бы это?
В ТDBGrid положение курсора в датасете синхронизировано с отображением активной строки в гриде. И как ни крути (хоть в гриде перемещай курсор, хоть в датасете его методами), но активная строка будет на виду в DBGrid в любом случае. Поэтому и проблемы нет и, разумеется, нет ничего похожего на стандартные методы определения видимости строк (записей).
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
29.06.2014, 00:10 | 4 |
Скандербег, имеется в виду, что курсор может быть на любой видимой строке Грида.
0
|
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
|
29.06.2014, 00:28 | 5 |
Из вопроса не совсем ясно так ли. Осталось впечатление, что ТС видит ситуацию, когда активная строка не видна.
Но если речь о курсоре на любой видимой строке, то все равно не понятно зачем знать какие записи сейчас видны в гриде. Возможности то для "внесения изменений" во все видимые записи одновременно все равно нет. А приемчик хорош. Подсунуть компилятору совсем другой класс вместо грида - это классно. Не додумался бы
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
29.06.2014, 00:58 | 6 |
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
29.06.2014, 02:56 | 7 |
Ну если не брать в расчёт работу с датасетом, то имхо TDBGrid скорее всего более близкий родственник TCustomGrid'у, чем TStringGrid. Это я понял когда в стародавние времена разбирался с проблемой колеса мышки в TDBGrid. Так что возможно FIL просто был не совсем прав, когда привёл тип к TStringGrid'у вместо TCustomGrid.
0
|
4 / 4 / 1
Регистрация: 10.12.2010
Сообщений: 81
|
|
29.06.2014, 08:00 [ТС] | 8 |
Да секрета здесь нет)
Пишу в программе отображение уведомлений(в виде планировщика задач - немного эротики) для пользователя, и было бы хорошо, например когда пролистывая DBGrid записи(уведомления) которые попали в "зону видимости" я бы пометил как прочтенные... А про курсор... на любой видимой строке. Так, над опробовать! Спасибо!) Ток для меня нонсенс один класс живет в другом, и они не прямые "родственники"...
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
29.06.2014, 09:13 | 9 |
Да, общим предком, где есть нужные св-ва, является TCustomGrid, но проблема в том, что они там "закрыты".
Так что, либо делать сабклассинг, либо использовать "непрямого родственника". Думаю, что такое решение вполне корректно, т.к. используемые св-ва есть у общего предка, только в другой области видимости (хотя до конца не уверен ).
0
|
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
|
29.06.2014, 12:32 | 10 |
П
Все уже опробовано - работает.
К тому же, хотя и не прямые, а родственники, поэтому опасаться нечего - помогает, что нужный набор свойств и их типы одинаковые. Это обстоятельство позволяет несколько упростить код, используя скрытое свойство TopRow (ну, это так, на всякий случай).
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
||||||
30.06.2014, 02:46 | 11 | |||||
Т.е. ты ещё не знаешь как "вполне себе легально" получить доступ к protected свойствам компонента?
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
30.06.2014, 09:31 | 12 |
Это я и имел ввиду. (Хотя, наверное, этот термин не совсем подходит к данному случаю)
Но зачем писать лишнюю строчку кода, если можно обойтись без нее Добавлено через 16 минут Кстати, TMyHackGrid тоже не является предком TDBGrid. Так что получается, что TMyHackGrid(DBGrid1).Row - тоже самое, что и TStringGrid(DBGrid1).Row.
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
30.06.2014, 10:52 | 13 |
Да здесь так. Но вариант с TMyHackGrid просто универсальный способ получить доступ к protected свойствам предка.
0
|
30.06.2014, 10:52 | |
30.06.2014, 10:52 | |
Помогаю со студенческими работами здесь
13
Отслеживание повторяющихся записей/номеров Отслеживание создания новых записей во множественной форме Удаление записей в DBGrid Добавление записей в DBGrid Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |