使用多个布局方向的布局导航表单?

时间:2016-12-20 17:04:20

标签: smart-mobile-studio

我有一个包含多种形式的项目。 我在所有表格上都使用了Layouts。

当我在它们之间导航时,每个表单的代码基本相同(见下文)。

Application.GotoForm('frmInventory', feFromRight);

在我改变方向(例如从轮廓到风景)之前,一切都很美好。 然后布局搞砸了。

  

请参阅screenshot1screenshot2

示例代码:

procedure TfrmMenu.frmMenuDeactivate(Sender: TObject);
begin
 fLayout:= nil;
end;


procedure TfrmMenu.frmMenuActivate(Sender: TObject);
begin
 fLayout:= Layout.Client([Layout.Top(fHeader),
                           Layout.Bottom(fFooter),
                           Layout.Client(fList)]);
end;


procedure TfrmMenu.Resize;
begin
  inherited;
   if assigned(FLayout) then
   begin
    fLayout.Resize(self)
   end;
end;

这是对的!为什么不呢。我错过了什么?你如何捕捉方向变化?

-----更新-----

在此网站上搜索,我浏览了这篇文章:

http://www.thedelphigeek.com/2012/02/detecting-device-movement.html

然后引导我进入这个stackoverflow的答案:

Access accelerometer via Javascript in Android?

 if (window.DeviceMotionEvent == undefined) {
        //No accelerometer is present. Use buttons. 
        alert("no accelerometer");
    }
    else {
        alert("accelerometer found");
        window.addEventListener("devicemotion", accelerometerUpdate, true);
    }

在短信中,这似乎是这样做的:

function window: variant; external 'window' property;

procedure TfrmItem.InitializeObject;
begin
  inherited;
  {$I 'Item:impl'}
  window.addEventListener('devicemotion', @Resize, false);
  .
  .
  .
end;

procedure TfrmItem.Resize;
begin
  inherited;
  if assigned(fLayout) then
  begin
    fLayout.Resize(self);
    ResizeControls;
  end;
end;

1 个答案:

答案 0 :(得分:1)

在此网站上搜索,我浏览了这篇文章:

http://www.thedelphigeek.com/2012/02/detecting-device-movement.html

然后引导我进入这个stackoverflow的答案:

通过Android中的Javascript访问加速度计?

 if (window.DeviceMotionEvent == undefined) {
        //No accelerometer is present. Use buttons. 
        alert("no accelerometer");
    }
    else {
        alert("accelerometer found");
        window.addEventListener("devicemotion", accelerometerUpdate, true);
    }

在短信中,这似乎是这样做的:

function window: variant; external 'window' property;

procedure TfrmItem.InitializeObject;
begin
  inherited;
  {$I 'Item:impl'}
  window.addEventListener('devicemotion', @Resize, false);
  .
  .
  .
end;

procedure TfrmItem.Resize;
begin
  inherited;
  if assigned(fLayout) then
  begin
    fLayout.Resize(self);
    ResizeControls;
  end;
end;