使用多个布局方向的布局导航表单?
Navigating forms using layouts in multiple layout orientations?
我有一个包含多个表单的项目。
我在所有表单上都使用布局。
当我在它们之间导航时,每个表单都有基本相同的代码(见下文)。
Application.GotoForm('frmInventory', feFromRight);
一切都很好,直到我改变方向(例如从侧面到横向)。
然后布局搞砸了。
see screenshot1 versus 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;
没错!为什么不是呢。我错过了什么?你如何捕捉方向变化?
-----更新-----
在这个网站上搜索,我看到了这篇文章:
http://www.thedelphigeek.com/2012/02/detecting-device-movement.html
然后我得到了这个 Whosebug 答案:
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);
}
在 SMS 中,这似乎可以做到:
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;
在这个网站上搜索,我看到了这篇文章:
http://www.thedelphigeek.com/2012/02/detecting-device-movement.html
然后我得到了这个 Whosebug 答案:
通过 Javascript 在 Android?
中访问加速度计
if (window.DeviceMotionEvent == undefined) {
//No accelerometer is present. Use buttons.
alert("no accelerometer");
}
else {
alert("accelerometer found");
window.addEventListener("devicemotion", accelerometerUpdate, true);
}
在 SMS 中,这似乎可以做到:
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;
我有一个包含多个表单的项目。 我在所有表单上都使用布局。
当我在它们之间导航时,每个表单都有基本相同的代码(见下文)。
Application.GotoForm('frmInventory', feFromRight);
一切都很好,直到我改变方向(例如从侧面到横向)。 然后布局搞砸了。
see screenshot1 versus 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;
没错!为什么不是呢。我错过了什么?你如何捕捉方向变化?
-----更新-----
在这个网站上搜索,我看到了这篇文章:
http://www.thedelphigeek.com/2012/02/detecting-device-movement.html
然后我得到了这个 Whosebug 答案:
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);
}
在 SMS 中,这似乎可以做到:
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;
在这个网站上搜索,我看到了这篇文章:
http://www.thedelphigeek.com/2012/02/detecting-device-movement.html
然后我得到了这个 Whosebug 答案:
通过 Javascript 在 Android?
中访问加速度计 if (window.DeviceMotionEvent == undefined) {
//No accelerometer is present. Use buttons.
alert("no accelerometer");
}
else {
alert("accelerometer found");
window.addEventListener("devicemotion", accelerometerUpdate, true);
}
在 SMS 中,这似乎可以做到:
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;