Как получить персонажа по пунктам или по индексу из TRichedit - PullRequest
1 голос
/ 07 июня 2011

У меня есть функция, которая возвращает индекс символа GetCharFromPos (Pt: TPoint): Integer;

Теперь я хотел получить характер этой позиции. как GetCharByIndex (Index: Integer): Char;

Ответы [ 2 ]

6 голосов
/ 07 июня 2011

Эффективный способ сделать это с использованием чистого VCL - это использовать SelStart, SelLength и SelText.

function GetCharByIndex(Index: Integer): Char;
begin    
  RichEdit.SelStart := Index;
  RichEdit.SelLength := 1;
  Result := RichEdit.SelText[1];
end;

Вы, вероятно, захотите сохранить выделение перед его изменением, а затем восстановить его после прочтения символа.


Это, однако, довольно грязный способ чтения персонажа. Если вы готовы использовать сырой Win32 API, тогда вы можете использовать EM_GETTEXTRANGE.

1 голос
/ 07 июня 2011

Вот как вы возвращаете символ с заданным индексом из TRichEdit:

Result := RichEdit1.Text[Index];
...