【问题标题】:How do I implement Delphi XE6 mobile alternate fmx forms如何实现 Delphi XE6 移动备用 fmx 表单
【发布时间】:2014-10-08 11:49:35
【问题描述】:

我正在使用 Delphi XE6 编写一个移动应用程序,并在其存储库中的一个示例中发现,它能够为不同的设备提供主视图和备用 fmx 视图。该示例看起来好像会根据编译器指令选择正确的形式,但我似乎无法让它工作。界面看起来很棒,因为我可以拥有包含基本内容的主表单,然后根据屏幕大小和功能实现继承的更改。在此视图中有图标,例如添加视图和删除视图。选择添加视图时,所有Android和IOS设备的对话框允许选择,然后选择它显示时,它显示了具有设备背景图标的附加视图,例如iPhone5。然后该单元显示多个引用,如下所示:

implementation

uses Math;

{$R *.fmx}

{$R *.iPhone5.fmx IOS}

{$R *.Samsung_Galaxy_S4.fmx ANDROID}

然后,备用视图显示从主表单继承的属性,允许您更改值并包含与平台匹配的特定样式。如果这行得通,它将节省很多精力。我目前在使用 TStyleBook 时遇到问题,因为 iOSBlack 样式与 Android 不兼容并在设备上引发错误。使用 AndroidDark 样式时,iOS 设备上存在类似问题。有人体验过这种多视图模式吗?

谢谢!

【问题讨论】:

  • 您展示的示例在任何平台或版本的 Delphi 上都是无效的(根本无法编译)。您能否提供指向您描述的存储库中示例的特定链接?
  • 在我的 XE6 Architect 版本中编译得很好。请注意,所有 3 个 fmx 文件都必须存在。该示例来自 SampleListViewAddThumbAndCaptionProject 项目的 [链接](svn.code.sf.net/p/radstudiodemos/code/trunk/Object Pascal/Mobile Samples/User Interface/ListView),特别是 KeyboardDemoForm.pas。屏幕截图如下:linklink
  • 我现在在我的系统上查看AddThumbAndMainFormU.pas,而implementation 在声明常量并开始实现TForm594 的方法之前只包含uses System.Math; {$R *.fmx}。第二个和第三个{$R}s 不存在。 (显示的语法不适用于{$R},这就是我发表第一条评论的原因。正确的语法是{$R resourcefile resourcescript}* 指的是单位名称。也没有AddThumbAndCaptionMainFormU.iPhone.fmxAddThumbAndCaptionMainFormU.Samsung_Galaxy_S4.fmx 文件, 这会失败。它们是你的文件吗?
  • 我列出了错误的 pas 文件,但你发现了。我正在使用 TRUNK 而不是 radstudiodemos 的 XE6 分支,也许您正在使用该分支。 {$R *.fmx} {$R *.LgXhdpiPh.fmx ANDROID}AddThumbAndCaptionMainFormU.pas 中,我的 listview 文件夹中有 AddThumbAndCaptionMainFormU.LgXhdpiPh.fmx 文件。它们在存储库中。也许这是XE7最终实现的编辑模式。
  • 多设备视图不是 XE6 功能。考虑到多视图更改已由 Embarcadero 工程师 Spencer Kimball 签入到演示 SVN,可以肯定地说这是 XE7 中的新功能。

标签: android ios delphi firemonkey delphi-xe6


【解决方案1】:

您应该在您的创建方法中处理 android 和 iOS 指定的代码,就像您的样式书一样:

{$IFDEF ANDROID}
stylebook := AndroidDarkStylebook;
{$ENDIF}
{$IFDEF IOS}
stylebook := iOSDarkStylebook;
{$ENDIF}

【讨论】:

    猜你喜欢
    • 2016-12-11
    • 2014-07-26
    • 1970-01-01
    • 2014-10-26
    • 2014-07-08
    • 2014-12-30
    • 2019-04-19
    • 2014-10-16
    • 2023-03-09
    相关资源
    最近更新 更多