如何使用repositoryitems覆盖DevExpress编辑器上的ReadOnly属性

时间:2013-05-05 11:43:09

标签: delphi devexpress

我使用Delphi XE3和DevExpress ExpressEditors Library 12.2.4。

我有一个包含几个DevExpress编辑器的表单(TcxTextEdit,TcxLookupCombobox,TcxImageComboBox,TcxMemo和TcxPopupEdit等)。许多这些编辑(但不是全部)都有一个资料库。我需要将其中一些编辑器设置为readonly。如果我这样做

Edit1.Properties.ReadOnly := true;

如果编辑器具有repositoryitem,它将无法工作,因为repositoryitems值将覆盖编辑器属性。如果我这样做

Edit1.ActiveProperties.ReadOnly := true;

这实际上会更改repositoryitem,因此基于相同repositoryitem的所有编辑器也将是只读的。

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

如何设置某些编辑器的readonly属性,而不是其他使用相同repositoryitem的编辑器?我想要一个适用于所有属性的解决方案,但是现在ReadOnly是最重要的。

1 个答案:

答案 0 :(得分:0)

我希望我明白你的问题 据我所知,有两种方法。

  1. 处理ShowingEditor事件并使用e.Cancel(如果这应该是只读的)。
  2. 创建两个存储库项目,一个设置为ReadOnly,并分别将它们分配给不同的控件。
相关问题