That's why I thought about a helper class. Maybe global functions could be used, too.
I did implement it today for windows and it's working fine. The content of the memo is scrolled nicely, but then I realized there is absolutely no reason to scroll the memo with a specific value. The point is the memo's scrollbar is set in a such way that you can only scroll it line by line. The amount it depends on the line's height. For example if the line height is 17px, it make no sense to scroll 24 px, because the scrollbar and the memo's content get out of sync. Probably this is the reason why in delphi the "manual" scrolling was removed.
Under lGTK2/ Carbon that's not true. The memo's scrollbar can take any value.
The bottom line is you cannot solve this issue with a helper class/global function. I'm afraid it has to be implemented separately in each widgetset.
PS: SendMessage/PostMessage works under linux too, but it has to be implemented a little bit differently. See examples-->messages-->project1.lpi