На данный момент делаю редактор верхнего уровня . Хочу сделать похожей на среду lazarus. На форме располагаются компоненты (потомки TControl), которые описаны в модулях самого редактора, что очень ограничивает расширение системы. Хотелось бы что бы компоненты можно было редактировать отдельно и подгружать в редактор. То есть хранить компоненты в отдельных dll например. Можно ли такое сделать или нет? Или есть альтернативные решения?
На данный момент форма с элементами сохраняется как файл ресурсов:
- Код: Выделить всё
WriteComponentResFile(UTF8ToSys(SaveDialog1.FileName), (ActivePicture as Tform));
При добавлении на форму компонента регистрируется класс:
- Код: Выделить всё
RegisterClass(THMIBaseControl);
RegisterClass(THMIRectangle);
RegisterClass(THMILabel);
Pc := GetClass(SelectComponentType);
if Pc <> nil then
begin
Ctrl := TControlClass(Pc).Create((Sender as TForm));
Ctrl.Parent := (Sender as TForm);
Inc(countObj);
Ctrl.Name := Copy(SelectComponentType, 2, Length(SelectComponentType)-1) + IntToStr(countObj);
Ctrl.Left := X;
Ctrl.Top := Y;
Ctrl.Caption := Ctrl.Name;
THMIBaseControl(Ctrl).OnMouseDown:=@NetComponentBoxMouseDown;
THMIBaseControl(Ctrl).OnMouseMove:=@NetComponentBoxMouseMove;
THMIBaseControl(Ctrl).OnMouseUp:=@NetComponentBoxMouseUp;
THMIBaseControl(Ctrl).OnClick:=@NetComponentBoxClick;
end;
вот ссылка на екзешник: http://www.azbuka-softa.ru/wp-content/uploads/2011/12/HMIEditor.zip.
Буду очень благодарен вашим советам.