Как получить новое имя модуля из API открытых инструментов Delphi

Я написал мастера в Delphi XE, и он работает нормально. Однако я еще не выяснил, как получить доступ к сгенерированному имени модуля по умолчанию (или имени формы или имени проекта), которое может создать OTA Delphi.

В моем мастере старого стиля я смог вызвать ToolServices.GetNewModuleName, чтобы обнаружить доступный модуль и имя формы, которые я мог бы использовать при создании связанных исходных файлов. Что является эквивалентом в сегодняшнем API открытых инструментов?

Согласно комментариям модуля ToolsAPI, я должен вернуть пробел из метода IOTAModuleCreator.GetImplFileName, чтобы Delphi сгенерировал имя файла. Я возвращаю пустую строку из этого метода, но все еще не вижу, где я могу получить доступ к имени файла, который генерирует Delphi.

3 ответа

Решение

Существует специальный метод получения новой формы и имени модуля:

(BorlandIDEServices as IOTAModuleServices).GetNewModuleAndClassName ('', UnitIdent, FormName, FileName);

Я использовал в нескольких примерах, и, кажется, работает нормально.

Метод IOTAModuleCreator.NewImplSource имеет параметр "ModuleIdent", это имя модуля.

В моих тестах все работает как вы ожидали (ModuleIdent параметр в NewImplSource метод получает новое имя модуля). Проверьте вашу реализацию еще раз, особенно убедитесь, что:

  • IOTACreator.GetUnnamed возвращает True
  • IOTACreator.GetExisting возвращает Ложь
  • IOTACreator.GetCreatorType возвращает соответствующий идентификатор (sUnit, sFormи т. д.) - Я не уверен в этом, но это тоже может быть важно

Вот рабочий пример. Я только что проверил это, и код все еще работает, как и ожидалось, в Delphi XE.

Другие вопросы по тегам