DBGrid i problem ze ScrollBarem

0

OK, szukałem w necie, niczego, co by działało nie znalazłem :)

Grid ma wiele kolumn. Na tyle, że robi się poziomy pasek przewijania.
Teraz, jeśli przewinę go tak, żeby widzieć dalsze kolumny i kliknę myszką na inny rekord, scroll wraca do początku. Jest to trochę denerwujące, więc pomyślałem, że coś z tym trzeba zrobić. Niestety moje próby się nie powiodły.

Pozycję scrolla pobieram w zdarzeniu OnMouseDown, a ustawiam go w zdarzeniu OnMouseUp:

Pobieranie:

FScrollPos:=GetScrollPos(BaseGrid.Handle, SB_HORZ);

Ustawianie:

SetScrollPos(BaseGrid.Handle, SB_HORZ, FScrollPos, true);

Niestety to nie chce zadziałać. FScrollPos zawsze ma wartość zero :|
Próbowałem też z GetScrollInfo i SetScrollInfo, ale wszystkie pola zawsze miały wartość zero(oczywiście wypełniłem cbSize:=sizeOf(TScrollInfo) i fMask zgodnie z dokumentacją).

Czy ktoś wie, jak to zrobić?

0

To może zadziała w beforescroll i afterscroll?

0
Mariusz Jędrzejowski napisał(a)

To może zadziała w beforescroll i afterscroll?

Też nie chce

0

Ktoś kiedyś wspominał że jest tak zaprojektowany i jeśli się chce innego działania to trzeba ściągnąć alternatywny komponent innego producenta.

0

Właściwie to używam TSMDBGrid, ale on dziedziczy po DBGrid.
W każdym razie, czemu nie działają ww. funkcje WinApi?

0

spróbuj z z dgRowSelect na False... powinno pomóc.. a jeśli chcesz zachować zaznaczanie całego wiersza to dodaj obsługę sam w ondraw

0
Juhas(niezalogowany) napisał(a)

Właściwie to używam TSMDBGrid, ale on dziedziczy po DBGrid.
W każdym razie, czemu nie działają ww. funkcje WinApi?

Zerknij do źródeł TSMDBGrid, jeśli jest to możliwe. Być może niektóre metody reagujące na zdarzenia są nadpisane bez użycia inherited, wtedy nie będzie wykonany kod z metody z klasy rodzicielskiej. Może to sprawiać wrażenie, że komponent jest "głuchy" na niektóre funkcje winapi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1