-3

现在我将我的应用程序改编为平板电脑。我如何在屏幕旋转时固定表格。好人说我必须调整我的应用程序以适应纵向,他们是对的。

有些表格非常具体,很难(也许不可能)为纵向重新设计它们。所以我认为我可以创造一种错觉,即我的应用程序只能在横向上运行。

这就是为什么我需要在 Delphi XE2 中旋转标准 VCL 组件。例如,对于标准备忘录,我不仅需要从左到右(或从右到左)和从上到下(以及从下到上)编写文本。

我还需要旋转按钮。现在我使用标准的 TButton 和 TRxSpeedButton。

  1. 我认为足以旋转 TButton 的文本,但我不知道该怎么做?

  2. 在 TRxSpeedButton 的情况下,我使用字形。从理论上讲,也许我可以覆盖画布并更改图片。另一种方法是创建 2 个按钮(一个用于纵向,一个用于横向。每个按钮都有其特殊的字形)并更改其可见性。但我不喜欢第二种变体,因为在这种情况下 exe 文件会非常丰满,我不喜欢丰满的 exe))

感谢您的建议。

4

4 回答 4

2

你不可能使用标准的 VCL 控件来完成这项工作。VCL 控件没有允许它们旋转 90 度的模式。我认为让任何显示文本的控件旋转都不容易。那只是文本输出。文本输入呢?还有基于特定方向的阴影和 3D 效果的问题。名单还在继续。

在我看来,如果你想让这项工作顺利进行,你几乎肯定需要从头开始编写一个完整的 GUI 框架。

虽然很明显可以做到这一点,但如果不考虑让您的应用程序在纵向和横向方向上工作的替代方案,这似乎不是一个现实的选择。

于 2014-12-14T08:51:47.030 回答
0

你没有机会使用假风景方法。

您的问题有三种解决方案:

  1. 最好的 - 让您的应用程序适用于任何屏幕尺寸/方向组合。这是 Windows 的方式。

  2. 如果您的应用程序“必须”在横向模式下工作,请在检测到错误方向时通知用户,该应用程序只能在横向模式下运行。显示消息框或带有不容错过的消息的特殊表单,同时隐藏其他表单或类似的东西。

  3. 在横向模式下锁定设备,如如何防止屏幕在平板电脑上自动旋转?但是您应该知道,这不是 Windows 在桌面模式下使用的方式。

于 2014-12-14T12:25:41.277 回答
0

VCL 不是为此而构建的,所以如果不对 RTL 的表示层进行重大工作,我真的看不到这种情况发生。

已经有能够做到这一点的皮肤引擎,但他们基本上修补了 RTL 并接管了渲染。旋转数据保存在每个控件的查找表中,您必须与实际类分开设置。

如果 Delphi 支持像 Smart Pascal 那样的部分类,那么也许(如果架构允许的话)这可以是后缀的。但是在撰写本文时,VCL 根本不是为此而设计的。我在键入此内容时正在编写一个补间库,因此我对此进行了研究。

于 2018-09-09T01:49:45.163 回答
-1

可能对您有用的PaintTo一种方法是使用各种控件的方法。让他们将完全绘制的图像绘制到位图上,然后将位图旋转 90 度以获得纵向与横向效果。然后以它的方法在表单的画布上绘制该图像OnPaint(您希望在纵向模式下使实际控件不可见,仅显示您绘制和旋转的位图。)

不过,有些控件(如TRichEdit)的PaintToMethod 不能正常工作。所以这对你来说可能是有限的。另一种方法是在桌面上抓取整个表单客户区域的屏幕截图,然后旋转并显示它。这甚至适用于TRichEdit...

于 2014-12-13T06:51:37.877 回答