Delphi - DBGrid görgetése vízszintesen billentyűzetről

forráskód letöltése
Ha egy olyan DBGrid-et jelenítünk meg, amelynek annyi oszlopa van, hogy nem láthatók egyszerre, akkor lehetőség van a táblázat vízszintes irányú görgetésére, a balra és jobbra nyilakkal. Ha viszont az Options property-t úgy állítjuk be, hogy mindig egy egész sor van kijelölve, akkor ez a lehetőség megszűnik, a balra és jobbra nyilakkal az előző és a következő rekordra léphetünk. A DBGrid módosításával megoldható ez a probléma.
A mellékelt példaprogram megnyitása előtt a DBGridScroll.pas-ban lévő komponenst telepítenie kell a Delphi alá.
A feladat megoldásához a következőket kell megvalósítani. El kell kapni a komponensnek érkezett billentyű üzeneteket, és ha a leütött billentyű a balra vagy a jobbra nyíl, akkor törölni kell az üzenetet, és a vízszintes görgetősávot a megfelelő irányba el kell mozdítani.
Az új komponenst a rend kedvéért a TCustomDBGrid osztályból fogjuk származtatni. A leütött billentyű üzenet elkapásához csak a KeyDown eljárást kell felülírni. Ennek Key paraméterében megkapjuk a leütött billentyű kódját. A bal és jobbra nyíl billentyűk kódja a VK_LEFT illetve VK_RIGHT konstansokkal azonosíthatók. Ha a kettő közül valamelyik igaz, akkor töröljük a Key paraméter értékét úgy, hogy egyszerűen 0-t adunk értékül neki. A görgetősáv mozgatását úgy oldjuk meg, hogy egyszerűen küldünk egy WM_HSCROLL üzenetet a komponensnek a SendMessage függvénnyel. Ennek wParam paraméterében meg kell adni, hogy mennyivel mozdítjuk el a görgetősávot, és milyen irányba. Egy egységgel kell elmozdítani balra, vagy jobbra, ezt pedig a SB_LINELEFT és SB_LINERIGHT konstansokkal adhatjuk meg.