在delphi xe6中锁定一个表单的方向

时间:2014-07-29 19:43:20

标签: delphi delphi-xe6

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

更新

我的根本问题是我使用zbar单元进行扫描,当屏幕旋转时,摄像机视图中的显示不会。所以应用程序进入横向,但扫描仪的视图仍然是纵向,从而使视图看起来侧面。从我自己用Google搜索和编写的内容来看,锁定方向似乎更容易,所以这就是我所处的位置。

我发现这篇文章: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;

嗯,我不喜欢这个,因为该应用程序仍然需要重新绘制,并且顶部显示的状态栏仍然显示,给它一个时髦的外观。这暂时有效 - 但看起来我真的被黑了,在这种情况下我做了..

2 个答案:

答案 0 :(得分:-1)

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

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

答案 1 :(得分:-2)

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

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

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