Delphi-获得备忘录中插入符号所在的整个单词

|| 如果插入符号直接相邻或在备忘中的单词中,我需要能够选择TMemo的整个单词。 考虑以下情况(其中|是插入号)
Here is some text|
=选择
text
Here is so|me text
=选择
some
|Here is some text
=选择
Here
Here is some text |
=选择\'\'     
已邀请:
        检查此代码并附带注释以说明其工作原理。
function SelectWordUnderCaret(AMemo:TMemo):string;
var
   Line    : Integer;
   Column  : Integer;
   LineText: string;
   InitPos : Integer;
   EndPos  : Integer;
begin
   //Get the caret position
   Line   := AMemo.Perform(EM_LINEFROMCHAR,AMemo.SelStart, 0) ;
   Column := AMemo.SelStart - AMemo.Perform(EM_LINEINDEX, Line, 0) ;
   //Validate the line number
   if AMemo.Lines.Count-1 < Line then Exit;

   //Get the text of the line
   LineText := AMemo.Lines[Line];

   Inc(Column);
   InitPos := Column;
   //search the initial position using the space symbol as separator
   while (InitPos > 0) and (LineText[InitPos] <> \' \') do Dec(InitPos);
   Inc(Column);

   EndPos := Column;
   //search the final position using the space symbol as separator
   while (EndPos <= Length(LineText)) and (LineText[EndPos] <> \' \') do Inc(EndPos);

   //Get the text
   Result := Trim(Copy(LineText, InitPos, EndPos - InitPos));

   //Finally select the text in the Memo
   AMemo.SelStart  := AMemo.Perform(EM_LINEINDEX, Line, 0)+InitPos;
   AMemo.SelLength := Length(Result);
end;
你可以这样使用
procedure TForm1.Button1Click(Sender: TObject);
begin
     Caption := SelectWordUnderCaret(Memo1) ;
end;
    

要回复问题请先登录注册