gpt4 book ai didi

delphi - 允许对嵌套在 FireMonkey TPopup 内的 FireMonkey TEdit 进行键盘输入

转载 作者:行者123 更新时间:2023-12-03 15:52:21 31 4
gpt4 key购买 nike

我正在努力让 FireMonkey TEdit 嵌套在 FireMonkey TPopup 中来接收键盘输入。桌面和移动项目都会发生这种情况,尽管我对后者感兴趣:

  1. 创建一个新的 FMX 项目。

  2. 向表单添加一个 TButton 和一个 TPopup,并向 TPopup 添加一个 TEdit .

  3. 将弹出窗口的 Placement 属性设置为 plCenter,并将其 PlacementTarget 设置为 Button1

  4. 通过将弹出窗口的 IsOpen 属性设置为 True 来处理按钮的 OnClick 事件。

  5. 运行项目,单击/点击按钮,然后尝试在编辑控件中输入文本。

有什么想法吗?正确的答案当然可能是:不支持键盘输入,但是documentation没有说任何一种方式。

最佳答案

有同样的问题,但通过很少的覆盖修复了行为。将表单更改为 TFormStyle.Normal 并处理 OnDeactivate 事件。

    TPopup2 = class(TPopup)

protected
function CreatePopupForm: TFmxObject; override;
end;

TPopupForm2 = class(TCustomPopupForm)

private
procedure OnDeactivateEvent(Sender: TObject);
public
constructor CreateNew(AOwner: TComponent; Dummy: NativeInt = 0); override;
end;

function TPopup2.CreatePopupForm: TFmxObject;
var
NewStyle: TStyleBook;
NewForm: TPanelForm;
begin
NewForm := nil;
try
if not Assigned(StyleBook) and Assigned(Scene) then
NewStyle := Scene.GetStyleBook
else
NewStyle := StyleBook;
NewForm := TPopupForm2.Create(Self, NewStyle, PlacementTarget);
except
FreeAndNil(NewForm);
Raise;
end;
Result := NewForm;
end;

constructor TPopupForm2.CreateNew(AOwner: TComponent; Dummy: NativeInt);
begin
inherited;
BeginUpdate;
try
FormStyle := TFormStyle.Normal;
BorderStyle := TFmxFormBorderStyle.None;
Fill.Kind := TBrushKind.None;
Transparency := True;
OnDeactivate := OnDeactivateEvent;
finally
EndUpdate;
end;

end;

procedure TPopupForm2.OnDeactivateEvent(Sender: TObject);
begin
Close;
end;

关于delphi - 允许对嵌套在 FireMonkey TPopup 内的 FireMonkey TEdit 进行键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20890373/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com