procedure TMainForm.FormDestroy(Sender: TObject);
var
Registry: TRegistry;
begin
Registry := TRegistry.Create;
try
Registry.RootKey := HKEY_CURRENT_USER;
if Registry.OpenKey('...', True) then
begin
Registry.WriteInteger('MainLeft', Self.Left);
Registry.CloseKey;
end;
finally
Registry.Free;
end;
end;
类似的代码适用于FormCreate,但在应用程序关闭时无效(即没有任何内容保存到注册表中)。我错过了什么?
“...”代表注册表项名称。由于它适用于 FormCreate,所以我认为这不是问题。
如果我将MainForm.Destroy添加到程序代码中:
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
MainForm.Destroy;
end.
没有任何改变。如果我还将 FormDestroy 设置为 MainForm 的 OnDestroy 事件,则在关闭应用程序时会收到“访问冲突”错误。
最佳答案
你真的曾经破坏过表格吗?
默认情况下,表单是自动创建的,“关闭”它们不会破坏它们,只是隐藏它们。
如果您实际上没有在 OnClose 事件中调用“MyForm.Free”或将 Action 设置为 caFree,则表单永远不会被销毁,因此 OnDestroy 事件永远不会被触发,并且您的代码也永远不会被调用。
关于Delphi:写入注册表在 FormDestroy 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1101484/