问题:Firemonkey Windows & macOS 平台下 Edit & Memo 中文输入后会取消原选取文字的 BUG
适用版本:Delphi 10.1.2 & 10.2.1
修正后效果:
bedfe0c.gif" alt="">
修正代码:
请将 FMX.Edit.Style.pas复制到自己的工程目录下,再修改如下代码:(10.2.2 已修正此问题)
==etoriginCaretPosition);
Model.SetTextWithoutValidation(CombinedText);
FPrompt <> = 中文输入后会取消原选取文字的 BUG by Aone (2017.11.17)
Model.SelLength >
disableNotify;
= 中文输入后会取消原选取文字的 BUG by Aone (2017.11.17)
;
请将FMX.Memo.Style.pas 复制到自己的工程目录下,再修改如下代码:(10.2.2 正此问题)
SelectionChanged :</span>= FSelected <span style="color: #0000ff">or</span> (FSelStart <> LCaret) <span style="color: #0000ff">or</span> (FSelEnd <><span style="color: #000000"> LCaret);
CaretPosition :</span>=<span style="color: #000000"> LCaret;
<span style="color: #008000">{<span style="color: #008000">+++><span style="color: #008000">}{<span style="color: #008000">$IF Defined(IOS) or Defined(ANDROID)<span style="color: #008000">} <span style="color: #008000">//<span style="color: #008000"> 加入此行,修正中文输入后会取消原选取文字的 BUG by Aone (2017.11.17)FSelStart :=<span style="color: #000000"> LCaret;
FSelected :=<span style="color: #000000"> False;
FSelEnd :=<span style="color: #000000"> FSelStart;
UpdateSelectionInModel;
<span style="color: #008000">{<span style="color: #008000">+++><span style="color: #008000">}{<span style="color: #008000">$ENDIF<span style="color: #008000">} <span style="color: #008000">//<span style="color: #008000"> 加入此行,修正中文输入后会取消原选取文字的 BUG by Aone (2017.11.17)
<span style="color: #0000ff">if</span> SelectionChanged <span style="color: #0000ff">then</span><span style="color: #000000">
UpdateSelectionPointPositions;
</span><span style="color: #0000ff">if</span> TextChanged <span style="color: #0000ff">then</span><span style="color: #000000">
LinkObserversValueModified(Self.Observers);
<span style="color: #0000ff">end<span style="color: #000000">;
<span style="color: #0000ff">end;