Главная страница
    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.45 MB
Время: 0.014 c
2-1131306176
ruslan.q
2005-11-06 22:42
2005.11.27
E-mail


9-1120671192
Dgt
2005-07-06 21:33
2005.11.27
Как сделать деколь в глсцен?


2-1131626075
Тормаз
2005-11-10 15:34
2005.11.27
Подскажите запрос


14-1131430731
Ega23
2005-11-08 09:18
2005.11.27
С днем рождения! 8 ноября


2-1131302018
ArtemESC
2005-11-06 21:33
2005.11.27
Дин.массивы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский