Свойство быстрого отчета PreviewLeft не существует - PullRequest
1 голос
/ 06 сентября 2011

У меня есть программа, которая использует quickreports 5 для генерации некоторых отчетов.Программа всегда была скомпилирована на одном конкретном ПК.Теперь я хочу разработать программу на других машинах, но у меня есть большая проблема с быстрыми отчетами.

Хотя я установил ту же версию быстрых отчетов (5.0.2) на новые машины, я не могу заставить программуработать над ними.Как только я открываю форму с быстрым отчетом на новых машинах, я получаю ошибку:

Ошибка чтения FrmMyReport.PreviewLeft: Свойство PreviewLeft не существует....

Я могу скомпилировать программу, но как только я использую форму с кратким отчетом, я получаю следующее исключение:

Project MyProject.exeвозбужденный класс исключений EReadError с сообщением «Свойство PreviewLeft не существует».

Когда я делаю перерыв, он останавливается в TCustomQuickRep.Create.После отладки это происходит в TCustomQuickRep.SetBandValues в строке if assigned(FPage) and assigned(FBandList) and.

Я также попытался установить пакеты вручную, с помощью compile - install, добавил все возможные каталоги в пути к библиотекам.Ничего не работаетЯ не вижу разницы между старой машиной, где она работает нормально, и новой.

Я надеюсь, что кто-то может помочь мне решить эту проблему.Очень важно иметь возможность разрабатывать это приложение на новых машинах.Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 06 сентября 2011

Вы уверены, что на старой и новой машине установлена ​​одна и та же версия QuickReport? Потому что сообщение об ошибке обычно появляется, когда у вас есть описание компонента в DFM, созданное с более новой версией, чем та, которую вы используете, то есть

  • версия x компонента вводит новое свойство PreviewLeft;
  • вы разрабатываете версию x, свойство сохраняется в DFM;
  • вы компилируете / открываете проект с версией компонента x-1, у которой нет свойства, и потоковая система вызывает исключение, так как не может найти свойство в старой версии компонента.

Также возможно, что новая версия удаляет (устаревшее) свойство, но в этом случае поставщик компонентов обычно старается игнорировать свойство во время потоковой передачи, поэтому исключение не возникает. Поэтому я подозреваю, что на новом компьютере у вас установлена ​​более старая версия QuickReport. Я сам не использую QuickReport, поэтому не знаю, когда было введено свойство PreviewLeft и зачем оно нужно ... если оставить координату слева для окна предварительного просмотра, то я бы сказал, что игнорировать его безопасно и очистить его от DFM - сложный способ - открыть отчеты один за другим в IDE и нажать «Игнорировать» в ошибке dlg, простой способ - использовать какой-то инструмент, т.е. я считаю, что Jedi может есть такой инструмент.

UPDATE Инструмент Jedi называется DFMcleaner, он находится в каталоге jvcl\devtools\DFMCleaner в моей установке Delphi 5.

0 голосов
/ 06 сентября 2011

Я сталкивался с ситуациями, когда взламывал / расширял стороннюю библиотеку для добавления / исправления некоторых функций.Затем я перехожу на новый компьютер (или загружаю обновление от поставщика) и теряю свои новые свойства.Между подобными недоразумениями часто бывают месяцы или годы, поэтому я, как правило, теряю полдня, выслеживая их, а потом это «Д'ОХ! Дежавю снова и снова».У меня есть один компонент, где я на самом деле добавил свойство, которое называется что-то вроде

property ThisLibraryWontCompileUntilItsBeenHackedByChris : boolean;

Когда компилятор останавливается на этом, я знаю, где искать.

Крис

...