【问题标题】:Lock orientation for one form in delphi xe6delphi xe6中一种形式的锁定方向
【发布时间】:2014-09-21 07:36:42
【问题描述】:

无论如何要将方向锁定为仅针对特定表单而不是整个应用程序的纵向? 使用 Delphi xe6,适用于 iOS。谷歌搜索似乎找不到任何东西。谢谢!

更新:

我的根本问题是我正在使用 zbar 单元进行扫描,并且当屏幕旋转时,相机视图中的显示不会。所以应用程序进入横向,但扫描仪的视图仍然是纵向的,从而使视图看起来是横向的。根据我自己的谷歌搜索和工具,似乎锁定方向可能更容易,所以这就是我所在的位置。

我找到了这篇文章:http://www.delphifeeds.com/go/s/84941,但无济于事,我不想旋转的一种形式,仍然旋转。

我暂时已经实现了这段代码,虽然我不是很了解它。只是一个快速、修复的解决方法。我将所有内容放在布局和表单的调整大小事件上:

  with LayoutOrientation do
  begin
    if Clientwidth > ClientHeight then
    begin
      Align := TAlignLayout.None;
      width := ClientHeight;
      height := Clientwidth;
      RotationAngle := 90;
      RotationCenter.X := 0.948;
    end else begin
      RotationAngle := 0;
      RotationCenter.X := 0.5;
      Align := TAlignLayout.Client;
    end;
  end;

嗯,我不喜欢这样,因为应用程序在不需要时仍会重新绘制,而且顶部仍显示状态栏,让它看起来很时髦。这暂时有效 - 但看起来我真的破解了它,在这种情况下我做到了..

【问题讨论】:

  • 你检查过 AndroidApi's for delphi。您可能可以通过处理本机 android 代码来做到这一点。不过我没有这方面的经验
  • 如问题所述,我正在为 iOS 开发。
  • 那么可能是 iOSApi 的。抱歉,我不能提供更多帮助
  • 不确定你是否找到了解决方案,但也许对我在这里所做的一些改变可以给你想要的效果/行为我只使用一种形式,很难stackoverflow.com/questions/33387402/…

标签: delphi delphi-xe6


【解决方案1】:

在显示表单之前和之后更新 Application.FormFactor.Orientations。

  Application.FormFactor.Orientations := [TFormOrientation.Portrait];
  ScannerForm.ShowModal;
  Application.FormFactor.Orientations := [TFormOrientation.Portrait, TFormOrientation.Landscape, TFormOrientation.InvertedLandscape];

【讨论】:

  • 不起作用...例如,我在横向,然后当我打开扫描表单时,该表单是横向的,但这次不会改变方向.就好像它认为它已经是纵向的,所以它锁定了那个方向。
  • 或调整代码,另一种情况是,如果我在横向打开表单时,扫描表单会以横向显示,但是如果我将设备旋转到纵向,它将锁定为纵向,但只有在我将其旋转为纵向时才会这样做。我尝试了表单 invalidate() 方法,但无济于事
【解决方案2】:

这实际上取决于您通常如何控制应用程序的方向。

如果您使用布局来控制方向,您可以强制为每个方向使用相同的布局。

如果您为不同的方向创建不同的表单,您可以强制您的应用程序为每个方向使用相同的表单。

【讨论】:

  • 我在表单中使用了不同的表单和布局。
  • 但这并没有真正帮助我,我该如何开始强制个别布局/表单的方向?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2015-05-10
  • 2023-03-09
  • 2020-06-13
  • 1970-01-01
相关资源
最近更新 更多