Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
ВнизРедактор свойств с немодальным окном Найти похожие ветки
← →
ayder (2003-05-28 16:39) [0]Привет!
Кто поможет решить проблему с написанием редактора свойства с немодальным окном (аналогичный редактору TCollection).
Я делал следующим образом.
Создал форму редактора (Пусть будет класс TEditorForm) c TreeView, который будет отображать некоторые объекты, и
подключил в класс редактора свойства. Т.е.
TmyPropertyEditor = class(TPropertyEditor)
private
F : TEditorForm;
public
destructor Destroy
procedure Edit; override;
procedure OnChange(Sender: TObject; Node: TTreeNode);
end;
procedure TmyPropertyEditor.Edit;
begin
if ( F = nil ) then F := TEditorForm.Create(Application);
F.OnTreeViewChange := OnChange;
end;
procedure TmyPropertyEditor.OnChange(Sender: TObject; Node: TTreeNode);
begin
if ( Node.Data {хранится ссылка на объект} <> nil ) then
Designer.SelectComponent(TPersistent(Node.Data));
{После этого вызывается Destructor и Designer вместе с формой (F) уничтожаются}
end;
destructor TmyPropertyEditor.Destroy;
begin
if ( F <> nil ) then F.Free;
inherited;
end;
форму можно создавать и в Initialize, но и это не помогает.
Заранее благодарю!
← →
Skier (2003-05-28 16:45) [1]>ayder (28.05.03 16:39)
см. TCollectionEditor & TCollectionProperty
← →
Юрий Зотов (2003-05-28 16:54) [2]> После этого вызывается Destructor и Designer вместе с формой
> (F) уничтожаются
Естественно. При выборе нового компонента (или объекта) среда создает набор редакторов его свойств и уничтожает такой же набор редакторов свойств, ранее созданный для предыдущего выбранного компонента (или объекта). Поэтому SelectComponent уничтожает Ваш редактор, а тот уничтожает форму.
← →
ayder (2003-05-28 19:12) [3]Спасибо за ответы.
Skier> Нашел редакторы- буду разьираться.
Юрий Зотов> А как тогда быть.
← →
Юрий Зотов (2003-05-28 19:28) [4]Надо построить логику работы редактора как-то так, чтобы избежать вызова SelectComponent. И от этого никуда не денешься, потому что иначе редактор будет тут же уничтожен.
А зачем этот вызов вообще нужен? Ну, переместился юзер по дереву, ну и что? У вас же в DATA ссылка уже имеется, зачем Deigner-то "переселекчивать".
← →
ayder (2003-05-29 12:55) [5]>Юрий Зотов: У вас же в DATA ссылка уже имеется, зачем Deigner-то "переселекчивать".
Для того, чтобы в Object Inspectore можно было изменять свойства объекта, а не использовать для этого свой Object Inspector.
← →
Юрий Зотов (2003-05-29 16:21) [6]Значит, Вам нужно писать эксперт IDE, а не просто редактор свойства.
← →
ayder (2003-05-29 20:15) [7]Привет всем мастерам. Проблему редактора свойства с немодальным окном я решил. Для того, чтобы все это заработало необходимо в форму редактора передавать Designer и ссылку на Component(TPersistent). И потом уже через них оперировать.
← →
Юрий Зотов (2003-05-29 23:34) [8]И даже SelectComponent сохранили?
Sorry, в такой постановке - не верю.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c