问题:Firemonkey Windows & macOS 平台下 Edit & Memo 中文输入后会取消原选取文字的 BUG

适用版本:Delphi 10.1.2 & 10.2.1

修正后效果:

修正代码:

请将 FMX.Edit.Style.pas 复制到自己的工程目录下,再修改如下代码: (10.2.2 已修正此问题)

procedure TStyledEdit.IMEStateUpdated;
var
CombinedText: string;
begin
CombinedText := FTextService.CombinedText;
FTextLayout.Text := CombinedText;
SetCaretPosition(GetOriginCaretPosition);
Model.SetTextWithoutValidation(CombinedText);
if FPrompt <> nil then
FPrompt.Visible := CombinedText.IsEmpty;
{+++>}{$IF Defined(IOS) or Defined(ANDROID)} // 加入此行, 修正中文输入后会取消原选取文字的 BUG by Aone (2017.11.17)
if Model.SelLength > then
begin
Model.DisableNotify;
try
Model.SelLength := ;
finally
Model.EnableNotify;
end;
UpdateSelectionPointPositions;
end;
{+++>}{$ENDIF} // 加入此行, 修正中文输入后会取消原选取文字的 BUG by Aone (2017.11.17)
LinkObserversValueModified(Self.Observers);
DoChangeTracking;
DoTyping;
end;

请将 FMX.Memo.Style.pas 复制到自己的工程目录下,再修改如下代码:(10.2.2 未已修正此问题)

procedure TStyledMemo.IMEStateUpdated;

...略...

    SelectionChanged := FSelected or (FSelStart <> LCaret) or (FSelEnd <> LCaret);
CaretPosition := LCaret;
{+++>}{$IF Defined(IOS) or Defined(ANDROID)} // 加入此行, 修正中文输入后会取消原选取文字的 BUG by Aone (2017.11.17)
FSelStart := LCaret;
FSelected := False;
FSelEnd := FSelStart;
UpdateSelectionInModel;
{+++>}{$ENDIF} // 加入此行, 修正中文输入后会取消原选取文字的 BUG by Aone (2017.11.17) if SelectionChanged then
UpdateSelectionPointPositions;
if TextChanged then
LinkObserversValueModified(Self.Observers);
end;
end;

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

  1. [修正] Firemonkey Windows 控件有虚线残影问题

    说明:在 Wndows 显示时,有时控件左方会显示一条虚线 适用:Firemonkey Windows (Berlin 或更高版) 修正方法: 请将源码 FMX.Canvas.D2D.pas 复制到自 ...

  2. macOS平台下Qt应用程序菜单翻译及调整

    一.翻译 在macOS平台上,系统会为应用程序菜单添加一些额外的菜单项.先来看一些典型的例子: 这个是Qt Creator的菜单,系统为应用程序菜单添加了一些桌面显示操作相关的菜单项: 这个是Qt D ...

  3. MacOS平台下@rpath在动态链接库中的应用

    一.背景介绍 公司开发的一个底层库被用在了Mac平台的多个产品中.在开发这个底层库的初期,对于Mac OSX下的Install name 并没有过多的了解.对于XCode中的install name项 ...

  4. 开发Windows RT平台下的Windows应用商店应用程序的遇到的问题备忘

    1. 关于获取Win8开发者许可证的问题: 有一种情况是:如果系统是Win8.0, 那么如果先激活了windows8(用激活工具), 再安装VS2012,那么在新建项目时会提示获取windows8开发 ...

  5. cocos2dx windows phone平台下CCLabelTTF自己主动换行的实现(2)

    前几天发过一篇文章说怎样实现wp8下的CCLabelTTF怎样自己主动换行,后来发现果如预料的那般.效果非常不好.主要是非等宽字体的情况下看着非常糟心.因此再改动了一版.效果要好非常多了. 详细实现事 ...

  6. EasyDarwin开源流媒体云平台中boost Base64编解码后与源长度不匹配的bug

    本文转自EasyDarwin团队Alex的博客:http://blog.csdn.net/cai6811376 EasyDarwin云平台中部分协议使用了Base64编码昨晚报文通信的载体.比如在对摄 ...

  7. Windows平台下Git服务器搭建--------gitblit

    Windows(server)平台下Git服务器搭建 第一步:下载Java,安装,配置环境变量. 第二步:下载Gitblit.下载地址:http://www.gitblit.com/ 第三步:解压缩下 ...

  8. Windows平台下MySQL常用操作与命令

    Windows平台下MySQL常用操作与命令 Windows平台下MySQL常用操作与命令,学习mysql的朋友可以参考下. 1.导出整个数据库 mysqldump -u 用户名 -p --defau ...

  9. [修正] Berlin Firemonkey Windows 控件左方显示虚线问题

    说明:在 Wndows 显示时,有时控件左方会显示一条虚线 适用:Berlin Firemonkey 修正方法: 请将源码 FMX.Platform.Win.pas 复制到自己的工程目录里,再进行修改 ...

随机推荐

  1. CCSUOJ评测系统——第三次scrum冲刺

    1.小组成员 舒 溢 许嘉荣 唐 浩 黄欣欣 廖帅元 刘洋江 薛思汝 2.个人在小组第三次冲刺的任务及其完成情况描述. 本人在小组第三次冲刺的任务是负责代码的编写,其他人提需求和改进,代码是采用Git ...

  2. Oracle EBS 有效银行账户取值

    SELECT ba.bank_account_id, --银行账户key ftv.territory_short_name, --国家 ftv.territory_code, --国家简称 cb.ba ...

  3. Vue2学习笔记:事件对象、事件冒泡、默认行为

    1.事情对象 <!DOCTYPE html> <html> <head> <title></title> <meta charset= ...

  4. I/O复用及epoll基础知识

    IO multiplexing IO multiplexing这个词可能有点陌生,但是如果我说select,epoll,大概就都能明白了.有些地方也称这种IO方式为event driven IO.我们 ...

  5. mblog相关

    Mblog mblog(mini blog) 是一个用Java实现的多人博客, 使用 mysql 数据库. 使用的框架: Bootstrap 3 Spring mvc Velocity Hiberna ...

  6. 如何利用RMAN Debug和10046 Trace来诊断RMAN问题?

         在做Support的这些年,我很大的收获是掌握了许多troubleshooting问题的方法和工具,对于每一类问题,都可以大体归类出一些诊断方法.无论问题多么复杂,像扒洋葱一样,一层层去掉无 ...

  7. win7 下安装oracle 10 g

    首先下对版本,Oracle 10g支持Win7版: http://download.oracle.com/otn/nt/oracle10g/10203/10203_vista_w2k8_x86_pro ...

  8. Oracle Order By 排序 非主键时 紊乱 重复 问题

    Oracle的分页查询是没有进行任何排序操作的,Oracle是顺序的从数据块中读取符合条件的数据返回到客户端. 而Oracle的排序算法不具有稳定性,也就是说,对于排序键值相等的数据,这种算法完成排序 ...

  9. 第八章 计时器(BEEPER2)

    /*------------------------------------- BEEPER2.C -- Timer Demo Program No.1 (c) Charles Petzold, 19 ...

  10. October 1st 2017 Week 40th Sunday

    It's only after we've lost everything that we're free to do anything. 只有我们失去了所有之后我们才能随心而为. After los ...