1

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 が最も重要です。

4

1 に答える 1

0

私はあなたの質問を理解したと思います.
私の知る限り、2つの方法があります。

  1. イベントを処理し、ShowingEditorこれが読み取り専用の場合は e.Cancel を使用します。
  2. 2 つのリポジトリ アイテムを作成し、1 つを に設定してReadOnly、それぞれ異なるコントロールに割り当てます。
于 2013-05-07T07:10:42.847 に答える