Форум: "Начинающим";
Текущий архив: 2017.01.22;
Скачать: [xml.tar.bz2];
ВнизПроблема с DBGrid Найти похожие ветки
← →
Gedimen © (2015-05-23 21:08) [0]Доброго времени суток, форумчане! Помогите, пожалуйста!
(использую Delphi XE8, firebird 2.5)
Возникла проблема с DBGrid, всю голову сломал, как решить не знаю.
Суть в следующем:
На форме лежит DBGrid1, привязанный к краям формы (тянется).
Через FireDAC получаю данные.
При создании формы увеличиваю высоту строк (TStringGrid(DBGrid1).DefaultRowHeight := 26;)
Запускаю приложение, кручу колесом мыши вниз - все нормально: указатель текущей строки доходит до последней отображаемой строки (самый низ грида), выводятся следующие записи, указатель внизу, виден.
Но! Стоит только развернуть форму во весь экран, то при прокрутке грида указатель уходит куда-то "вниз" (становится не виден), если докрутить до последней записи, то она не видна (она где-то "внизу", в невидимой области). Не видно N-ное количество записей. Пока полосой прокрутки не дернешь, последих записей не увидишь.
Если убрать строчку TStringGrid(DBGrid1).DefaultRowHeight := 26, то все нормально. Пробовал сразу фетчить - не помогает.
Короче, грид как-то не правильно считает выводимые строки, а как поправить - не знаю.
← →
sniknik © (2015-05-24 00:51) [1]> TStringGrid(DBGrid1).DefaultRowHeight := 26
метод "хакерский", не предусмотрен у DBгрида, перерасчетов наверняка не делает при изменении размеров формы...
попробуй "передернуть" высоту, в смысле сменить DefaultRowHeight на дефаулт, а после опять на 26, в установке проперти у стринг грида должно размеры учитывать (раз это его стандартный метод).
для начала можно по кнопке, и если кнопка будет восстанавливать работу, после разворота формы/других событий, то смотреть что нужно сделать в методе у проперти. т.е. самому делать перерасчет. ну или тупо менять высоту строк.
← →
Gedimen © (2015-05-24 09:45) [2]sniknik,
Пробовал "передернуть" DefaultRowHeight - не помогает. Однако если после разворота формы на весь экран кликнуть на ползунок полосы прокрутки, то становится все нормально.
Думаю, может программно кликнуть по ползунку. Только как?
← →
junglecat © (2015-05-24 12:22) [3]> может программно кликнуть по ползунку
а если вызвать TCustomGrid.AdjustSize?
← →
Gedimen © (2015-05-24 14:29) [4]junglecat,
Спасибо за наводку. Решил по другому:type
TCGrid = class(TCustomGrid);
TCGrid(DBGrid1).RowCount:=TCGrid(DBGrid1).VisibleRowCount+1;
← →
Германн © (2015-05-25 02:04) [5]
> Gedimen © (24.05.15 14:29) [4]
>
> junglecat,
>
> Спасибо за наводку. Решил по другому:
>
Неужто работает сей монстр?
← →
Gedimen © (2015-05-26 12:33) [6]
>Германн © (25.05.15 02:04) [5]
> Неужто работает сей монстр?
Работает.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.01.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c