![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день,
если можно помогите разобраться со своими ошибками. Задача: Options.gdRowSelect = True Необходимо перемещаться в ДБгрид используя только клавиатуру, то есть только стрелки вверх и вниз везде на форумах написано для этого необходимо использовать вызовы Код:
DBGrid.DataSource.DataSet.Next; DBGrid.DataSource.DataSet.Prior; или Код:
DBGrid.DataSource.DataSet.MoveBy(TComponent(Sender).Tag); DBGrid.SetFocus; НО При использовании таких вызовов, происходит изменение положения “курсора” (не знаю, как более правильно сказать ) но новая строка не становится выделенной. DBGrid.SelectedRows.Count возвращает «0» то есть условно: есть выделенная 5-я строка (DBGrid.SelectedRows.Count возвращает «1») выполняется нажатие клавиши стрелка вниз должна выделятся 6-я строка (ожидаю DBGrid.SelectedRows.Count = 1 ) но 6-я строка не выделяется и выделение с 5-й строки тоже снимается. как изменить положение выделенной строки в дбгрид? как выделить другую строку при нажатии на стрелку вниз? |
|
#2
|
||||
|
||||
|
Уж больно сложно вы катаетесь по вашему TDataSet.
Что мешает напрямую обратиться к TTable или TQuery (смотря чем выбираете данные их БД) строчками: Код:
TTable.Next; TTable.Prior; вместо: Код:
DBGrid.DataSource.DataSet.Next; DBGrid.DataSource.DataSet.Prior; |
|
#3
|
||||
|
||||
|
Цитата:
|
|
#4
|
||||
|
||||
|
DBGrid.SelectedRows.Count возвращает количество выделенных строк при включенном флаге Multiselect. Если же флаг не включен или же не удерживается на клавиатуре Shift, выделено будет всегда одна строка соответствующая положению курсора в датасете.
Возникает вопрос, что же вам на самом деле нужно? Узнать положение курсора относительно начала данных? Узнать положение курсора относительно видимой части данных? Узнать положение первой выделенной строки относительно начала данных? |
|
#5
|
|||
|
|||
|
Прошу извинить, забыл видимо написать самую главную часть
Options.dgMultiSelect установлено в TRUE Как при перемещении стрелками вниз вверх, менять выделение строки? то есть условно: есть выделенная 5-я строка (DBGrid.SelectedRows.Count возвращает «1») выполняется нажатие клавиши стрелка вниз должна выделятся 6-я строка (ожидаю DBGrid.SelectedRows.Count = 1 ) но 6-я строка не выделяется и выделение с 5-й строки тоже снимается. то есть DBGrid.SelectedRows.Count = 0 |