fmx的memo设置了readonly := true,有没有办法禁止长按选中复制?

解决方案 »

  1.   

    Memo的Enable属性设为False,外部一样可以写进去。
      

  2.   

    memo的CopyToClipboard;不是虚方法,也没有OnCopyToClipboard;之类的事件,只有两种办法。
    第一,修改Memo的源代码
    第二,简单粗暴在你要不需要它拷贝的时候加上
    TPlatformServices.Current.SupportsPlatformService先获取剪切板备份下来
    TPlatformServices.Current.RemovePlatformService(IFMXClipboardService);
    让系统不支持剪切板就行了。
    缺点是其他的控件也不能复制了。
    需要可以复制的话TPlatformServices.Current.AddPlatformService();把刚才备份的加回来
      

  3.   

    1、TMemo 设置ReadOnly:=True; 这是不能通过键盘录入字符。并非屏蔽复制功能。
    2、TMemo 右键默认系统的快捷菜单,其中就有复制、拷贝等等项目。
    3、屏蔽TMemo的右键快捷菜单,可以通过窗口中加入一个TPopupMenu,不对TPopupMenu进行设置,即让它无TMenuItem菜单项目。再让TMemo的PopupMenu指定为该PopupMenu1。这样,运行时你的Tmemo的右键,就屏蔽了。
      

  4.   

    CanFocus设置为False试一下。完全禁止编辑的话可以用Label。 
      

  5.   

    如果需屏蔽按键复制,可以这样
    procedure Tfrmx.memoKeyPress(Sender: TObject; var Key: Char);
    begin
      Key:=Char(0);
    end;
      

  6.   

    此法可以控制快捷键。
    Fmx的Memo没有KeyPress事件。