Преобразование редактора свойств Delphi 7 в Delphi XE2

Прежде всего, я никогда не писал редактор свойств с нуля, но мне помогли с ним в еще вопрос. См. Принятый ответ там. Это было в Delphi 7, а теперь я начал использовать XE2 и должен убедиться, что мой редактор свойств совместим с как 7, так и XE2.

По сути, это редактор коллекции, с той разницей, что каждый элемент коллекции имеет свой именованный компонент в родительской форме. Есть ли что-нибудь новое в редакторах свойств в XE2, начиная с 7, поскольку это огромный скачок версии?

Я НЕ хочу делать полную копию своего агрегата для разных версий. Я хочу сохранить все возможные версии в одном устройстве.

Изменить

Похоже, что Delphi XE2 имеет те же редакторы свойств, что и Delphi 7, но проблема, с которой я столкнулся, заключалась в том, что, хотя я включал DesignIDE в свой пакет, он ничего не смог найти, поэтому мне пришлось добавить папку ToolsAPI в путь к моей библиотеке.

Однако после этого у меня возникла новая проблема.

[DCC Fatal Error] ToolsAPI.pas(18): F1026 File not found: 'DockForm.dcu'

Я потерялся во всей концепции пакетов BPL, требуя других и т. Д.


person Jerry Dodge    schedule 07.01.2012    source источник
comment
Какие проблемы возникают при переносе существующего кода?   -  person Remy Lebeau    schedule 08.01.2012
comment
Ни один из модулей редактора дизайна не найден, они разные в каждой версии delphi (насколько я знаю), и я ничего не знаю о создании редакторов дизайна, кроме того, что у меня есть один, созданный для моего проекта в D7.   -  person Jerry Dodge    schedule 08.01.2012
comment
Единицы времени разработки, которые используются в XE2 - DesignIntf, DesignEditors, DesignMenus, DesignWindows и т. Д. - были введены в D6, поэтому они использовались в D7. Создание редактора свойств / компонентов во время разработки в XE2 такое же, как в D7. Создайте пакет, предназначенный только для времени разработки, добавьте пакет DesignIDE и пакет времени выполнения вашего компонента в его список требований, закодируйте свой класс (классы) редактора по мере необходимости, а затем зарегистрируйте их с помощью RegisterPropertyEditor(), RegisterComponentEditor() и т. Д. Внутри экспортированной функции Register() вашего пакета времени разработки. Если у вас все еще есть проблемы, покажите свой код.   -  person Remy Lebeau    schedule 08.01.2012
comment
Если ваш редактор свойств был правильно написан для Delphi 7, он все равно должен идеально компилироваться в XE2. Последняя реорганизация модулей VCL для пакетов времени разработки произошла в Delphi 6. С тех пор имена модулей и пакетов не менялись. (Обратите внимание, я сказал VCL, поскольку очевидно, что в то время не существовало FMX.)   -  person Ken White    schedule 08.01.2012
comment
Могу ли я получить объяснения по поводу закрытия голосования? Я почти уверен, что каждый, кто обновляется до XE2, захочет узнать, будут ли у них проблемы с обновлением, чего я не знал, чего ожидать.   -  person Jerry Dodge    schedule 08.01.2012
comment
Джерри, это отличный вопрос. Не уверен, почему близкие голоса.   -  person Warren P    schedule 11.01.2012


Ответы (2)


DesignIntf, DesignEditors, DesignMenus, DesignWindows являются частью DesignIDE.bpl и находятся в \ Embarcadero \ RAD_Studio \ 9.0 \ lib \ win32 \ release \ designide.dcp. Но отсутствует designide.dcp для 64-битной версии, поэтому он выдает ошибку при компиляции 64-битного пакета, который ссылается на эти модули.

64-битной версии DesignIDE не существует, потому что она предназначена для пакета времени разработки, а пакеты времени разработки являются только 32-битными (помните, что IDE Delphi по-прежнему имеет только 32 бита). Поэтому всегда устанавливайте пакет времени разработки как 32-битный, а не 64-битный. :)

Майк

person Widget    schedule 18.01.2012
comment
Вот и все! Удалил все 64-битные ссылки, и это сработало: D Думаю, я должен был указать, что у меня был выбран 64-битный вариант. - person Jerry Dodge; 18.01.2012

Исходный код DockForm.pas недоступен ни в Delphi XE, ни в Delphi XE2.

Вы можете попробовать этот принятый ответ, опубликованный на SO, применительно к аналогичной проблеме в Delphi 2010.

Предположительно, он скомпилирован и включен в какой-то пакет, уже распространенный с Delphi XE2.

person menjaraz    schedule 09.01.2012
comment
+1. Добавьте DesignIde.dcp в раздел требований вашего пакета времени разработки, и это все, что вам нужно сделать. - person Warren P; 11.01.2012