1) Запоминать положение курсора при редактировании и смысла нет, т. к. длина строки меняется, и запомненные положения его за местом редактирования не соответствуют действительности

2) В RichEdit количество строк (точка внизу) считается не по символам 10 и 13, а по видимому разбиению строк и тоже изменяется при именении размеров RichEdit-а

Логика работы должна это учитывать

------------ Дoбавленo в 16.13:
Add(MainForm,2953706,539,140)
{
}
Add(RichEdit,9333498,301,28)
{
Left=10
Top=10
Width=340
Height=185
Strings=#7:флоывав|6:ьтячси|7:щзйцшге|
Point(Position)
link(onChange,13636937:doValue,[])
}
Add(Label,2765785,539,98)
{
Left=10
Top=205
}
Add(IntegerArray,10814854,483,21)
{
IntArray=[]
}
Add(ArrayRW,317121,455,98)
{
link(onRead,2765785:doText,[])
link(Array,10814854:Array,[(461,85)(489,85)])
link(Value,9333498:Position,[(475,75)(328,75)])
}
Add(Edit,11084464,301,84)
{
Left=80
Top=200
Text="0"
DataType=2
link(onEnter,1582635:doEvent1,[])
}
Add(Hub,1582635,343,91)
{
link(onEvent1,11084464:doText2,[(363,97)(363,79)(289,79)(289,97)])
link(onEvent2,317121:doRead,[])
}
Add(DoData,11914164,490,140)
{
link(onEventData,2953706:doCaption,[])
link(Data,10814854:Count,[])
}
Add(Hub,5751639,427,112)
{
link(onEvent1,317121:doAdd,[])
link(onEvent2,11914164:doData,[(450,125)(450,146)])
}
Add(MemFifo,13636937,378,28)
{
link(onData,10693080:doCompare,[(421,34)(421,87)(366,87)(366,118)])
}
Add(If_else,10693080,378,112)
{
Type=5
link(onTrue,5751639:doEvent1,[])
link(Op1,13636937:Value1,[])
link(Op2,13636937:Value2,[])
}
Кстати, просто установка курсора на поле тоже вызывает событие onChange
