【发布时间】:2014-01-09 05:32:56
【问题描述】:
我希望我的应用程序记住数据库表中选定的行是 在应用程序关闭之前使用(选择),然后在下一次加载它(选择它) 应用程序启动。该表只有 4 条记录,并且是只读的,所以我不必担心有人 试图改变任何东西。 现在我使用:
procedure TForm3.ClientDataSet1AfterOpen(DataSet: TDataSet);
begin
Clientdataset1.DisableControls;
try
cxGrid1DBTableView1.DataController.KeyFieldNames := 'ID';
cxGrid1DBTableView1.DataController.LocateByKey('4');
finally
Clientdataset1.EnableControls;
end;
end;
但这是硬编码的。我希望它灵活。 如何将这些设置保存到位于 application.exe 文件夹中的 ini 文件 并在应用程序启动时加载它们?所以,例如,如果键是'3' (当应用程序退出时)我下次加载它。
【问题讨论】:
-
如果您在
TDataset.OnAfterOpen中加载值,那么您应该将值保存在TDataset.OnBeforeClose;o) -
首先将您的数据从表格中分离出来。使用数据模块。在数据模块上,您有一个 Oncreate 和一个 onDestroy。在这些事件中,您可以使用 TRegistryIniFile 来存储和保存参数。
-
将ini文件放入%AppData%路径。但是使用注册表更简单:您不会想到将文件放在哪里,因此它不会以只读文件夹结尾
-
@user763539 你不需要保存网格视图,你应该保存选定的行
ID(主键) -
@Ravaut123,datamodule.OnCreate 不是执行此操作的正确事件。它不保证 DataSet 已经打开。我还将使用带有
DataSet1AfterOpen的标志(例如 DataSet.Tag)来指示它是第一次打开,因为它可以在应用程序生命周期内多次打开/关闭。
标签: delphi devexpress delphi-xe4 tcxgrid