Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.21;
Скачать: CL | DM;

Вниз

Creating Property Editor   Найти похожие ветки 

 
Сатир ©   (2002-11-11 14:17) [0]

Всем привет
Описываю ситуацию
Создал редактор свойств от TStringProperty. Зарегестировал должным образом. В результате получилась така проблемма:
редактировать свойство можно как в инспекторе объектов, так и в редакторе свойства, но то, что было введено в редактор свойсвта, в итоге свойству не хочет присваивать;(
вот исходники

TFormulaEditor = class(TStringProperty)
public
function GetAttributes: TPropertyAttributes; override;
procedure Edit; override;
end;


implementation
uses FormulaFrm;


procedure TFormulaEditor.Edit;
var FormulaForm:TFormulaForm;
begin
FormulaForm:=TFormulaForm.Create(Application);
try
With FormulaForm do begin
Edit1.Text:=GetStrValue;
if ShowModal = mrOk then
SetStrValue(Edit1.Text);
end;
finally
FormulaForm.Free;
end;

end;


 
Skier ©   (2002-11-11 14:23) [1]

>Сатир
А может быть у тебя к самом компоненте косяк ?
То есть в методе SetYourProperty(...) что-то не так...


 
Сатир ©   (2002-11-11 14:35) [2]

2Skier © (11.11.02 14:23)
что именно тебя интересует?


 
Skier ©   (2002-11-11 14:41) [3]

>Сатир
Меня интересует объявление св-ва в компоненте и код метода (если он есть), в котором устанавливается св-во, для которого написан твой редактор.


 
Сатир ©   (2002-11-11 15:02) [4]

пожалуйста

TFormula = type string;

TStyleColor = class(TCollectionItem)
private
fFormula: TFormula;
procedure SetFormula(const Value: TFormula);
...
published
property Formula: TFormula read fFormula write SetFormula;
end;

procedure TStyleColor.SetFormula(const Value: TFormula);
begin
if fFormula <> Value then
begin
fFormula := Value;
CalculateColor;
end;
end;

регистрация редактора:

RegisterPropertyEditor(TypeInfo(TFormula), TStyleColor, "Formula", TFormulaEditor);



 
Юрий Зотов ©   (2002-11-11 15:22) [5]

Насколько я помню, после изменения свойства в методе Edit нужно проинформировать об этом дизайнер, вызвав Modified.


 
Сатир ©   (2002-11-11 16:47) [6]

2Юрий Зотов © (11.11.02 15:22)
Вы это имели ввиду?

if ShowModal = mrOk then begin
SetStrValue(Edit1.Text);
Designer.Modified;
end;

не фунциклирует;(...


 
Юрий Зотов ©   (2002-11-12 09:19) [7]

Я имел в виду просто Modified, есть у TPropertyEditor такой метод. Цитата из комментариев в DsgnIntf:

"If you call a TProperty SetXxxValue method directly, you *must* call Modified as well."

Но в данном случае это неважно, поскольку в SetStrValue этот метод уже вызывается. Короче говоря не знаю, в чем там у Вас дело, но вот это нормально работает.

procedure TFormulaEditor.Edit;
begin
with TFormulaForm.Create(nil), FormulaEdit do
try
Text := GetValue;
if ShowModal = mrOK then SetValue(Text)
finally
Free
end
end;

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





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

Текущий архив: 2002.11.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
8-69453
Mixir
2002-07-31 09:05
2002.11.21
Подскажите как работать с FastLib


7-69608
Ш-К
2002-09-20 16:56
2002.11.21
DeviceIoControl.


3-69152
OlegKrt
2002-10-31 08:28
2002.11.21
Обработка ошибки при работе с Table


1-69350
KidMan
2002-11-13 00:51
2002.11.21
Тривью и Листвью


1-69318
AlexDBases
2002-11-12 16:53
2002.11.21
Запуск приложения с параметрами