假设用户正在浏览整个Android / iOS应用并打开以下表单:
Form A --> Form B --> Form C
在Form C
中,他按下按钮以退出该应用程序。这应该清除所有以前的表格(包括Form C
)并打开一个新表格(Signin Form D
)。
所以会是这样:
Form A --> Form B --> Form C --> Press Logout Button
Form A
,B
和C
Form D
Form D
中的“后退”按钮,则该应用将被关闭,因为任务中没有其他表格。我试图打开Form D
并关闭以前的表单,但是并没有完全释放以前的表单。反正要在Android / iOS上实现这一目标?
答案 0 :(得分:2)
恐怕这将无法完全按照您的想象。为什么?
在Delphi应用程序中,创建的第一个表单变为Application MainForm。关闭此表单,然后关闭整个应用程序。
现在,在您的情况下,您说Form A
是打开的第一个表单,这意味着它自动成为应用程序的MainForm
。因此,关闭它会关闭您的应用程序。
因此,要实现您想要的目标,必须确保Form D
实际上是在应用程序中创建的第一个表单。
答案 1 :(得分:0)
@SilverWarior确实是正确的。问题在于Form A
始终是ApplicationMainForm
,因此无法将其关闭。但是,正如@Remy Labeau和@Tom Brunberg所说。 MainForm
可以在应用程序运行时更改。
为解决此问题,我使用了下面的代码。假设我在Form A
中,并且我想导航到Form B
并关闭以前的表格。
if not Assigned(frmFinanceiro) then
frmFinanceiro := TfrmFinanceiro.Create(Application);
Application.MainForm := frmFinanceiro;
frmFinanceiro.Show;
Close;
答案 2 :(得分:0)
您解决了吗?
可以在下一个使用:
procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
var KeyChar: Char; Shift: TShiftState);
begin
if Key = vkHardwareBack then
begin
Key := 0;
end;
end;