Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Вниз

TPropertyEditor->"Продолжение"   Найти похожие ветки 

 
Cash ©   (2005-04-03 20:14) [0]

Толькочто посмотрел одноименную тему и вспомнил:
 Есть у меня класс TPropClass = Class(TPersistent).
 Есть редактор TEdtr = Class(TPropertyEditor)
с атрибутом [paDialog]
 Производим регистрацыю
   RegisterPropertyEditor(TypeInfo(TPropClass),nil,"",TEdtr);
 И ничего не пашит!

ВОПРОС
 В чем я ошибся?
 Проблема таже, нет связи со свойством в инспекторе.


 
Юрий Зотов ©   (2005-04-03 21:15) [1]

Попробуйте:
RegisterPropertyEditor(TPropClass.ClassInfo, nil, "", TEdtr);


 
Юрий Зотов ©   (2005-04-03 21:22) [2]

Если не заработает, приведите объявление свойства, с которым не связывается редактор.


 
Cash ©   (2005-04-04 18:34) [3]

Свойство объявляется как:
 Property PC: TPropClass read FPC write SetPC
 где SetPC - это процедура, а FPC - из Private секции.


 
Юрий Зотов ©   (2005-04-04 19:41) [4]

Поскольку чудес не бывает, решил проверить. И увидел, что действительно не бывает - все прекрасно связывается и все прекрасно работает. Единственное, что стоит изменить - это наследовать редактор от TClassProperty (хотя работать и без того будет, но так грамотнее и удобнее для юзера).

========== run-time unit ==========

type
 TPropClass = class(TPersistent)
 end;

 TMyComp = class(TComponent)
 private
   FPC: TPropClass;
   procedure SetPC(const Value: TPropClass);
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   property PC: TPropClass read FPC write SetPC;
 end;

constructor TMyComp.Create(AOwner: TComponent);
begin
 inherited;
 FPC := TPropClass.Create
end;

destructor TMyComp.Destroy;
begin
 FPC.Free;
 inherited
end;

procedure TMyComp.SetPC(const Value: TPropClass);
begin
 FPC.Assign(Value)
end;

========== design-time unit ==========

type
 TPropClassProperty = class(TClassProperty)
 public
   function GetAttributes: TPropertyAttributes; override;
   procedure Edit; override;
 end;

procedure Register;
begin
 RegisterComponents("Examples", [TMyComp]);
 RegisterPropertyEditor(TPropClass.ClassInfo, nil, "", TPropClassProperty)
end;

procedure TPropClassProperty.Edit;
begin
 ShowMessage("OK")
end;

function TPropClassProperty.GetAttributes: TPropertyAttributes;
begin
 Result := inherited GetAttributes + [paDialog]
end;


 
Cash ©   (2005-04-09 23:17) [5]

Другое дело! Спасибочки!



Страницы: 1 вся ветка

Форум: "Компоненты";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
14-1130834758
Vlad Oshin
2005-11-01 11:45
2005.11.27
Пропали 3 компьютера. И что теперь будет...?


14-1130947682
Андрей В
2005-11-02 19:08
2005.11.27
Подскажите


14-1131542528
RDA
2005-11-09 16:22
2005.11.27
Компьютерная барахолка в Киеве


5-1112860368
ancara
2005-04-07 11:52
2005.11.27
Как добавить пути к модулям?


1-1130774220
n0mid
2005-10-31 18:57
2005.11.27
Как можно из двух EXE файлов получить один





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский