Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.216.123.120] |
|
Сообщ.
#1
,
|
|
|
есть компонент TNavarhDataSet и субкомпонент TRawDataIBDataSet
TRawDataIBDataSet = class(TCustomRawData) private ............ published property Connected; property RequestName: String read FRequestName write SetRequestName; property OnWorkBegin; property OnWorkEnd; property OnWork; property OnError; end; ---------------------------------------------- TNavarhDataSet = class(TZQuery) private .... constructor Create(AOwner: TComponent); override; published property Provider: TRawDataIBDataSet read FProvider; end; constructor TNavarhDataSet.Create(AOwner: TComponent); begin inherited; FProvider := TRawDataIBDataSet.Create(self); FProvider.SetSubComponent(true); Connection := Provider.DataBase; end; Для удобства работы создал свой обработчик свойства. TOptionsProviderProperty = class(TPropertyEditor) private procedure GetPropProc(const Prop: IProperty); public function GetAttributes: TPropertyAttributes; override; procedure GetProperties(Proc: TGetPropProc); override; function GetValue: string; override; end; //{ TOptionsProviderProperty } function TOptionsProviderProperty.GetValue: string; var Obj: TPersistent; begin Obj := GetComponent(0); if Assigned(Obj) and (Obj is TNavarhDataSet) then with TNavarhDataSet(Obj).Provider do begin Result := '['+RequestName+']'; end else Result := '(Provider)'; end; function TOptionsProviderProperty.GetAttributes: TPropertyAttributes; begin Result := [paMultiSelect, paSubProperties]; end; procedure TOptionsProviderProperty.GetProperties(Proc: TGetPropProc); var I: Integer; J: Integer; Components: IDesignerSelections; begin Components := TDesignerSelections.Create; for I := 0 to PropCount - 1 do begin J := GetOrdValueAt(I); if J <> 0 then Components.Add(TComponent(GetOrdValueAt(I))); end; if Components.Count > 0 then begin GetComponentProperties(Components, [tkMethod, tkLString, tkClass] , Designer, Proc); end; end; procedure Register; begin RegisterPropertyEditor(TypeInfo(TRawDataIBDataSet), TNavarhDataSet, 'Provider', TOptionsProviderProperty); end; хотя в GetComponentProperties(Components, [tkMethod, tkLString, tkClass] , Designer, Proc); если убрать TOptionsProviderProperty то нормально. Если GetComponentProperties() подставить свою процедуру вместо Proc и в ней меседжом вывести все имена свойств то методы туда попадают. Так почему они не отображаются. |
Сообщ.
#2
,
|
|
|
Унаследуйтесь от TComponentProperty или внимательно разбирайтесь с интерфейсом IReferenceProperty
|
Сообщ.
#3
,
|
|
|
Цитата DimaBr @ То что нужно. Унаследуйтесь от TComponentProperty и почему я его сам не увидел |