При разработке дизайн-пакетов для Delphi, особенно при работе с FireMonkey (FMX), разработчики могут столкнуться с ошибкой компиляции, связанной с отсутствием модуля FmxDesignWindows. Эта проблема возникает при попытке использовать функциональность из FMX.Design.Items в своем пакете.
Проблема
Основная проблема заключается в том, что модуль FmxDesignWindows не находится в стандартных путях поиска Delphi, несмотря на добавление пути $(BDS)\source\Property Editors\ в настройках проекта. При компиляции пакета вы получаете ошибку:
[Error] Fatal: Unable to find 'FmxDesignWindows.dcu' or source
Решение
1. Использование dclFmxStd
Как было обнаружено в контексте, простое решение заключается в добавлении модуля dclFmxStd в раздел uses вашего пакета:
uses
dclFmxStd;
Этот модуль является частью стандартной поставки Delphi и содержит необходимые зависимости для работы с FireMonkey в дизайн-времени.
2. Проверка путей поиска
Если первый вариант не сработал, убедитесь, что у вас правильно настроены пути поиска:
Убедитесь, что у вас установлены все необходимые компоненты RAD Studio:
Запустите инсталлятор RAD Studio
Выберите "Modify"
Проверьте, что установлены "FireMonkey Components" и "Design-Time Packages"
Пример реализации
Вот пример простого дизайн-пакета для FireMonkey, который добавляет новый редактор свойств:
unit MyDesignUnit;
interface
uses
System.Classes, DesignIntf, DesignEditors, FMX.Controls, FMX.Types;
type
TMyFMXComponentEditor = class(TComponentEditor)
public
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponentEditor(TFmxObject, TMyFMXComponentEditor);
end;
{ TMyFMXComponentEditor }
procedure TMyFMXComponentEditor.ExecuteVerb(Index: Integer);
begin
inherited;
if Index = 0 then
ShowMessage('Это мой пользовательский редактор для FireMonkey!');
end;
function TMyFMXComponentEditor.GetVerb(Index: Integer): string;
begin
case Index of
0: Result := 'Показать сообщение от редактора';
else
Result := '';
end;
end;
function TMyFMXComponentEditor.GetVerbCount: Integer;
begin
Result := 1;
end;
end.
Заключение
Ошибка отсутствия модуля FmxDesignWindows обычно решается простым добавлением dclFmxStd в раздел uses вашего пакета. Если проблема сохраняется, проверьте пути поиска и убедитесь в правильности установки RAD Studio. При разработке дизайн-пакетов для FireMonkey всегда включайте необходимые runtime-пакеты в секцию requires вашего файла .dpk.
Помните, что работа с дизайн-временными пакетами требует точного соблюдения зависимостей и правильной настройки путей поиска. Используйте приведенные выше решения как отправную точку для диагностики и устранения подобных проблем в ваших проектах.
это описание решения проблемы отсутствия модуля FmxDesignWindows в Delphi при разработке дизайн-пакета, включающее причины ошибки и способы её устранения.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.