Главная страница
    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.46 MB
Время: 0.007 c
1-69373
The_Vizit0r!
2002-11-08 22:24
2002.11.21
Может кто подскажет?


14-69500
delpher_gray
2002-10-31 19:29
2002.11.21
Как расположить числа в подярке убывания


1-69424
X-Guest...
2002-11-08 18:13
2002.11.21
Здраствуйте, подскажите как лучше работать с файлами...


1-69305
Kinder
2002-11-12 13:21
2002.11.21
Подскажите начинающему


14-69524
Николай Быков
2002-10-31 04:09
2002.11.21
У корпорации Microsoft самое качественное ПО





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