修改Delphi 10.1.2 edit控件在android的复制、剪切和粘贴样式
Delphi 10.1.2 edit控件在android默认的复制、剪切和粘贴样式太丑,经悟能-DelphiTeacher的提示,用最简单的代码修改后稍有改观。
默认的样式:

修改后的样式:

修改FMX.Platform.Android.pas
找到procedure TWindowManager.ShowContextMenu(const ItemsToShow: TContextMenuItems),按下面的红字增加Copy、cut和Paste button的setBackgroundColor属性。
FCopyButton.setBackgroundColor(TAlphaColors.Yellowgreen);//------增加这行,可以根据自己的喜好修改
FCutButton.setBackgroundColor(TAlphaColors.Yellowgreen);//------增加这行,可以根据自己的喜好修改
FPasteButton.setBackgroundColor(TAlphaColors.Yellowgreen);//------增加这行,可以根据自己的喜好修改
procedure TWindowManager.ShowContextMenu(const ItemsToShow: TContextMenuItems);
var
LA: TTextLayout;
P: TPoint;
HasSelection, HasClipboard: Boolean;
ApproxWidth: Integer;
ApproxHeight: Integer;
ClipboardValue: TValue;
ResID: Integer;
TextInput: ITextInput;
VirtualKeyboard: IVirtualKeyboardControl;
ClipboardSvc: IFMXClipboardService;
begin
DestroyPasteMenuTimer;
ApproxWidth := FContextMenuPopupSize.cx;
ApproxHeight := FContextMenuPopupSize.cy;
if not FContextMenuVisible and Supports(FFocusedControl, ITextInput, TextInput) and not FSelectionInProgress then
begin
FContextMenuVisible := True;
HasSelection := not TextInput.GetSelection.IsEmpty;
TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, ClipboardSvc);
ClipboardValue := ClipboardSvc.GetClipboard;
HasClipboard := not ClipboardValue.IsEmpty and not ClipboardValue.ToString.IsEmpty;
if FContextMenuPopup = nil then
begin
FContextMenuLayout := TJLinearLayout.JavaClass.init(TAndroidHelper.Activity);
FContextButtonsLayout := TJLinearLayout.JavaClass.init(TAndroidHelper.Activity);
LA := TTextLayoutManager.DefaultTextLayout.Create;
LA.Font.Style := LA.Font.Style + [TFontStyle.fsBold];
P := Point(0, 0);
Supports(FFocusedControl, IVirtualKeyboardControl, VirtualKeyboard);
if HasSelection then
begin
//Copy button
if (TContextMenuItem.Copy in ItemsToShow) and ((VirtualKeyboard = nil) or not VirtualKeyboard.IsPassword) then
begin
ResID := TAndroidHelper.GetResourceID('android:string/copy');
if ResID <> 0 then
LA.Text := TAndroidHelper.GetResourceString(ResID)
else
LA.Text := SEditCopy.ToUpper;
FCopyButton := TJButton.JavaClass.init(TAndroidHelper.Activity);
if ResID <> 0 then
FCopyButton.setText(ResID)
else
FCopyButton.setText(StrToJCharSequence(LA.Text));
FCopyButton.setTypeface(TJTypeface.JavaClass.DEFAULT_BOLD);
FCopyButton.setBackgroundColor(TAlphaColors.Yellowgreen);//------增加这行,可以根据自己的喜好修改
FCopyClickListener := TCopyButtonClickListener.Create;
FCopyButton.setOnClickListener(FCopyClickListener);
LA.Font.Size := FCopyButton.getTextSize;
P.X := P.X + Ceil((LA.TextWidth + 2) * FScale);
P.Y := Max(P.Y, Ceil((LA.TextHeight + 2) * FScale));
ApproxHeight := P.Y + FCopyButton.getPaddingTop + FCopyButton.getPaddingBottom;
end;
//Cut button
if (TContextMenuItem.Cut in ItemsToShow) and not TextReadOnly and ((VirtualKeyboard = nil) or not VirtualKeyboard.IsPassword) then
begin
ResID := TAndroidHelper.GetResourceID('android:string/cut');
if ResID <> 0 then
LA.Text := TAndroidHelper.GetResourceString(ResID)
else
LA.Text := SEditCut.ToUpper;
FCutButton := TJButton.JavaClass.init(TAndroidHelper.Activity);
if ResID <> 0 then
FCutButton.setText(ResID)
else
FCutButton.setText(StrToJCharSequence(LA.Text));
FCutButton.setTypeface(TJTypeface.JavaClass.DEFAULT_BOLD);
FCutButton.setBackgroundColor(TAlphaColors.Yellowgreen);//------增加这行,可以根据自己的喜好修改
FCutClickListener := TCutButtonClickListener.Create;
FCutButton.setOnClickListener(FCutClickListener);
LA.Font.Size := FCopyButton.getTextSize;
P.X := P.X + Ceil((LA.TextWidth + 2) * FScale);
P.Y := Max(P.Y, Ceil((LA.TextHeight + 2) * FScale));
end;
end;
if HasClipboard and (TContextMenuItem.Paste in ItemsToShow) and not TextReadOnly then
begin
//Paste button
ResID := TAndroidHelper.GetResourceID('android:string/paste');
if ResID <> 0 then
LA.Text := TAndroidHelper.GetResourceString(ResID)
else
LA.Text := SEditPaste.ToUpper;
FPasteButton := TJButton.JavaClass.init(TAndroidHelper.Activity);
if ResID <> 0 then
FPasteButton.setText(ResID)
else
FPasteButton.setText(StrToJCharSequence(LA.Text));
FPasteButton.setTypeface(TJTypeface.JavaClass.DEFAULT_BOLD);
FPasteButton.setBackgroundColor(TAlphaColors.Yellowgreen);//------增加这行,可以根据自己的喜好修改
FPasteClickListener := TPasteButtonClickListener.Create;
FPasteButton.setOnClickListener(FPasteClickListener);
LA.Font.Size := FPasteButton.getTextSize;
P.X := P.X + Ceil((LA.TextWidth + 2) * FScale);
P.Y := Max(P.Y, Ceil((LA.TextHeight + 2) * FScale));
if ApproxHeight = 0 then
ApproxHeight := P.Y + FPasteButton.getPaddingTop + FPasteButton.getPaddingBottom;
end;
修改Delphi 10.1.2 edit控件在android的复制、剪切和粘贴样式的更多相关文章
- Delphi 10 Seattle 小票打印控件TQ_Printer
TQ_Printrer控件,是一个为方便需要控制打印命令而设计的跨平台专用控件,已包含标准ESC/POS打印控制的基本指令在内(这些基本指令已能很好的满足多数项目使用). TQ_Printrer控件让 ...
- WPF的DataGrid控件从excel里复制数据然后粘贴
WPF的DataGrid控件不能像winform的DataGridView控件一样,支持值的粘贴.WPF的DataGrid控件本质上是跟数据绑定联系在一起,所以需要进行复制粘贴的操作,可以在wpf里用 ...
- win32 修改Edit控件文本颜色与背景色
#define WM_CTLCOLORMSGBOX 0x0132 #define WM_CTLCOLOREDIT 0x0133 //编辑控件Edit #define WM_CTLCOLORLISTBO ...
- delphi Components[i]清除所有edit控件中的内容
(* 一般的清空combobox方法 combobox1.clear; ... combobox9.clear; *) procedure TForm1.Button1Click(Sender: ...
- Delphi在Listview中加入Edit控件
原帖 : http://www.cnblogs.com/hssbsw/archive/2012/06/03/2533092.html Listview是一个非常有用的控件,我们常常将大量的数据(如数据 ...
- DELPHI 动态 创建和释放 多个 EDIT 控件
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, ...
- 增加duilib edit控件的提示功能和多种文字颜色
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41786407 duilib的CEditUI控件内部使用了win32的原生 ...
- Delphi下使用Oracle Access控件组下TOraSession控件链接
Delphi下使用Oracle Access控件组下TOraSession控件链接数据库,使用 orsn1.Options.Direct:=true; orsn1.Server:=IP:Port: ...
- emWin(ucGui) Edit控件数值模式 ——符号编辑 worldsing
emWin(ucGui) Edit控件数值模式出现负数值编辑时,如果键盘按键全可以设置独立的"-","+"键,这样可以正常编辑正数和负数,但是要没有设置这两个键 ...
随机推荐
- python练习_购物车(简版)
python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下 ...
- 使用OpenFiler来模拟存储配置RAC中ASM共享盘及多路径(multipath)的测试
第一章 本篇总览 之前发布了一篇<Oracle_lhr_RAC 12cR1安装>,但是其中的存储并没有使用多路径,而是使用了VMware自身提供的存储.所以,年前最后一件事就是把多路径学习 ...
- StringUtils工具类常用方法介绍(持续更新)
StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出Nu ...
- Myeclipse插件将wsdl生成java客户端代码
一.建立webservice服务端: 1.新建一个web service project,名称为webservice_server截图如下,点击finish. 2.选择工程,点击右键,选择new-&g ...
- 冬天 苹果笔记 macbook pro 消除静电的方法
冬天mac除静电的方法 1.mac虽然声称不需要关机,但和apple技术人员沟通后,还是需要1周进行一次关机操作 2.通过苹果黑科技重置面板上的静电,如下: apple官方的地址: https://s ...
- 前端基本知识(二):JS的原始链的理解
之前一直对于前端的基本知识不是了解很详细,基本功不扎实,但是前端开发中的基本知识才是以后职业发展的根基,虽然自己总是以一种实践是检验真理的唯一标准,写代码实践项目才是唯一,但是经常遇到知道怎么去解决这 ...
- Java字符串之String与StringBuilder
String与SringBuiler的一些比较 在Java中,我们会大量使用字符串,但是String究竟是怎样工作的我们可能没有想过太多,其实在String类中,每一个看起来会修改String值的 ...
- Jenkins权限配置失误后导致登录失败的解决办法
为了便于管理,Jenkins一般需要设置用户,而且这些用户是需要配置相应的权限的,如果一不小心配置的时候出了问题,那么,你就斯巴达了. 这里,用我的切身经历,为大家说一下Jenkins因为权限配置失误 ...
- Spring MVC 教程(比较全的一篇文章了)
http://elf8848.iteye.com/blog/875830 11年1月份的文章,但是Spring3,现在是4,不过还是很实用
- Android基础工具函数代码集
整理在学习研究Android开发,编写了一些基本用到的工具集,现在整理分享(后续会持续更新,有问题还请指出). 1.HttpClient工具,使用Apache的HttpClient类实现get和pos ...