The important task in scrolling is to determine the scroll range and the current cell in the upper left hand corner of the client area. Data members are needed to remember this information so OnDraw will work correctly. On Draw uses this information to limit what is actually output. You should not be outputting more cells than will fit in the client area. Nor should the grid lines be longer than needed.
Nothing is overly difficult, but it is a lot of calculating.
A good paper design is needed before you start coding. Padding Nothing esoteric here. You need to determine when padding is needed by noting the range of the cells in the client area. If the left, right, top, or bottom of the cell range is being displayed you need to add the padding factor. Zooming Zooming interacts with several other aspects of the program especially OnDraw and scrolling.