私は数多くの書式のプロジェクトを持っています。 私はすべてのフォームにレイアウトを使用しています。レイアウトを複数のレイアウト方向で使用してフォームをナビゲートしますか?
各フォームは、それらの間をナビゲートしているときは基本的に同じコード(下記参照)を持っています。
Application.GotoForm('frmInventory', feFromRight);
方向を変更する(例:プロファイルからランドスケープに変更する)まで、すべてが素晴らしいです。 その後、レイアウトが狂ってしまいます。
screenshot1とscreenshot2を参照してください。
コード例:
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;
大きなヒント!あなたは答えとして答えを加えるべきです。 –