Delphi XE3 と DevExpress ExpressEditors Library 12.2.4 を使用しています。
いくつかの DevExpress エディター (TcxTextEdit、TcxLookupCombobox、TcxImageComboBox、TcxMemo、TcxPopupEdit など) を含むフォームがあります。これらのエディタの多く (すべてではない) には、リポジトリ アイテムがあります。これらのエディターの一部を読み取り専用に設定する必要があります。私がこれをしたら
Edit1.Properties.ReadOnly := true;
エディターに repositoryitem がある場合は機能しません。これは、repositoryitems の値がエディターのプロパティをオーバーライドするためです。私がこれをしたら
Edit1.ActiveProperties.ReadOnly := true;
これにより実際にリポジトリ アイテムが変更されるため、同じリポジトリ アイテムに基づくすべてのエディタも読み取り専用になります。
私が試した解決策の 1 つは、フォームを表示する前に、repositoryitems のプロパティをエディターのプロパティに割り当て、repositoryitem を nil に設定することでした。これは ReadOnly プロパティに対しては問題なく機能しましたが、エディター イベントが repositoryitems イベントに設定されるという副作用もありました。フォームのエディターの多くにはイベントがあるため、このソリューションを使用できませんでした。これに対する 1 つの解決策は、リポジトリ アイテムをクリアした後に OnXXX プロパティを手動でリセットすることですが、エディタと関連するリポジトリ アイテムの両方でイベントを持つエディタもいくつかあります。
一部のエディターの readonly プロパティを設定し、同じリポジトリ アイテムを使用する他のエディターでは設定しないようにするにはどうすればよいですか? すべてのプロパティで機能するソリューションが欲しいのですが、今のところ ReadOnly が最も重要です。