我目前正在使用Borland Delphi 7,当我关闭它时,我需要在表格上保留复选框,以便下次用户想要制作新的过滤器。
编辑: 我有一个表格," ordenes de servicios"这显示了我的服务订单及其统计数据。我有很多过滤器,日期过滤器选项会打开一个带有复选框的新表单,因此我可以选择选项作为"开始日期","结束日期"等等。这个表格," filtroDatas",关闭后发送给" ordenes de servicios"一个粗略解释的字符串是" WHERE" Oracle数据库中查询的子句。目前," filtroDatas"在关闭时,不保留之前使用的复选框和日期,但我需要保留它们。查找有关.FormClose如何工作的数据表,我有" caHide"只是"隐藏"表格,但它不保留信息。 caMinimize是一个无效的选项,因为表单应该" dissapear"从视线开始。
注意:这是遗留代码,我无法改变太多。我虽然做了一些反向改造,但形式是如何召唤
procedure TfrmFiltrosData.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
(Owner as TfrmOrdensDeServico).HabilitaDesabilitaTimers(True);
qryFiltrosOs.Close;
Action := caHide;
//frmFiltrosData := nil;
end;
我也试过了caMinimize,但它没有用。 有人可以对这件事情有所了解吗?
答案 0 :(得分:1)
据我了解,您想要记住各种复选框的检查状态以及其他信息,例如日期。
一种方法,我强调一种方法,但不是唯一的方法是使用Ini文件。
例如,在表单创建中,您可以读取以前的数据;
PROCEDURE TForm1.FormCreate(Sender: TObject);
VAR
MyIni: TMemIniFile;
BEGIN
MyIni := TmemInifile.create('inifile.ini');
WITH MyIni DO
BEGIN
TRY
checkbox1.Checked := readbool('Checkboxes_State', 'CheckBox1', False);
checkbox2.Checked := readbool('Checkboxes_State', 'CheckBox2', False);
checkbox3.Checked := readbool('Checkboxes_State', 'CheckBox3', False);
FINALLY
free;
END;
END;
END;
请注意,我没有包含ini文件的完整路径,你应该。
上面会读取 SECTION , ID , VALUE ,并设置默认值(如果它不存在)。
如果您想在表单关闭中保存复选框,编辑框或其他任何内容的状态,请执行与此类似的操作;
PROCEDURE TForm1.FormClose(Sender: TObject; VAR Action: TCloseAction);
VAR
MyIni: TMemIniFile;
BEGIN
MyIni := TmemInifile.create('inifile.ini');
WITH MyIni DO
BEGIN
TRY
writebool('Checkboxes_State', 'CheckBox1', Checkbox1.Checked);
writebool('Checkboxes_State', 'CheckBox2', Checkbox2.Checked);
writebool('Checkboxes_State', 'CheckBox3', Checkbox3.Checked);
UpdateFile;
FINALLY
free;
END;
END;
END;
创建表单后,值 read ,退出时状态为已写。
TMemIniFile要求您根据需要将“使用IniFiles”添加到接口或实施部分。在上述示例的情况下,我使用了 IMPLEMENTATION 。
还有其他与TMemIniFile相关的其他方法;
如果需要,您还可以一次阅读整个部分。
关于日期,正如David在本回答Delphi inifiles ReadDateTime中解释的那样,您需要了解本地格式设置。如果您认为自己正在与MONTH合作但实际上正在摆弄DAY,日期可能很容易搞砸。
如果您考虑稍后升级您的应用以在移动平台上运行,则可能需要考虑XML文件。
我希望这会有所帮助。我有一种感觉,我已经忘记了什么,但如果有的话,有人会指出它。