Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.234.141] |
|
Сообщ.
#1
,
|
|
|
В компонентах DevExpressVCL есть замечательная особенность - колонка TcxGridColumn в TcxGridTableView имеет свойство с именем "Properties", которое раскрывается как список возможных TcxCustomEditProperties, напимер, DateEdit, CalcEdit, Label и т.д. При этом в инспекторе подставляется соответвующий наследник от TcxCustomEditProperties со свойствами специфическими для выбранного из выпадающего списка.
Я понимаю, что для реализации такого же в своих компонентах нужно использовать RegisterPropertyEditor, но пока все попытки оказались безуспешными. Копание в исходниках DevExpressVCL не помогло - выделить оттуда суть не получилось. Документация и поиск - понимания не добавило. Может быть есть у кого пример или ссылка на суть реализации? |
Сообщ.
#2
,
|
|
|
Суть реализации например такова: есть два свойства.
1-е свойство - свойство перечислимого типа (целое, стринговое, дата, и т.д.) 2-е свойство - свойство базового класса (или TPersistent) При переключении 1-го свойства, уничтожается второе свойство и создаётся новое с новым типом. type TTypeProp = (tInteger,tString,tData); TBasisType = class(TPersistent); TIntegerProp = class(TBasisType) published property ValueInt: integer read fValueInt write fValueInt; end; TStringProp = class(TBasisType) published property ValueStr: string read fValueStr write fValueStr; end; TMyComponent = class(TComponent) published property TypeProp: TTypeProp reaf fTypeProp write SetTypeProp; property Prop: TBasisType read fProp write SetProp; end; procedure TMyComponent.SetTypeProp(Value: TTypeProp); begin if fTypeProp = Value then Exit; fProp.Free; fTypeProp := Value; case Value of tInteger: fProp := TIntegerProp.Create; tString: fProp := TStringProp.Create; end; end; procedure TMyComponent.SetProp; begin // пусто end; |