我使用 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 是最重要的。