Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с DBGrid


Gedimen ©   (2015-05-23 21:08:00) 

Доброго времени суток, форумчане! Помогите, пожалуйста!

(использую Delphi XE8, firebird 2.5)

Возникла проблема с DBGrid, всю голову сломал, как решить не знаю.

Суть в следующем:
На форме лежит DBGrid1, привязанный к краям формы (тянется).
Через FireDAC получаю данные.
При создании формы увеличиваю высоту строк (TStringGrid(DBGrid1).DefaultRowHeight := 26;)

Запускаю приложение, кручу колесом мыши вниз - все нормально: указатель текущей строки доходит до последней отображаемой строки (самый низ грида), выводятся следующие записи, указатель внизу, виден.
Но! Стоит только развернуть форму во весь экран, то при прокрутке грида указатель уходит куда-то "вниз" (становится не виден), если докрутить до последней записи, то она не видна (она где-то "внизу", в невидимой области). Не видно N-ное количество записей. Пока полосой прокрутки не дернешь, последих записей не увидишь.

Если убрать строчку TStringGrid(DBGrid1).DefaultRowHeight := 26, то все нормально. Пробовал сразу фетчить - не помогает.
Короче, грид как-то не правильно считает выводимые строки, а как поправить - не знаю.


Gedimen   (2015-05-26 12:33:00) [1]


>Германн ©   (25.05.15 02:04) [5]

> Неужто работает сей монстр?


Работает.


Германн   (2015-05-25 02:04:00) [2]


> Gedimen ©   (24.05.15 14:29) [4]
>
> junglecat,
>
> Спасибо за наводку. Решил по другому:
>

Неужто работает сей монстр?


Gedimen   (2015-05-24 14:29:00) [3]

junglecat,

Спасибо за наводку. Решил по другому:

type
 TCGrid = class(TCustomGrid);

TCGrid(DBGrid1).RowCount:=TCGrid(DBGrid1).VisibleRowCount+1;


junglecat   (2015-05-24 12:22:00) [4]

> может программно кликнуть по ползунку

а если вызвать TCustomGrid.AdjustSize?


Gedimen   (2015-05-24 09:45:00) [5]

sniknik,
Пробовал "передернуть" DefaultRowHeight - не помогает. Однако если после разворота формы на весь экран кликнуть на ползунок полосы прокрутки, то становится все нормально.
Думаю, может программно кликнуть по ползунку. Только как?


sniknik   (2015-05-24 00:51:00) [6]

> TStringGrid(DBGrid1).DefaultRowHeight := 26
метод "хакерский", не предусмотрен у DBгрида, перерасчетов наверняка не делает при изменении размеров формы...

попробуй "передернуть" высоту, в смысле сменить DefaultRowHeight на дефаулт, а после опять на 26, в установке проперти у стринг грида должно размеры учитывать (раз это его стандартный метод).
для начала можно по кнопке, и если кнопка будет восстанавливать работу, после разворота формы/других событий, то смотреть что нужно сделать в методе у проперти. т.е. самому делать перерасчет. ну или тупо менять высоту строк.


Наверх

Титульная страница Поиск, карта сайта Написать письмо