Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.08.2014, 21:39
maxfox123 maxfox123 вне форума
Прохожий
 
Регистрация: 07.07.2013
Сообщения: 17
Версия Delphi: delphi 6
Репутация: 10
По умолчанию как изменить положение выделенной строки в дбгрид?

Добрый день,
если можно помогите разобраться со своими ошибками.

Задача:

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  
Старый 25.08.2014, 21:42
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Уж больно сложно вы катаетесь по вашему TDataSet.

Что мешает напрямую обратиться к TTable или TQuery (смотря чем выбираете данные их БД) строчками:

Код:
TTable.Next;
TTable.Prior;

вместо:

Код:
DBGrid.DataSource.DataSet.Next;
DBGrid.DataSource.DataSet.Prior;
Ответить с цитированием
  #3  
Старый 25.08.2014, 23:52
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Uniq!
Что мешает напрямую обратиться к TTable или TQuery (смотря чем выбираете данные их БД) строчками:
Это тут не причем. У автора или наведенка какая-то (левые события), или я не понял, что происходит.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #4  
Старый 26.08.2014, 02:30
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

DBGrid.SelectedRows.Count возвращает количество выделенных строк при включенном флаге Multiselect. Если же флаг не включен или же не удерживается на клавиатуре Shift, выделено будет всегда одна строка соответствующая положению курсора в датасете.
Возникает вопрос, что же вам на самом деле нужно? Узнать положение курсора относительно начала данных? Узнать положение курсора относительно видимой части данных? Узнать положение первой выделенной строки относительно начала данных?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 26.08.2014, 13:09
maxfox123 maxfox123 вне форума
Прохожий
 
Регистрация: 07.07.2013
Сообщения: 17
Версия Delphi: delphi 6
Репутация: 10
По умолчанию

Прошу извинить, забыл видимо написать самую главную часть

Options.dgMultiSelect установлено в TRUE

Как при перемещении стрелками вниз вверх, менять выделение строки?

то есть условно:
есть выделенная 5-я строка (DBGrid.SelectedRows.Count возвращает «1»)
выполняется нажатие клавиши стрелка вниз
должна выделятся 6-я строка (ожидаю DBGrid.SelectedRows.Count = 1 )
но 6-я строка не выделяется и выделение с 5-й строки тоже снимается. то есть DBGrid.SelectedRows.Count = 0
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter