Текущий архив: 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