加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

修改Delphi 10.1.2 edit控件在android的复制、剪切和粘贴样式

发布时间:2020-12-15 09:53:33 所属栏目:大数据 来源:网络整理
导读:Delphi 10.1.2 edit控件在android默认的复制、剪切和粘贴样式太丑,经悟能-DelphiTeacher的提示,用最简单的代码修改后稍有改观。 默认的样式: 修改后的样式: 修改FMX.Platform.Android.pas 找到procedure TWindowManager.ShowContextMenu(const ItemsToSh

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;

?

https://www.cnblogs.com/qiufeng2014/p/6574701.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读