Witam,

Mam standardowy DBGrid i formatuję sobie jego wygląd, aby wyświetlane dane były bardziej czytelne. Zmianę wysokości wszystkich wierszy w Gridzie zrobiłem tak:

TStringGrid(DBGrid1).DefaultRowHeight:=25;

Po zwiększeniu typowej wysokości wierszy napotykam jednak na problem podczas przewijania danych scrollem myszki - OnMouseWheel. Mianowicie jak kręcę scrollem "w dół" to ucinane są dwa ostatnie wiersze. W momencie, gdy dojadę do końca tabeli to dwóch ostatnich rekordów po prostu nie widać.

Wydaje mi się, że po zmianie DefaultRowHeight źle obliczana jest liczba rekordów, która zmieści się w Gridzie. Ale może lepiej na konkretnym przykładzie:

  1. Niech standardowo wysokość wiersza wynosi 20 pikseli. Zatem w Gridzie o wysokości 200 pikseli (plus dodatkowo wysokość Title) zmieści się jednocześnie równo 10 rekordów. Jak nie ruszam DefaultRowHeight to wszystko działa poprawnie. Dojeżdżam do 10 rekordu, a od 11 następuje przewijanie.
  2. Jeżeli natomiast zmienię wysokość wiersza na 25 to oczywiście wyświetlonych będzie mogło być jednocześnie tylko 8 rekordów, a nie jak wcześniej 10. Nowa wartość DefaultRowHeight nie jest niestety uwzględniana w DBGrid podczas przewijania scrollem myszki. W praktyce ucinane są 2 ostatnie rekordy. Mam ustawione dgRowSelect:=True i podświetlenie aktywnego rekordu znika mi gdzieś na dole.

Proszę o podpowiedź, czy jest jakiś parametr, którym mogę określić liczbę wyświetlanych rekordów, po przekroczeniu których nastąpi przewijanie? W moim przypadku po zmianie DefaultRowHeight powinna ona wynosić nie 10 ale 8 wierszy.