【问题标题】:TValueListEditor with more columns具有更多列的 TValueListEditor
【发布时间】:2016-06-25 17:50:53
【问题描述】:

我正在使用 TValueListEditor,我想制作一个类似的 IDE 属性编辑器。 每行可以有几种信息:

  • 字符串
  • 日期
  • 号码
  • 组合列表

我想知道如何存储元素的类型和每行的格式。

我尝试添加 2 列。但它不起作用

ValueListEditor.ColCount := 4;
ValueListEditor.Cell[4,2] := 'Test';

它在值列(第二列而不是 4)中显示值 Test。 我正在考虑将我需要的值嵌入到我将链接(添加)到每一行的对象中。但我没有找到这样做的方法。不知道有没有可能。

有人有想法吗?

【问题讨论】:

    标签: delphi editor components delphi-xe key-value


    【解决方案1】:

    TValueListEditor 专门设计用于仅处理 name=value 对。您不能向其中添加其他列。但是,您可以指定用于编辑value 列的编辑器类型。这由每对的 TItemProp.EditStyle 属性处理:

    • 对于字符串输入,将TItemProp.EditStyle 设置为esSimple

    • 对于 ComboList 输入,将 TItemProp.EditStyle 设置为 esPickList,然后使用 TItemProp.PickList 属性或 TValueListEditor.OnGetPickList 事件。

    • 对于数字输入,将TItemProp.EditStyle 设置为esSimple,并根据需要设置TItemProp.EditMaskTItemProp.MaxLength。然后,您可以在需要时将用户输入的value 转换为Integer

    • 对于日期输入,您最好将TItemProp.EditStyle 设置为esEllipsis,然后使用TValueListEditor.OnEditButtonClick 事件显示您自己的TForm,上面有TDateTimePicker。如果需要,您可以使用 TSpinEdit 或类似组件对数字输入执行类似操作。

    【讨论】:

    • 谢谢回答。我以这种方式实现。但是当我尝试设置 VLE.ItemProps[i].EditStyle := TEditStyle.esPickList;如果 i:=1 它可以工作,但即使我之前创建了这些行,它也不会工作所有其他值。它也从不显示下拉列表箭头。
    • @ffert2907:我描述的工作,我以前用过这种方式。我记得它有一些怪癖,我将不得不再次查看我的代码并在我有空的时候更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2022-01-07
    • 2014-08-07
    • 2021-10-18
    相关资源
    最近更新 更多