【问题标题】:Is there a way to set the Keyboard Type when entering a value in a StringGrid?在 StringGrid 中输入值时,是否可以设置键盘类型?
【发布时间】:2013-06-14 05:38:58
【问题描述】:

我想创建一个带有固定 StringGrid 的 iOS 应用程序。这个东西的每个单元格都应该只接受数值。为此,我想将 KeyboardType 设置为 vktNumberPad ......但到目前为止还没有找到一个入口点。这里有没有人知道如何做到这一点?

好的,所以按照 Mikes 的提示,我开始使用自己的列类。

TNumEditCell = class(TEdit)
end;
TNumberColum = class(TStringcolumn)
private
  function CreateCellControl: TStyledControl; override;
end;

令人费解的部分来了:

function TNumberColum.CreateCellControl: TStyledControl;
begin
  result := TNumEditCell.Create(Self);
  TNumEditCell(result).KeyboardType := vktNumberPad; // <- is undeclared!! What?!
  TNumEditCell(result).OnChange := DoTextChanged;
end;

我们的好朋友编译器不知道vktNumberPad 是什么。即使我用电线杆FMX.Types.TVirtualKeyboardType(vktNumberPad) 指向他也不行。我想我做错了什么:(

最终编辑:确实我做错了什么,正如彼得指出的那样。因此,使用上面的代码和 Peters 提示一切正常。嗯...我该如何完成这个问题?

【问题讨论】:

  • 对于tedit,您可以在设计器中设置KeyboardType。你不能用 tstringgrid 做到这一点吗?
  • 不,不像 TEdit 那样简单。至少我找不到房产。
  • 网格单元只是一个 TEdit,所以应该没问题,但您需要一个自定义列类,以便您可以在 CreateCellControl 中设置它 - monkeystyler.com/guide/Custom-Grid-Columns
  • @Sherlock70,您是否尝试过将普通的 TEdit 组件与 vktNumberPad 一起使用?对我来说,无论哪个指向 IFMXVirtualKeyboardService 接口中的错误,VirtualKeyboard 总是相同的。
  • @PeterVonča,带有 vktNumberPad 的 TEdit 在同一个应用程序中运行良好。但是我正在使用 X4 的演示版...难道这就是我最近的努力没有结果的原因吗?

标签: ios delphi firemonkey delphi-xe4 firemonkey-fm3


【解决方案1】:

编译器不知道 vktNumberPad 因为您没有正确处理它。使用:TNumEditCell(result).KeyboardType := TVirtualKeyboardType.vktNumberPad

【讨论】:

    猜你喜欢
    • 2018-01-27
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2018-03-28
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多