2016-12-20 11 views
1

私は数多くの書式のプロジェクトを持っています。 私はすべてのフォームにレイアウトを使用しています。レイアウトを複数のレイアウト方向で使用してフォームをナビゲートしますか?

各フォームは、それらの間をナビゲートしているときは基本的に同じコード(下記参照)を持っています。

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; 

正しいです!それはなぜですか?私は何が欠けていますか?どのようにオリエンテーションの変更をキャプチャしますか?このサイトで検索

----- UPDATE -----

、私はこの記事を越えカム:

このstackoverflowの答えに私を導いた

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

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); 
    } 
Sで

MS、これはそれを行うようだ:

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; 
+0

大きなヒント!あなたは答えとして答えを加えるべきです。 –

答えて

1

このサイトで検索、私はこの記事を越えカム:

このstackoverflowの答えに私を導いた

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

アクセス加速度計AndroidのJavascript経由でですか? SMSで

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; 
関連する問題