Как я могу исправить EInvalidOperation, связанный с ImageList

Мое приложение (запись на Delphi 7) работает правильно на Windows XP SP3, но когда я пытаюсь запустить его на Windows 7, возникает это исключение:

EInvalidOperation с сообщением "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 возникает проблема. Как я могу решить эту проблему?

2 ответа

Решение

Подобное исключение может возникнуть, если вы используете значение для свойства ColorDepth это не поддерживается текущей операционной системой. Или это может произойти, если вы попытаетесь использовать 32-битный список изображений с альфа-каналом (TColorDepth.cd32Bit), но не имеют манифеста XP в вашем приложении. Для этого включите блок xpman в вашем проекте или выберите "Включить темы времени выполнения" в "Проект> Параметры> Приложение> Внешний вид> Темы времени выполнения" в Delphi XE2 или выше.

Я только что получил обновления от Windows 10, и он испортил мою машину, он забрал разрешения для моих папок. В настоящее время я использую Delphi, и когда я пытался распечатать отчеты, я получаю сообщение об ошибке. Class Elnvalidoperation не может сгенерировать отчет. Это произошло из-за того, что мой принтер исчез, и мне пришлось переустанавливать его, и проблема, похоже, была устранена.

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