Почему основная форма не может получить доступ к изображениям и действиям DataModule, когда проект открыт в Delphi XE? - PullRequest
3 голосов
/ 14 сентября 2011

Мое приложение Delphi XE работало до двух дней, и я не могу понять, что не так.Макет моего проекта:

  • Визуальные элементы управления находятся в главной форме
  • Действия и списки изображений для этих элементов управления находятся в модуле данных

При открытииВ моем проекте основная форма не имеет изображения или действий, связанных с каким-либо из элементов управления, даже если они должны быть.Когда я компилирую, я получаю сообщение об ошибке: «Модуль 'winMain' ссылается на модуль 'modGeneral', который не может быть найден в текущем проекте. Вы хотите удалить / перенаправить ссылки на другой модуль?".

Обходной путь: закройте основную форму после того, как я открою проект, затем откройте модуль в IDE, дважды щелкнув его в диспетчере проектов (да, он присутствует в текущем проекте), затем снова откройте основнойФорма: все мои действия и изображения теперь отображаются правильно.

Как вы думаете, это известная ошибка Delphi?Проблема с моим проектом?

Ответы [ 2 ]

7 голосов
/ 14 сентября 2011

Проверьте ваш .dpr файл. Один из способов воспроизвести вашу проблему - это изменить в ней пункт использования. Рассмотрим пример, который отлично работает:

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {DataModule2: TDataModule};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TDataModule2, DataModule2);
  Application.Run;
end.

Значок в Диспетчере проектов выглядит как обычно для модуля с dfm:

Project Manager screenshot 1

Если вы удалите комментарий или закомментируете его:

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas'; // {DataModule2: TDataModule};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TDataModule2, DataModule2);
  Application.Run;
end.

Здесь значок изменился:

Project Manager screenshot 2

... и вы получите ошибки, которые вы описали. Вам нужно закрыть и снова открыть проект, чтобы изменения вступили в силу.

0 голосов
/ 03 мая 2014

TOndrej ответ является полным и правильным.У меня есть только небольшое дополнение, которое я, возможно, должен опубликовать как комментарий, но боюсь, это не будет заметно.Я столкнулся с описанной ошибкой после переименования модуля и рефакторинга файла проекта (на самом деле я удалил все in и комментарии из раздела uses).Я вернул требуемый шаблон в разделе «Использования», но все еще получил ошибку.Моей ошибкой было выравнивание, которое я добавил к комментариям в разделе «Использование»:

DMMain     in 'DMMain.pas'     {fdmMain    : TDataModule},
DMIndex    in 'DMIndex.pas'    {fdmIndex   : TDataModule},

Удивительно, но действительно имеет значение.Удаление выравнивания

DMMain     in 'DMMain.pas'     {fdmMain: TDataModule},
DMIndex    in 'DMIndex.pas'    {fdmIndex: TDataModule},

исправило ошибку, и у меня все заработало.

...