你能动态地永久添加Delphi组合框项目吗?

时间:2015-09-27 14:28:19

标签: delphi combobox

是否可以在组合框中保存新项目? (DELPHI)

如果你说前。 Combobox1.Items.Add('Item');然后该项目将在程序运行期间出现在组合框中,但是如果您关闭并重新打开该程序,那么该项目就会消失。

是否有可能以某种方式在运行时通过代码永久地添加该项目?

提前致谢

3 个答案:

答案 0 :(得分:3)

最简单的方法是:

ComboBox1.Items.SaveToFile( 'SomeFile.txt');

然后:

ComboBox1.Items.LoadFromFile( 'SomeFile.txt');

我个人只是使​​用任何文件数据库,比如mysqlite来存储程序选项,组合框和东西。起初它可能看起来有点过头了,但是这个“微小的软件”通常会增长,并且将数据存储在数据库中会更加方便。订购组合框项目,为它们分配其他值等等。

祝你好运

答案 1 :(得分:3)

首次创建时,组合框始终为空。也就是说,TComboBox.Create构造函数不会在列表中放置任何内容。但是,您可能从未直接调用过该构造函数。而是使用IDE在窗体上放置控件,然后在运行时在窗体上显示这些控件。表单在表单的DFM数据中加载表单描述时,表单会将项目添加到组合框中。

您可能已经注意到项目目录中的DFM文件。使用表单设计器设计表单时,IDE会创建这些。编译程序时,这些文件将作为 resources 链接到您的EXE。

如果要更改表单的外观或首次加载时包含的数据,则需要修改该资源。 Windows provides ways of modifying resourcesDelphi provides ways of converting DFM data into and out of the binary format used in resources。加载资源数据,将其转换为文本,进行修改,将其转换回二进制文件,并用新资源替换旧资源。

一个小问题是操作系统不允许修改仍在运行的程序,即使修改是由程序本身启动的。 That can be worked around, though.

所以,虽然你问的问题的答案是,但最终你会发现很多更容易简单地存储你的组合 - 关于任何地方其他的框项目(例如,外部文件,注册表,数据库,甚至是云),然后在创建表单之后但在将其显示到之前加载并自行添加它们用户。用户永远不会知道差异。

要在加载表单之后但在显示之前运行代码,请覆盖表单的Loaded方法。

答案 2 :(得分:0)

您可以从程序初始化

中读取的文本文件中加载项目