2017-01-15 10 views
1

Я хотел бы прокрутить текущий вид до определенной строки в FMX Memo. Я имел обыкновение использовать ниже код в VCL компонента:Как прокрутить текущий вид к определенной строке в заметке FMX в C++ Builder?

TopVisibleRow = SendMessage(LogMemo->Handle, EM_GETFIRSTVISIBLELINE, 0, 0); 
SendMessage(LogMemo->Handle, EM_LINESCROLL, 0 , TargetLine - TopVisibleRow)); 

Есть ли способ, чтобы перейти к конкретной строке в FMX памятку для применения кросс-платформенной?

Я использую C++ Builder Берлин Update 2.

+0

Не к конкретной строке непосредственно, нет. Но 'TMemo' в FireMonkey имеет методы' ScrollTo', 'ScrollBy',' PosToTextPos' и 'PosToTextPos', поэтому вы должны иметь возможность рассчитать необходимые смещения. –

+0

«TextPosToPos» или «PosToTextPos» просто возвращает целое число, представляющее позицию символа, но для прокрутки ему нужно X, Y в поплавке. Мне нужен метод, чтобы скрывать их. –

+0

, как и в VCL, если вы знаете позицию первой видимой строки и нужной строки, вы можете вычислить смещение прокрутки. В FireMonkey нет 'EM_GETFIRSTVISIBLELINE', но' ScrollTo() 'использует [' ViewportPosition'] (http://docwiki.embarcadero.com/Libraries/en/FMX.ScrollBox.TCustomPresentedScrollBox.ViewportPosition) для перехода к определенной координате , Это большая часть работы для вас, если вы можете выяснить, как преобразовать текстовые позиции в/из координат. Возможно, может помочь ['TMemo.GetPointPosition (0,0)'] (http://docwiki.embarcadero.com/Libraries/en/FMX.Memo.TMemo.GetPointPosition). –

ответ

0

Ниже код работает в FMX:

Memo1->CaretPosition = TCaretPosition::Create(ROW_NUM, 0); 

 Смежные вопросы

  • Нет связанных вопросов^_^