问题标签 [firemonkey-fm3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1740 浏览

ios - 在 StringGrid 中输入值时,是否可以设置键盘类型?

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

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

莫名其妙的部分来了:

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

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

0 投票
1 回答
2836 浏览

delphi - 如何更改firemonkey控件中的默认焦点行为

我创建了一个自定义 Styledcontrol 后代,它由代表日期(日/月/小时)的 3 个 TEdit 组成,编辑是我的 .style 文件的一部分

当控件获得焦点时,第一个 Edit 应该获得焦点。其他编辑永远不应该通过标签获得焦点。他们在样式文件中有 tabstop = false 。

这可行,但是当其中一个子编辑被聚焦时,我按下选项卡,第一个创建的自定义控件的第一个编辑被选中。如何使其具有默认行为并选择下一个控件,就好像它是 1 个控件一样?(所以无论焦点在控件的哪个位置 - edit1、edit2 或 edit3,按 Tab 应该选择下一个控件)。

PS:有没有像样的firemonkey组件教程?考虑造型等

我已经更新了问题

0 投票
1 回答
131 浏览

ios - 在 Delphi iOS 应用程序中覆盖 TFMXViewBase 中的方法

有什么方法可以覆盖 TFMXViewBase 中的方法,用于 Delphi 中的 iOS 表单?

具体来说,我想覆盖 TFMXViewBase.touchesBegan、TFMXViewBase.touchesEnded、TFMXViewBase.touchesMoved。

我试图修改标准的 FMX.Platform.iOS 单元

在此先感谢,马丁

0 投票
3 回答
5554 浏览

delphi - Delphi 和 iOS 文件大小

我在 Delphi XE4 for iOS 中创建了一个小应用程序。我有7个表格。一切都很好。

但我对文件大小有点震惊!它在模拟器上为 44MB。我为 android 制作的同一个应用程序几乎是 2MB。它有一个 320kb 的 jpg 格式的背景图像,我还没有在 iPhone 设备上测试它!

如果您在 XCode 上使用表单上的 ListBox、文本、按钮创建,那么正常大小的应用程序是什么?

有没有办法通过更改 Delphi 中的任何设置来减小文件大小?

0 投票
1 回答
2703 浏览

ios - 基于 iOS 控件的 FireMonkey 控件行为不正确

我们开始将我们现有的 iOS (XCode) 应用程序之一移植到 Delphi FireMonkey (XE4)。到目前为止,这是一个令人惊讶的顺利过程。但是,我们遇到了一个死胡同,我们不知道如何解决。

我们现有的应用程序类似于新的Google 地图应用程序。我们有一个webbrowser控件,它显示包含许多 pin 的 Google Map。我们还有一个设置按钮和一个信息面板,它会在点击 pin 时出现。按下相应的按钮/图钉时,设置和信息面板会从地图的左右两侧滑入。这一切都在 XCode 应用程序中运行良好。

以下是我们在使用 FireMonkey 端口时遇到的问题:

  • 我们无法在 webbrowser 控件的顶部显示 FireMonkey 控件。我知道这是因为网络浏览器是本机 iOS 控件。
  • 一旦 webbrowser 控件出现,它就无法移动,例如,如果我们更改position.x属性,webbrowser 将保持在原来的位置。如果我们使用内置动画更改为 x 属性,这也是一样的。似乎可以正常工作的唯一属性是visible.

使用TMS iCL组件,我们能够纠正第一个问题。然而,我们最担心的问题是第二个。如果无法移动 webbrowser 组件,就不可能实现使用 webbrowser(或任何本机 iOS 控件)的现代外观(滑动)UI。

有没有人遇到过克服这些 FireMonkey 限制的方法?

更新 1

根据 Jaroslav 的建议,我尝试了以下方法:

1) 使用按钮和 WebBrowser 创建了第二个表单。

2) 创建 Form2 作为 Form1 的子级。

当我运行应用程序时,我看到:

在此处输入图像描述

以下是我的观察:

  • 单击按钮没有任何效果。
  • Form2 上的按钮不可见。
  • Form2 的Left属性在设计器中设置为 40。但是,表格显示为 0。

更新 2:

按照评论中的建议,我将 Form1 源更改为:

不幸的是,移动和覆盖都不起作用。当前代码在引用 TCustomForm(Popup1.Popupform).Left 时抛出异常。发生异常的原因是,一旦父窗体上发生鼠标左键事件,Delphi 就会关闭弹出窗口(破坏弹出窗体)。更奇怪的是,带有网络浏览器的弹出窗口在它应该关闭后仍然可见,即使它在单击时没有反应。

将代码更改为 Popup1.Position.X 不会引发异常,但当然弹出窗口仍然没有移动。

此外,弹出窗口的父标签仍显示在主窗体拥有的网络浏览器下。

更新 3

