БАГИ в FastReport 3

24567

Комментарии

  • отредактировано 20:23
    Ребята, добавьте п-ста опцию "перенос по слогам" в мемо (что то я ее не нашел).
  • отредактировано 20:23
    Еще предложение: все переменные отчета содержатся в виде дерева (родитель-переменная). Было бы неплохо, если бы и обращение к переменной было соответствующее. Т.е. есть Поставщик-наименование и Покупатель-наименование ("покупатель" и "поставщик" - наименование корневой ветки). Сейчас переменная будет называться <Наименование>, а желательно чтобы было <Поставщик.наименование> и <Покупатель.наименование>. Конечно я могу при формировании сделать формировать список переменных в виде Поставщик (корн. ветка)- Поставщик_наименование (переменная), но способ, к-й я предлагаю "красивее" (на мой субъективный взгляд) ;)
  • отредактировано September 2004
    Саша а с этим что??

    На форме диалога стоит запрос.
    беру копирую в буфер
    и вставляю рядом на форму.
    что видем.
    у которого копировали UserName стал 1
    у втрого тоже UserName стал 1
    в меню Отчет данные там две 1
    ручками исправляю все.
    UserName у первого компонента потом у второго.
  • отредактировано 20:23
    На визуальные компоненты отчетов (в диалоге) добавьте пож-ста свойство TabOrder, а то приходится для правильного перехода фокуса (клафиша TAB) заново все "бросать" на форму
  • отредактировано 20:23
    Да что за Херня полдня бьюсь ничего не могу понять.
    открывается одна форма там заполняю переменные.
    DmReport.Report.Script.Variables := YearOf(Date);
    DmReport.Report.Variables := YearOf(Date);
    Закрывается форма открываю другую форму а там уже список переменных пуст.
    все компоненты фаста лежат на датамодуле форме.


  • отредактировано 20:23
    При загрузке отчета Loadfromstream происходит вызов
    procedure TfrxReport.DoClear;
    begin
    inherited Clear;
    FDataSets.Clear;
    FVariables.Clear;
    Последняя строчка как раз и чистит все переменные которые были раньше
    Т.е. заполняй переменные только после того как загрузил шаблон отчета
  • отредактировано 20:23
    Я сейчас ругаться начну.
    каго юююююююююю это сделали.

    Убить стока времени на поиск этого...

    Зачем они этот список чистят???
    Пользователь открывает форму выставляет там значения.
    я их закидываю в переменные фаста.
    потом работает в других формах.
    хочет распечатать отчет. отчет грузится из блоб и эти переменные мне они очищают....
    Нахрен тогда они нужны??
    в 2 заполнил и пользуйся. А тут получается Заводить еще список хранить его потом опять заполнять.. Херня какая то..

    Думал обойду это так
    завожу переменную FVariablesFr : TfrxVariables;
    в модуле заполняю ее.
    фаст умудрился и ее очистить как мне не понятно

  • отредактировано 20:23
    все у меня все из за этого встало.
    переход на 3 прийдется откладывать...
  • отредактировано 20:23
    Заведи на форме какую нибудь табличку в памяти (типа TMemtable) или TParams, храни там все свои переменные, а после загрузки шаблона отчета перекачивай их в переменные TfrxReport. Сам таким образом поступаю.
    Я два дня назад также как и ты ругался - "куда ни кинь повсюду клин". Сейчас вроде бы сдвинулось с места. Глядишь совместными усилиями и доведем продукт до ума, будем, типа, первопроходцами.
  • отредактировано 20:23
    Так я и завел
    переменную FVariablesFr : TfrxVariables;
    свою переменную.
    но где и как он ее обнуляет так и не смог отследить
    прямо шамансво.
    столко глюков сегодня отловил.
  • отредактировано 20:23
    Александр, нарисуй п-ста кнопку "Выход" в дизайнере (раньше было). В нее попадать мышой легче, чем в крестик
  • APSAPS
    отредактировано 20:23
    = Ошибка при попытке сделать LoadFromStream =
    Delphi 5, FR 3.02

    Ситуация:
    Есть некое приложение, генерящее некий отчет. И есть некая таблица, хранящая сей отчет в неком поле типа BLOB. При попытке достать этот отчет через:

    F := TBlobField(ods2.FieldByName('REPORT'));
    Stream := TMemoryStream.Create;
    try
    F.SaveToStream(Stream);
    try
    frxReport1.LoadFromStream(Stream);
    except
    on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
    end;
    finally
    Stream.Free;
    end;

    получаем exception 'Invalid file format'. При этом вполне нормально работает:

    F := TBlobField(ods2.FieldByName('REPORT'));
    F.SaveToFile(SomeFileName);
    try
    frxReport1.LoadFromFile(SomeFileName);
    except
    on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
    end;

    Устранить проблему удалось фиксом в frxXML.pas (отмечено):

    procedure TfrxXMLDocument.LoadFromStream(Stream: TStream;
    AllowPartialLoading: Boolean = False);
    var
    rd: TfrxXMLReader;
    begin
    DeleteTempFile;

    rd := TfrxXMLReader.Create(Stream);
    try
    rd.SetPosition(0); // added by APS 21.09.2004
    FRoot.Clear;
    FRoot.Offset := 0;
    rd.ReadHeader;
    rd.ReadRootItem(FRoot, not AllowPartialLoading);
    finally
    rd.Free;
    end;
    ...
    ...

    ЗЫ. Не претендую на исключительную правильность, но, вроде, работает пока что...
  • отредактировано 20:23
    Eugene Lachinov написал:
    { о багах }

    Редактируемая форма диалога в дизайнере всегда поверх всех окон, даже если находишься в другом приложении, при переключении обратно форма диалога активизируется, но сам Дизайнер где-то за окнами запущенных приложений
    У меня такое есть, но только если FR3 лежит в Dll. В остальных случаях (design-time или Exe) - все нормально!
  • отредактировано 20:23
    Vlad_p написал:
    Компонент доступа к базам "Запрос". Меняю текст запроса, не перезачитывается список полей, кот-е потом видно в диалоге алиаса и выбора поля.
    Поля перечитываются только при уходе с диалоговой формы.
  • отредактировано 20:23
    SeregaG написал:
    Александр!!! Сделай п-ста в Fastreportе при вставке нового Memo чтобы координаты (Top, Left, Width, Height) брались округленные, т.е. например вместо 62,94 ставилось изначально 63. А то получается визуально все элементы стоят вроде бы в один ряд, а по параметрам координат отличаются на сотые доли, и как итог при экспорте в Ёксел образуется куча лишних срочек и столбцов. М.б. лучше этот параметр округления вывести куданибудь в настройку всего Fastreport.
    Вставляемые объекты имеют координаты и размеры, соответствующие выбранной сетке. Если сетка в сантиметрах - о каком округлении идет речь?
  • отредактировано 20:23
    SeregaG написал:
    Ребята, добавьте п-ста опцию "перенос по слогам" в мемо (что то я ее не нашел).
    Св-во WordBreak.
  • отредактировано 20:23
    SeregaG написал:
    Еще предложение: все переменные отчета содержатся в виде дерева (родитель-переменная). Было бы неплохо, если бы и обращение к переменной было соответствующее. Т.е. есть Поставщик-наименование и Покупатель-наименование ("покупатель" и "поставщик" - наименование корневой ветки). Сейчас переменная будет называться <Наименование>, а желательно чтобы было <Поставщик.наименование> и <Покупатель.наименование>. Конечно я могу при формировании сделать формировать список переменных в виде Поставщик (корн. ветка)- Поставщик_наименование (переменная), но способ, к-й я предлагаю "красивее" (на мой субъективный взгляд) ;)
    Так было всегда, и что-то менять уже поздно...
  • отредактировано 20:23
    SeregaG написал:
    На визуальные компоненты отчетов (в диалоге) добавьте пож-ста свойство TabOrder, а то приходится для правильного перехода фокуса (клафиша TAB) заново все "бросать" на форму
    Пользуйтесь редактором TabOrder (вызывается из контекстного меню).
  • отредактировано 20:23
    AlexTZ написал:
    AlexTZ написал:
    Александр!!! Сделай п-ста в Fastreportе при вставке нового Memo чтобы координаты (Top, Left, Width, Height)  брались округленные, т.е. например вместо 62,94 ставилось изначально 63.  А то получается визуально все элементы стоят вроде бы в один ряд, а по параметрам координат отличаются на сотые доли, и как итог при экспорте в Ёксел образуется куча лишних срочек и столбцов. М.б. лучше этот параметр округления вывести куданибудь в настройку всего Fastreport.
    Вставляемые объекты имеют координаты и размеры, соответствующие выбранной сетке. Если сетка в сантиметрах - о каком округлении идет речь?
    Настройки "тип сетки - точки"
  • отредактировано 20:23
    Konst написал:
    Я сейчас ругаться начну.
    каго юююююююююю это сделали.

    Убить стока времени на поиск этого...

    Зачем они этот список чистят???
    Пользователь открывает форму выставляет там значения.
    я их закидываю в переменные фаста.
    потом работает в других формах.
    хочет распечатать отчет. отчет грузится из блоб и эти переменные мне они очищают....
    Нахрен тогда они нужны??
    в 2 заполнил и пользуйся. А тут получается Заводить еще список хранить его потом опять заполнять.. Херня какая то..

    Думал обойду это так
    завожу переменную FVariablesFr : TfrxVariables;
    в модуле заполняю ее.
    фаст умудрился и ее очистить как мне не понятно
    А как ты думаешь, зачем это сделано? Список переменных - это свойство ОТЧЕТА. Когда ты загружаешь другой отчет - у него может быть свой список. Что тогда будет, если этот список не чистить? По поводу своих переменных - формируй их перед тем, как показать отчет, а не перед его загрузкой.
  • отредактировано 20:23
    SeregaG написал:
    Александр, нарисуй п-ста кнопку "Выход" в дизайнере (раньше было). В нее попадать мышой легче, чем в крестик
    Придется отвыкать или добавлять ее в frxDesgn самостоятельно ;)
  • отредактировано 20:23
    APS написал:
    = Ошибка при попытке сделать LoadFromStream =
    Delphi 5, FR 3.02

    Ситуация:
    Есть некое приложение, генерящее некий отчет. И есть некая таблица, хранящая сей отчет в неком поле типа BLOB. При попытке достать этот отчет через:

    F := TBlobField(ods2.FieldByName('REPORT'));
    Stream := TMemoryStream.Create;
    try
    F.SaveToStream(Stream);
    try
    frxReport1.LoadFromStream(Stream);
    except
    on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
    end;
    finally
    Stream.Free;
    end;

    получаем exception 'Invalid file format'. При этом вполне нормально работает:

    F := TBlobField(ods2.FieldByName('REPORT'));
    F.SaveToFile(SomeFileName);
    try
    frxReport1.LoadFromFile(SomeFileName);
    except
    on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
    end;

    Устранить проблему удалось фиксом в frxXML.pas (отмечено):

    procedure TfrxXMLDocument.LoadFromStream(Stream: TStream;
    AllowPartialLoading: Boolean = False);
    var
    rd: TfrxXMLReader;
    begin
    DeleteTempFile;

    rd := TfrxXMLReader.Create(Stream);
    try
    rd.SetPosition(0); // added by APS 21.09.2004
    FRoot.Clear;
    FRoot.Offset := 0;
    rd.ReadHeader;
    rd.ReadRootItem(FRoot, not AllowPartialLoading);
    finally
    rd.Free;
    end;
    ...
    ...

    ЗЫ. Не претендую на исключительную правильность, но, вроде, работает пока что...
    Очень распространенная ошибка. Правильно так:

    F.SaveToStream(Stream);
    try
    Stream.Position := 0;
    frxReport1.LoadFromStream(Stream);
  • отредактировано 20:23
    SeregaG написал:
    SeregaG написал:
    SeregaG написал:
    Александр!!! Сделай п-ста в Fastreportе при вставке нового Memo чтобы координаты (Top, Left, Width, Height)  брались округленные, т.е. например вместо 62,94 ставилось изначально 63.  А то получается визуально все элементы стоят вроде бы в один ряд, а по параметрам координат отличаются на сотые доли, и как итог при экспорте в Ёксел образуется куча лишних срочек и столбцов. М.б. лучше этот параметр округления вывести куданибудь в настройку всего Fastreport.
    Вставляемые объекты имеют координаты и размеры, соответствующие выбранной сетке. Если сетка в сантиметрах - о каком округлении идет речь?
    Настройки "тип сетки - точки"
    В таком случае вставляются целые значения - проверено. Или я как-то неправильно вставляю?
  • отредактировано 20:23
    AlexTZ написал:
    AlexTZ написал:
    А как ты думаешь, зачем это сделано? Список переменных - это свойство ОТЧЕТА. Когда ты загружаешь другой отчет - у него может быть свой список. Что тогда будет, если этот список не чистить? По поводу своих переменных - формируй их перед тем, как показать отчет, а не перед его загрузкой.
    Саша объясни мне пожалуйста.

    я объявляю переменную FVariablesFr : TfrxVariables;
    в своем датамодуле инициализирую ее заполняю.

    Почему после загрузки выгрузки Фаст эту переменную чистит??

    мне это не понятно


  • отредактировано 20:23
    AlexTZ написал:
    AlexTZ написал:
    { о багах }

    Редактируемая форма диалога в дизайнере всегда поверх всех окон, даже если находишься в другом приложении, при переключении обратно форма диалога активизируется, но сам Дизайнер где-то за окнами запущенных приложений
    У меня такое есть, но только если FR3 лежит в Dll. В остальных случаях (design-time или Exe) - все нормально!
    Нет у меня обычный ЕХЕ файл.
    никаких Длл.
    И как с этим бороться??
  • отредактировано 20:23
    Konst написал:
    На форме диалога стоит запрос.
    беру копирую в буфер
    и вставляю рядом на форму.
    что видем.
    у которого копировали UserName стал 1
    у втрого тоже UserName стал 1
    в меню Отчет данные там две 1
    ручками исправляю все.
    UserName у первого компонента потом у второго.
    Саша а с этим что??
  • отредактировано 20:23
    Konst написал:
    FOnSaveReport

    Добавляем обработку. Сохранения в Блоб Файл.
    Все работает.
    Но я хочу чтобы он стандартно обрабатывал, когда говоришь сохранить как.

    если я в обработчике первой строкой проверяю
    if SaveAs then exit;
    и не выставляю И функция возвращает := False;
    почему не идет стандартая процедура сохранить как?
    по моему здесь
    if frxDesignerComp.FOnSaveReport(Report, SaveAs) then
    begin
    UpdateRecentFiles(Report.FileName);
    UpdateCaption;
    Modified := False;
    end;
    Exit;

    Exit; нужно ставить строкой выше
    Саша ты про это прочел?
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 20:23
    Возможно не баг, но все-таки нехорошо ;)

    В предварительном просмотре печать доступна по Ctrl+P, даже если кнопка печати не показывается (запрещена)
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 20:23
    AlexTZ написал:
    У меня такое есть, но только если FR3 лежит в Dll. В остальных случаях (design-time или Exe) - все нормально!
    И в EXE и в DLL была одна и таже проблема,

    изначально у TfrxDialogForm FormStyle - fsStayOnTop, при смене на fsNormal возникают другая проблема - форма диалога остается где-то позади, но решаемая и нет такого безобразия ;) с показом формы поверх всех окон приложений
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 20:23
    { о багах }

    Для TfrxDBDataSet определены все события навигации по набору данных
    OnCheckEOF, OnFirst, OnNext, OnPrior
    Fast Report 3.0 выполняет и свою обработку и определенные события, в результате часть данных не печатается ;)

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.