Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2023, 23:15   #1
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 106
Вопрос Delphi 7 : TStringGrid - программное выделение строки

Всем привет!
Яндексую - пока не нашел решения.
Нужно выделить последнюю строку в Grid'e причем так, чтобы он до неё промотался (есть вертикальный скроллбар)
hexor_boo вне форума Ответить с цитированием
Старый 24.03.2023, 23:26   #2
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 106
По умолчанию

Свойство TopRow не совсем подходит.
Нужно чтобы отображался список предыдущих строк. в том числе, а не только последняя,
т.е. в точности нужно повторить действие пользователя: промтал скроллбар вниз и выделил кликом последнюю строку.
hexor_boo вне форума Ответить с цитированием
Старый 24.03.2023, 23:32   #3
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 106
По умолчанию

Код:
TStringGrid.Row:=N;
Где N - порядковый номер строки.
hexor_boo вне форума Ответить с цитированием
Старый 24.03.2023, 23:52   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Уточните. Вам нужна плавная анимация прокрутки контента скроллером вниз?
macomics вне форума Ответить с цитированием
Старый 25.03.2023, 00:22   #5
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 106
По умолчанию

2 macomics, нет. Мне нужно чтобы после наполнения Grid'a строчками просто выбралась самая последняя в конченом состоянии: скролл промотан вниз, строка выделена (я ещё SetFocus добавил)
hexor_boo вне форума Ответить с цитированием
Старый 25.03.2023, 00:34   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Тогда просто в цикле найдите индекс строки, которую стоит установить в TopRow
Код:
with StringGrid1 do begin
   h := ClientHeight;
   TopRow := 0;
   for i := RowCount - 1 downto 0 do
      if h > 0 then dec(h, RowHeights[i]) else begin
         TopRow := i;
         break;
      end;
Что-то вроде этого

ADD: Не знаю какая у вас версия компилятора (помню была Delphi 7). Но у меня на Lazarus под Linux, если просто присвоить TopRow := RowCount без вычета единицы, тогда срабатывает код подбора выделенной ячейки и они проматываются до последней строки (без анимации).

Последний раз редактировалось macomics; 25.03.2023 в 00:46.
macomics вне форума Ответить с цитированием
Старый 25.03.2023, 13:41   #7
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Код:
with StringGrid1 do
  begin
    if RowCount>VisibleRowCount then
     begin
        TopRow:=(RowCount-VisibleRowCount);
        row:=pred(rowcount);
      end;
  end;
?

Последний раз редактировалось DIONISKA; 25.03.2023 в 13:46.
DIONISKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBLookupComboBox программное выделение элемента в выпадающем списке KBO Помощь студентам 0 29.11.2018 00:53
Длина строки в TStringGrid Vova777 Общие вопросы Delphi 1 04.09.2011 20:57
Выделение строки полностью. БД. Delphi 7 NuR1k БД в Delphi 3 25.08.2010 13:45
Программное шифрование строки подключения Fataller Общие вопросы .NET 0 26.07.2010 09:31
Выделение строки в TStringGrid k1r1ch Общие вопросы Delphi 8 26.06.2009 13:01