我发现了许多问题,但修复它们并不能使它更好地工作。

  1. 由于某些(莫名其妙的)原因,似乎剪切一个控件(CTRL-X),然后选择另一个控件并粘贴(CTRL-V)会将剪切控件粘贴到主窗体,而不是选定的控件。重新设置控件的唯一方法是将其拖放到结构树中。
  2. 在将控件重新设置为 PopUp 之后,我现在只要调用 Popup1.Popup(FALSE) 就会得到一个异常。这很可能是因为弹出窗口显示在 Create 事件中。将其移动到 OnClick 事件可以消除异常。
  3. 似乎为了在单击主窗体时停止弹出窗口关闭,您应该在调用 .Popup 之前设置 StaysOpen 属性,但实际上,此属性似乎无法正常工作。例如,下面的代码使其进入 TCustomForm(Popup1.PopupForm).Left 行,但随后由于弹出表单已被破坏而引发异常!

代码:

0 投票
1 回答
3594 浏览

delphi - Firemonkey designide.dcp 64 位

有没有人在 Firemonkey 中使用 designide.dcp 为 64 位操作系统成功构建了一个自定义组件?我正在尝试将设计编辑器添加到自定义组件。我按照http://docwiki.embarcadero.com/RADStudio/XE3/en/Creating_a_Component_Editor_and_a_Property_Editor_for_FireMonkey_Components上的教程进行操作。这在编译为 32 位时工作得很好,但是对于 64 位,我收到以下错误:[dcc64 Fatal Error] ComponentEditor.pas(10): E2213 Bad packaged unit format: c:\program files (x86)\embarcadero\rad studio\11.0\lib\win32\release\designide.dcp.DesignEditors - 预期版本:25.0,Windows Unicode(x64) 找到的版本:25.0,Windows Unicode(x86)

查看路径是有道理的,因为文件引用 lib\win32。但是,在 lib\win64 下没有这样的文件。

我一直试图在没有任何运气的情况下在互联网上找到解决方案。看起来很多人还没有尝试过。

0 投票
3 回答
4307 浏览

delphi - Firemonkey 旋转文本

我想在画布上绘制文本。为了进行轮换,我使用了https://forums.embarcadero.com/thread.jspa?messageID=440010中的以下代码

这工作正常。我已将矩形的右下角设置为 5000,这样我就不必担心我的矩形太小了。

问题是我现在想更改我的 TextAlignment 属性。因此,要从右到左绘制文本,我必须调整我的矩形,然后按以下方式绘制它:

所以基本上我移动了我的矩形 TopLeft 的 x 值并将其移回 5000(我再次使用 5000 来确保我的文本适合)。然后,我将矩形右下角的 x 值设置为上一个示例矩形 TopLeft 中的 x 值。这适用于 0 度旋转,但是一旦我改变度数,我就不会在正确的位置绘制我的文本。我认为这是因为文本将围绕矩形的 TopLeft 位置旋转(更改为使文本从右向左书写)。

0 投票
1 回答
698 浏览

delphi - 关于将来自 DataSnap REST 服务器的单元用于客户端项目的意见

我正在开发一个带有 FireMonkey 桌面客户端的原型 DataSnap REST 服务器,并且想知道使用为客户端封装服务器中数据模型的单元是否是好的做法。

也就是说,我有许多代表数据模型对象和属性的服务器项目单元,并且我有 REST 服务器方法,它们要么将这些对象作为参数,要么将它们作为结果返回。

因为我已经有了这些单元,所以我只是将它们添加到需要的客户端项目中,但是 DataSnap REST 服务器应用程序也将在 C# 桌面客户端(可能还有 HTML 5 Web 应用程序)中使用,这将无法使用我拥有的 .PAS 单元,并且需要它们自己的对象表示。

我最好不要使用服务器项目单元,以确保我不包含非 DataSnap 客户端会知道的任何内容,或者像我一样继续手动编写 C#/Java 模型,还是有一种自动生成这些模型的方法,类似于 Visual Studio 从 WSDL 生成类模型的方式?

0 投票
1 回答
478 浏览

delphi - 带有 FM3 的 Windows XP 中缺少任务栏按钮上下文菜单

我最近升级到 XE4,现在正在寻找 XE3 的更改和所谓的修复程序。

令我惊讶的是,任务栏上按钮的上下文菜单不再出现。

很容易复制:只需在 XE4 中创建一个新的 Firemonkey 项目并在 Windows 上运行它。右键单击任务栏应用程序按钮,查看上下文菜单是否出现。我的意思是带有“关闭”、“恢复”、“最小化”等的菜单。这仅适用于 Windows XP 和 Server 2003。在 Win7 上它可以工作并显示“关闭”菜单项。

现在按钮的标题也不同了。它应该是“Form 1”作为主窗体的标题,但它是 Project1 作为可执行文件的名称。这适用于所有 Windows 版本。

有人可以帮我解决这个问题吗?人们仍然使用 XP,这种行为对用户来说是非常出乎意料的。

谢谢

0 投票
1 回答
485 浏览

iphone - Firemonkey iPad 等待图标

我的应用程序上有两个选项卡。它们都有一个表格——一张用于输入,一张用于输出。当输出表的选项卡被激活时,会触发一个分析数据并填充输出网格的过程。

输出网格需要几秒钟来渲染,我想显示一些动画图标。我尝试了带有 TFloat 动画的 TImage 以及 TAniIndicator。在分析过程运行时,它们似乎都冻结了。