XE8 修复 个别机器 输入框 EDIT MEMO 无响应 问题

http://​http://www.2pascal.com/forum.php?mod=viewthread&tid=1661&highlight=edit%2Bmemo

(****************************************************)
(* *)
(* 编写:爱吃猪头肉 & Flying Wang *)
(* 上面的版权声明请不要移除。 *)
(* 2015-07-11 *)
(* *)
(*     禁止发布到城通网盘。    *)
(* *)
(****************************************************)

首先 感谢 [沈阳]红鱼儿(391879); 的参与测试,找出了问题的可能位置。

找到安装目录下的
FMX.Platform.Android
将他们另存到(复制到)其他目录,例如您的工程目录。

将新复制出的文件加入到您的工程中。

【第一步】
打开 FMX.Platform.Android
添加如下信息
(* ************************************************ *)
(* *)
(* 修改:爱吃猪头肉 & Flying Wang 2015-07-11 *)
(* 上面的版权声明请不要移除。 *)
(* *)
(*     禁止发布到城通网盘。    *)
(* *)
(* ************************************************ *)
这是我的版权,请您尊重下。

【第二步】
找到
procedure TPlatformAndroid.RunOnUIThread(Proc: TThreadProcedure);

将上面的函数修改为
//fix by Flying Wang & 爱吃猪头肉
procedure TPlatformAndroid.RunOnUIThread(Proc: TThreadProcedure);
begin
  //MainActivity.runOnUiThread(TSimpleProcedureRunner.Create(Proc));
  CallInUIThread(
  procedure()
  begin
    Proc;
  end);
end;

找到
procedure TPlatformAndroid.SynchronizeOnUIThread(Proc: TThreadProcedure);

将上面的函数修改为
//fix by Flying Wang & 爱吃猪头肉
procedure TPlatformAndroid.SynchronizeOnUIThread(Proc: TThreadProcedure);
var
  Runner: TSimpleProcedureRunner;
begin
//  CallInUIThread(
//  procedure()
//  begin
//  Runner := TSimpleProcedureRunner.Create(Proc);
//  MainActivity.runOnUiThread(Runner);
//  Runner.Event.WaitFor;
//  end);
  CallInUIThreadAndWaitFinishing(
  procedure()
  begin
    Proc;
  end);
end;

找到
procedure TPlatformAndroid.SetClipboard(Value: TValue);

将上面的函数修改为
//fix by Flying Wang & 爱吃猪头肉
procedure TPlatformAndroid.SetClipboard(Value: TValue);
var
  Setter: TClipboardSetter;
begin
  Setter := TClipboardSetter.Create(Value.ToString);
  CallInUIThread(
  procedure()
  begin
  SharedActivity.runOnUiThread(Setter);
  end);
  Setter.Done.WaitFor(INFINITE);
end;

找到
function TPlatformAndroid.GetClipboard: TValue;

将上面的函数修改为
//fix by Flying Wang & 爱吃猪头肉
function TPlatformAndroid.GetClipboard: TValue;
var
  Getter: TClipboardGetter;
begin
  Getter := TClipboardGetter.Create;
  CallInUIThread(
  procedure()
  begin
  SharedActivity.runOnUiThread(Getter);
  end);
  Getter.Done.WaitFor(INFINITE);
  Result := Getter.Value;
end;

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享