[修正] Firemonkey Windows & macOS 平台下 Edit & Memo 中文输入后会取消原选取文字的 BUG

问题: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"&gt;or</span> (FSelStart <> LCaret) <span style="color: #0000ff"&gt;or</span> (FSelEnd <><span style="color: #000000"&gt; LCaret); CaretPosition :</span>=<span style="color: #000000"&gt; 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"&gt;if</span> SelectionChanged <span style="color: #0000ff"&gt;then</span><span style="color: #000000"&gt;
  UpdateSelectionPointPositions;
</span><span style="color: #0000ff"&gt;if</span> TextChanged <span style="color: #0000ff"&gt;then</span><span style="color: #000000"&gt;
  LinkObserversValueModified(Self.Observers);

<span style="color: #0000ff">end<span style="color: #000000">;
<span style="color: #0000ff">end;

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...