在Delphi 7中,我使用的是TCheckListBox。 我希望它使用TStringList而不是TStrings,因此我可以将Duplicates设置为dupIgnore,并将Sorted设置为TRUE。

我可以这样做:

Form1 = class(TObject
    CheckListBox1: TCheckListBox;  // created by the IDE
end;

procedure TForm1.FormCreate
begin
   CheckListBox1.Items.Free;
   CheckListBox1.Items := TStringList.Create;
   CheckListBox1.Items.Sorted := TRUE;
   CheckListBox1.Items.Duplicates := dupIgnore;
end;

这样安全吗? 有任何警告或建议吗?

编辑:删除了MyStringList的声明,并将.Items添加到最后两个赋值行。

编辑2:尝试编译上面的内容,看起来我必须像这样抛出最后两行:

        TStringList(CheckListBox1.Items).Sorted := TRUE;
        TStringList(CheckListBox1.Items).Duplicates := dupIgnore;

虽然我可能能够让它运行,但我问这个问题,因为只是让它运行并不意味着它总会运行或安全。

===============>>#1 票数:8 已采纳

您无法控制TCheckListBox用于存储其项目的类。 Items属性分配值只会将其项目分配给内部存储。

另外,你不应该叫Items.Free; TCheckListBox取决于其内部实例TListBoxStrings

要回答您的问题中的编辑:不要将Items属性强制转换为TStringList 类型转换是错误的( Items暴露的实例不是TStringList )并且只会导致问题。

编辑,为您似乎尝试实现的内容建议解决方法:要使checklistbox保持排序,您可以将其Sorted属性设置为True 为避免重复,您可以在代码中添加项目之前检查列表。

  ask by RobertFrank translate from so

未解决问题?本站智能推荐:

2回复

转换TStringList中的特殊字符

我正在使用Delphi 7并且有一个例程,它带有一系列记录的csv文件并导入它们。 这是通过使用MyStringList.LoadFromFile(csvfile)将其加载到TStringList中,然后使用line = MyStringList [i]获取每一行来完成的。 这一直很好,
2回复

如何仅将tstringlist中的特定项目保存到文件

这是我的代码。 该文件包含大约2000行。 一行看起来像这样 如果该行在第3位有数字210,我必须检索存储在数据库中的员工的更多详细信息。 我该怎么办? 我想读取文件中的所有行。 谢谢你的时间。
1回复

Delphi 7:将TString存储到SQLite3数据库字段中

我正在使用Delphi 7和SQLite3数据库。 我正在使用这个简单的包装器来访问SQLite3: http://www.itwriting.com/blog/articles/a-simple-delphi-wrapper-for-sqlite-3/ 我的问题是,我想将TStr
1回复

对于unicode Delphi,TStream到TStringList失败

如下面代码的Test2所示,TStringList被转换为TStream,然后TStream被转换回TStringList。 但是,在Delphi 7中, Test2给出了与Test1相同的功能。 在unicode Delphi中, Test2没有给出正确的结果。 你能帮忙建议出现什么问题
2回复

Delphi Tstringlist,写文件同步

我用tstringlist做一个非常简单的日志。 我将其写入文件: 某个地方有错误,并且我的计算机已关闭。 之后,找不到我的日志文件。 文件可能以异步模式保存。 有没有一种方法可以等待写入才能继续执行? 谢谢,阿尔贝托
1回复

如何使用Owner创建一个TStringList后代,它将自动释放TStringList?

我希望创建类似“TOwnedStringList”(类名是小说)的东西,我可以构造为: Self可以是一个Form(例如),以便所有者自动释放StringList。 我希望能够避免自己调用sl.Free 。 这可能吗?
1回复

使用TStringList的AddObject和整数?

使用delphi 7: 如何使用AddObject将整数添加到stringlist项的对象部分? 如何从stringlist项的对象属性中检索整数? 完成后如何释放所有对象并列出?
1回复

调试:无法显示TString的值

在调试中,我试图使Delphi揭示或公开FTestResult(TStrings)的值。 Delphi的调试器显示在监视窗口的“ FTestResult()”中。 如果在添加后()中什么都没有产生,这是否正常? 请指教...谢谢
5回复

TStringList局部变量未初始化为nil - 为什么?

我正在使用此代码来检查是否创建了TStringList : 但条件总是False ,为什么会这样呢? 如何检查是否创建了TStringList对象? Ps我知道有一个类似的问题问题,我试过在那个问题上发布的解决方案,但它对我不起作用。
2回复

Delphi 7:如何将字符串拆分为TStringList

我是Delphi 7 ,我将字符串分成几行。 具体来说,我有一个DFM作为字符串(从MySql数据库中提取),我想将其拆分为TStringList中的行。 看起来像这样... eh 回答:这对我来说几乎不是一个问题。 Delphi自动将#$D#$A视为CR LF,因