我使用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是最重要的。
答案 0 :(得分:0)
我希望我明白你的问题 据我所知,有两种方法。
ShowingEditor
事件并使用e.Cancel(如果这应该是只读的)。ReadOnly
,并分别将它们分配给不同的控件。