There are several questions.
1) getting the byte pos
2) getting the text (answered by Cyrax)
To get the pos...
SynEdit works with x/y.
And in x/y you can use either char, or byte pos. (TextBetweenPoints takes byte pos)
You can use
OnMouseUp / OnMouseDown // pixel pos
SynEDit.RegisterBeforeMouseDownHandler() // pixel pos
or MouseActions....
to get notified when the mouse is pressed
To get line/byte from pixels
SynEdit.PixelsToRowColumn() // screen pos
SynEdit.PixelsToLogicalPos() // text pos (that is what you want)
-------------
To get a byte index into the entire text (like memo does):
http://wiki.freepascal.org/Lazarus_1.6.0_release_notes#SynMemo_is_now_Deprecated(This may not be accurate for line endings.)