1

我使用 Delphi XE3 和 DevExpress ExpressEditors Library 12.2.4。

我有一个带有多个 DevExpress 编辑器(TcxTextEdit、TcxLookupCombobox、TcxImageComboBox、TcxMemo 和 TcxPopupEdit 等)的表单。许多这些编辑器(但不是全部)都有一个存储项。我需要将其中一些编辑器设置为只读。如果我这样做

Edit1.Properties.ReadOnly := true;

如果编辑器有存储库项,它将不起作用,因为存储库项值将覆盖编辑器属性。如果我这样做

Edit1.ActiveProperties.ReadOnly := true;

这实际上会更改存储库项,因此基于同一存储库项的所有编辑器也将是只读的。

我尝试的一种解决方案是在显示表单之前将 repositoryitems 属性分配给 editors 属性,并将 repositoryitem 设置为 nil。这适用于 ReadOnly 属性,但有副作用,这也将编辑器事件设置为 repositoryitems 事件。表单上的许多编辑器都有事件,因此我无法使用此解决方案。对此的一种解决方案是在清除存储库项后手动重置 OnXXX 属性,但我也有一些编辑器在编辑器和关联的存储库项上都有事件。

如何设置某些编辑器的只读属性,而不是使用相同存储库项的其他编辑器?我希望有一个适用于所有属性的解决方案,但现在 ReadOnly 是最重要的。

4

1 回答 1

0

我希望我理解你的问题。
据我所知有两种方法。

  1. 处理ShowingEditor事件并使用 e.Cancel 如果这应该是只读的。
  2. 创建两个存储库项,一个设置为ReadOnly,并将它们分别分配给不同的控件。
于 2013-05-07T07:10:42.847 回答