在Delphi XE中打开项目时,为什么主窗体无法访问DataModule的图像和操作?

时间:2011-09-14 13:27:00

标签: delphi delphi-xe datamodule

我的Delphi XE应用程序很好,直到几天,我无法弄清楚出了什么问题。我的项目布局:

  • 可视控件位于主窗体上
  • 这些控件的操作和图像列表位于数据模块上

当我打开我的项目时,主表单没有任何与任何控件关联的图像或操作,即使它们应该是。当我编译时,我得到错误消息:“模块'winMain'链接到模块'modGeneral',这在当前项目中找不到。你想删除/重定向到另一个模块的链接吗?”。

解决方法:在我打开项目后关闭主窗体,然后在项目管理器中双击它,在IDE中打开模块(是的,它出现在当前项目中),然后重新启动打开主窗体:现在可以正确显示我的所有动作和图像。

你怎么看,这是一个已知的Delphi漏洞?我的项目有问题吗?

2 个答案:

答案 0 :(得分:7)

检查.dpr文件。重现问题的一种方法是更改​​其中的uses子句。 考虑这个工作正常的例子:

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

...你得到了你描述的错误。 您需要关闭并重新打开项目才能使更改生效。

答案 1 :(得分:0)

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},

修正错误,让事情有效。