如何修复与ImageList相关的EInvalidOperation



我的应用程序(写在Delphi 7上)在Windows XP SP3上正确运行,但当我试图在Windows 7上运行它时,会出现此异常:

EInvalidOperation with message "Invalid ImageList"

这是主应用程序代码:

  Application.Initialize;
  tmpSplash.GoNextMsg;
  Application.CreateForm(TdmImages, dmImages);
  tmpSplash.GoNextMsg; // Collegamento database
  Application.CreateForm(TdmCharter, dmCharter);

  tmpSplash.GoNextMsg; // Caricamento immagini
  Application.CreateForm(TfrMain, frMain);
  tmpSplash.GoNextMsg; // init: Anagrafica
  frameAnagrafica := TframeAnagrafica.Create(Application);
  tmpSplash.GoNextMsg; // init: Flotta
  frameFlotta := TframeFlotta.Create(Application);
  //Application.CreateForm(TframeFlotta, frameFlotta);
  ...
  ...

模块dmImages已被正确创建,如frMain,但当将创建对象frameAnagrafica,然后在构造函数方法上引发异常:

type
    TframeAnagrafica = class(TMyCustomFrame)
...
...
{$R *.dfm}
constructor TframeAnagrafica.Create(AOwner: TComponent);
begin
  inherited Create(AOwner); 
end;

和TframeAnagrafica的"超类":

TMyCustomFrame = class(TFrame)
...
...
{$R *.dfm}
constructor TMyCustomFrame.Create(AOwner: TComponent);
begin
  inherited Create(AOwner); <-- Exception here
end;

在windows XP中没有问题,但在windows 7中出现了这个问题。我该如何解决这个问题?

如果您使用当前操作系统不支持的属性ColorDepth的值,则可能发生这样的异常。或者,如果您尝试使用带有alpha通道(TColorDepth.cd32Bit)的32位映像列表,但在应用程序中没有XP清单,则可能发生这种情况。要做到这一点,包括单元xpman在您的项目或选择"启用运行时主题"在"项目>选项>应用程序>外观>运行时主题"Delphi XE2或更高。

我刚收到windows 10的更新,它把我的机器弄得一团糟,它剥夺了我文件夹的权限。我目前正在运行Delphi,当我试图打印出报告时,我得到错误消息类Elnvalidoperation无法生成报告。这是因为我的打印机消失了,我不得不重新安装,问题似乎已经解决了。

相关内容

  • 没有找到相关文章

最新更新