Как я могу исправить 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 не может сгенерировать отчет. Это произошло из-за того, что мой принтер исчез, и мне пришлось переустанавливать его, и проблема, похоже, была устранена.