我正在努力让 FireMonkey TEdit
嵌套在 FireMonkey TPopup
中以接收键盘输入。桌面和移动项目都会发生,尽管我对后者感兴趣:
TButton
和 TPopup
添加到表单中,并将 TEdit
添加到 TPopup
。 Placement
属性设置为 plCenter
,将其 PlacementTarget
设置为 Button1
。 OnClick
属性设置为 IsOpen
来处理按钮的 True
事件。 有任何想法吗?正确答案当然可能是:不支持键盘输入,但 documentation 不支持。
最佳答案
键盘输入似乎不适用于 TPopup。
一个简单的解决方案是使用 TForm 作为弹出表单:
unit Popup;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Edit;
type
TfmPopup = class(TForm)
Edit1: TEdit;
Panel1: TPanel;
procedure FormDeactivate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
private
protected
public
end;
var
fmPopup: TfmPopup;
implementation
{$R *.fmx}
procedure TfmPopup.FormDeactivate(Sender: TObject);
begin
Close;
end;
procedure TfmPopup.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
if Key = vkEscape then begin
Close;
end;
end;
end.
表格资源:
object fmPopup: TfmPopup
Left = 0
Top = 0
BorderStyle = None
Caption = 'Form1'
ClientHeight = 94
ClientWidth = 142
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop, iPhone, iPad]
OnDeactivate = FormDeactivate
OnKeyDown = FormKeyDown
DesignerMobile = False
DesignerWidth = 0
DesignerHeight = 0
DesignerDeviceName = ''
DesignerOrientation = 0
DesignerOSVersion = ''
object Panel1: TPanel
Align = Client
Height = 94.000000000000000000
Width = 142.000000000000000000
TabOrder = 1
object Edit1: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 1
Position.X = 20.000000000000000000
Position.Y = 32.000000000000000000
Width = 100.000000000000000000
Height = 22.000000000000000000
end
end
end
当然你可以改进这个简单的例子:
不要将 TEdit 放在这个表单上,而是继承这个表单并将编辑放在那里。
例如。:
TfmMyPopup = class(TfmPopup)
Edit1: TEdit;
private
protected
public
end;
使用 TPopup 等一些功能改进 TfmPopup 的基类:
例如。放置。
愿您可以在 TfmPopup 中使用从未显示的 TPopup 来使用 TPopup 的放置例程,而无需重写此代码。
关于delphi - 允许键盘输入到嵌套在 FireMonkey TPopup 中的 FireMonkey TEdit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20890373/