Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Лицензия FastReport за багрепорты и багофиксы

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Открыть новую тему     Написать ответ в эту тему

My_Way



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Объявлена раздача лицензий за найденные баги и багофиксы по продукту от разработчиков
 
Постите здесь свои багрепорты и багофиксы по ФастРепорту,и получайте лицензии на ФастРепорт.
 
Расценки на версии FastReport 4:
 
FR Basic - 1 багрепорт
FR Standard - 3 багрепорта или  1 багофикс
FR Professional - 6 багрепортов или  2 багофикса
FR Enterprise - 9 багрепортов или 3 багофикса
FR Studio Single - 9 багрепортов или 3 багофикса
FR Server - 9 багрепортов или 3 багофикса
 
 
Полезная информация:

 
Найденные баги и багофиксы, использованные для получения лицензии младшего уровня учитываются при получении лицензии следующего уровня. Например,набрав один багрепорт, получаешь FR Basic, а набрав еще 2  - получаешь лицензию на FR Standard, и т.д.  
 
Один багофикс= 3 багрепорта.
Например,если вы нашли баг, и его пофиксили, то у вас в сумме 1 багрепорт+1 багофикс = 4 багрепорта.
 
За лицензиями при накоплении необходимого количества бонусов обращаться в ПМ к My_Way (В письме указывать Имя и емайл, на какой выслать регистрационную инфу)
 
Информация для новичков
Для вновь прибывших, внимательно читать вот ЭТО, чтобы не повторять уже исправленные баги

А еще и это ЭТУ ИНФУ  
 
P.S. Некоторые баги согласно My_Way являются фичами (Правда не знаю в документации это описано, так как баг считается фичей если он задокументирован, иначе это баг).
 
Результаты по подсчетам My Way:

Ник участника Багрепорты Багофиксы Итого: Лицензия Остатки      
gpi Четырнадцать Десять Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
GloThin Двадцать четыре Пять Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
DroN_S Одинадцать Семь Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
SerVal777 Двадцать семь Три Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
Nicka_Grey Двадцать четыре Четыре Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
LadyOfWood Двадцать девять Три Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
QuickeneR Шестнадцать Четыре Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
Garrett Двадцать семь Ноль Двадцать семь FR Ent+FR Studio+FR Server Больше не на что    
RUSer Двадцать восемь Ноль Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
mLex Двадцать пять Один Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
mrrex Тридцать один Ноль Двадцать семь+ FR Ent+FR Studio+FR Server Больше не на что    
Jedinichka Двадцать пять Ноль Двадцать пять FR Ent+FR Studio Семь    
aralekin Девятнадцать Два Двадцать пять FR Ent+FR Studio Семь    
vadson6666 Двадцать пять Ноль Двадцать пять FR Ent+FR Studio Семь    
DmLam Двадцать Ноль Двадцать FR Ent+FR Studio Два    
jonikDk Десять Три Девятнадцать FR Ent+FR Studio Один    
Alex_Yagolnik Девятнадцать Ноль Девятнадцать FR Ent+FR Studio Один    
karioth Восемьнадцать Ноль Восемьнадцать FR Ent+FR Studio Ноль    
denger2k Пятнадцать Один Восемьнадцать FR Ent+FR Studio Ноль    
martyanov Одинадцать Два Семьнадцать FR Ent Восемь    
EmeJIbka Десять Два Шестнадцать FR Ent Семь    
motrik Шестнадцать Ноль Шестнадцать FR Ent Семь    
exteris Шестнадцать Ноль Шестнадцать FR Ent Семь    
JustAMaaan Шестнадцать Ноль Шестнадцать FR Ent Семь    
Delphis11 Шестнадцать Ноль Шестнадцать FR Ent Семь    
mity Пятнадцать Ноль Пятнадцать FR Ent Шесть    
benchik Пятнадцать Ноль Пятнадцать FR Ent Шесть    
Darken Пятнадцать Ноль Пятнадцать FR Ent Шесть    
tomegadeth Пятнадцать Ноль Пятнадцать FR Ent Шесть    
MageSlayerDen Пятнадцать Ноль Пятнадцать FR Ent Шесть    
stalker780 Восемь Один Одинадцать FR Ent Три    
Vic26 Восемь Один Одинадцать FR Ent Два    
Wise Десять Ноль Десять FR Ent Один    
ultima Девять Ноль Девять FR Ent Ноль    
jzk Восемь Ноль Восемь FR Pro Восемь    
wbsg Восемь Ноль Восемь FR Pro Восемь    
royt Восемь Ноль Восемь FR Pro Восемь    
vshersh Восемь Ноль Восемь FR Pro Восемь    
vidic777 Восемь Ноль Восемь FR Pro Восемь    
Erazer Восемь Ноль Восемь FR Pro Восемь            


 
 
Примечание от My Way:
1. Передавать только остатки другим участникам нельзя...
2. Если хотите поделиться своими изысканиями с кем-нибудь из участников, до опубликования в ветке можно передать свои результаты через ПМ...
3. Остатки после лицензии на FR Studio Single, можно использовать, для получения лицензии на FR Server (цена такая же. как на FR Enterprise и FR Studio Single = 9 багрепортов )
4. Багофиксы к багофиксам (багофиксаторы, по термину GloThin), пока засчитываются, как отдельные, но возможно, в будущем будут делиться между решившими указанную проблему...  
 
Также мы премируем за написание статей на тему FastReport, как FastReport 3, так и FastReport Studio, стати начиная от технических, и заканчивая очень прикладными, например, первые
шаги в матричных отчетах, или анализатор логов в FastReport Studio, все
авторские права сохраняются, плюс мы содействуем в размещении этих статей
в изданиях. Есть что публиковать - пишите в ПМ

Всего записей: 80 | Зарегистр. 16-09-2004 | Отправлено: 14:16 23-08-2005 | Исправлено: My_Way, 16:15 30-03-2007
RUSer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Так что настало время обращать внимание и на эти проблемы  

Да кто ж против то? У нас всегда так: Пока не пнёшь - не полетит
 

Цитата:
1. Заполнил frxCrossView при помощи AddValue(. , . , .)  данными. Как получить заголовки (строки) frxCrossView в RunTime?? (необходимо далее выравнять сами ячейки вправо или влево. Как это сделать - тоже не понятно, потому что frxCrossView.ColMemos[0].HAlign работает аналогично frxCrossView.CelMemos[0].HAlign и выравнивает ВСЕ ячейки)  

Я тоже не разобрался, поэтому по тупому сделал все колонки одной ширины. А заголовки у мня были только в первых двух строках...

Всего записей: 390 | Зарегистр. 24-08-2004 | Отправлено: 17:51 04-10-2007
XFree2

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вспомнил, я подсмотрел как сделано в одном месте и сделал также:
 
в RunTime создаю TBitMap,  делаю:
 
BitMap := TBitMap.Create();
BitMap.Canvas.Font.assign ( !! Фонт другова объекта в отчёте (не frxCrossView поскольку не знаю как достать Font в скрипте))  
 
// Далее определяю ширину нужного мне текста. Впринципе, работает если Font у кроса  //  и у компонента, его замещающего, одинаковые.
 
strWidth := BitMap.Canvas.Font.TextWidth(str);
 
 
Проблема в том, что если я хочу в момент вычисления ширины последней ячейки скорректировать ширину других ячеек (например, у меня всё не влезло, хочу чуток ужать другие, т.к. уже знаю что сколько занимает) - у меня это не получается
 
2 RUSer:
Изменить ширину можно (делается на событии OnCalcWidth). Нельзя сделать это как мне нужно
 
 
В событии OnBeforePrint выровнять по горизонтали у меня не получилось (см выше), но получилось это сделать в событии OnPrint.

Всего записей: 2 | Зарегистр. 04-10-2007 | Отправлено: 08:54 05-10-2007
HeliX666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2TJSergio
Обратите внимание на свой пост на форуме FR, очень информативно правда ?
Можно было бы, хотя бы ссылку кинуть , если не хотели там постыть .
 
2fandm
Вам вроде не нравится вариант изменения VCL , а с использованием анси версии PeekMessage в цикле приложения (TApplication.ProcessMessage) TUnicodeMemo работать не будет, т.к. само сообщение извлеченное из очереди с помощью PeekMessageA не будет содержать в параметрах код юникод символа.

Всего записей: 2 | Зарегистр. 20-11-2006 | Отправлено: 15:01 05-10-2007
TJSergio



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Обратите внимание на свой пост на форуме FR, очень информативно правда ?
Можно было бы, хотя бы ссылку кинуть , если не хотели там постыть

Полностью согласен. Просто в тот момент я ещё не заглядывал в исходники  
Но если надо, могу повторить пост и на FR форум.

Всего записей: 58 | Зарегистр. 22-08-2002 | Отправлено: 17:54 05-10-2007
HeliX666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уже можно не дублировать

Всего записей: 2 | Зарегистр. 20-11-2006 | Отправлено: 20:08 05-10-2007
motrik

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fast Report Studio Site v4.01
 
В дизайнере:
1. Создаем новый репорт
2. Добавляем band PageHeader
3. Делаем его высоту 29,8 (высота листа 29,7)  
4. Нажимаем просмотр
Дизайнер вылетает

Всего записей: 7 | Зарегистр. 12-11-2003 | Отправлено: 14:24 09-10-2007
zeroandruxa



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
при разрыве страниц в компоненте RichEdit теряются отступы параграфов этот вопрос висит уже давно на форуме фаста, я вылечил так в модуле frxRich.pas исправить функцию DrawPart так:
 
function TfrxRichView.DrawPart:Extended;
var
  Range:TFormatRange;
  LastChar:Integer;
begin
  { get remained part of text }
  FTempStream1.Position:= 0;
  FRichEdit.Lines.LoadFromStream(FTempStream1);
  if FParaBreak then
  begin
// FRichEdit.SelStart:= 1;
// FRichEdit.SelLength:= 1;
    FRichEdit.Paragraph.FirstIndent:= FLeftIndent + FFirstIndent;
    FRichEdit.Paragraph.LeftIndent:= 0;
  end;
 
  { calculate the last visible char }
  FillChar(Range, SizeOf(TFormatRange), 0);
  with Range do
  begin
    rc:= Rect(0, 0, Round((Width-GapX * 2) * 1440 / 96),
      Round((Height-GapY * 2) * 1440 / 96));
    rcPage:= rc;
    if UsePrinterCanvas then
      hdc:= frxPrinters.Printer.Canvas.Handle
    else
      hdc:= GetDC(0);
    hdcTarget:= hdc;
 
    chrg.cpMin:= 0;
    chrg.cpMax:=-1;
    LastChar:= FRichEdit.Perform(EM_FORMATRANGE, 0, Integer(@Range));
    Result:= Round((rcPage.Bottom-rc.Bottom) / (1440.0 / 96))+2 * GapY+0.1;
 
    if not UsePrinterCanvas then
      ReleaseDC(0, hdc);
  end;
  FRichEdit.Perform(EM_FORMATRANGE, 0, 0);
 
  { text can't fit }
  if Result < 0 then
  begin
    Result:= Height;
    Exit;
  end;
 
  { copy the outbounds text to the temp stream }
  try
    if LastChar > 1 then
    begin
      FRichEdit.SelStart:= LastChar-1;
      FRichEdit.SelLength:= 1;
      FParaBreak:= FRichEdit.SelText<>#13;
      FLeftIndent:=FRichEdit.Paragraph.LeftIndent;
      FFirstIndent:=FRichEdit.Paragraph.FirstIndent;
    end;
 
    FRichEdit.SelStart:= LastChar;
    FRichEdit.SelLength:= FRichEdit.GetTextLen-LastChar+1;
    if FRichEdit.SelLength = 1 then
      Result:= 0;
    FTempStream1.Clear;
    FRichEdit.StreamMode:= [smSelection];
    FRichEdit.Lines.SaveToStream(FTempStream1);
    FRichEdit.SelText:= '';
  finally
    FRichEdit.StreamMode:= [];
  end;
end;

Всего записей: 538 | Зарегистр. 02-11-2005 | Отправлено: 14:55 09-10-2007
fandm



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HeliX666

Цитата:
Вам вроде не нравится вариант изменения VCL  

Та не всё нормально, уже я эти изменения сделал. Хотя сначала думал "по-красивому" поступить hook-ая обработку всех мессаджей через свой TApplication, как это сделано в TNT компонентах, но передумал, т.к. там кода добавляется... мамадарагая...
 
Но вот с TfrxRichView таки надо что-то решать...

Всего записей: 256 | Зарегистр. 10-10-2003 | Отправлено: 23:02 09-10-2007
aleks77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В четвертой версии Fast Report есть одна небольшая бага связанная с дополнителным определением типв DWORD в файлах frxZip.* Не знаю как под дельфями, не проверял, а на Сях вылетает куча ошибок связанное с тем что компилятор не может определить какой тип DWORD использовать стандартный или frxZip::DWORD Для нормално работы перед компиляцией нужно изменить исходники (привожу только начало)
 
frxZip.раs
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
 
{******************************************}
{                                                                          }
{             FastReport v4.0                                      }
{         ZIP archiver support unit                             }
{                                                                          }
{         Copyright (c) 1998-2006                             }
{          by Alexander Fediachov,                               }
{             Fast Reports Inc.                                       }
{                                                                         }
{******************************************}
 
unit frxZip;
 
{$I frx.inc}
 
interface
 
uses Classes, Windows, frxZLib, frxGZip, frxUtils, frxFileUtils;
 
type
 {DWORD = Longword;          <<<< -------------- коментим   }  
  TfrxZipLocalFileHeader = class;
  TfrxZipCentralDirectory = class;
  TfrxZipFileHeader = class;
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
 
frxZip.hpp
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
// Borland C++ Builder
// Copyright (c) 1995, 2002 by Borland Software Corporation
// All rights reserved
 
// (DO NOT EDIT: machine generated header) 'frxZip.pas' rev: 6.00
 
#ifndef frxZipHPP
#define frxZipHPP
 
#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <frxFileUtils.hpp>    // Pascal unit
#include <frxUtils.hpp>    // Pascal unit
#include <frxGZip.hpp>    // Pascal unit
#include <frxZLib.hpp>    // Pascal unit
#include <Windows.hpp>    // Pascal unit
#include <Classes.hpp>    // Pascal unit
#include <SysInit.hpp>    // Pascal unit
#include <System.hpp>    // Pascal unit
 
//-- user supplied -----------------------------------------------------------
 
namespace Frxzip
{
//-- type declarations  
// typedef unsigned DWORD;    <<<<<  ---  коментим
 
class DELPHICLASS TfrxZipArchive;
class PASCALIMPLEMENTATION TfrxZipArchive : public System::TObject  
{
    typedef System::TObject inherited;
    
private:
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*

Всего записей: 98 | Зарегистр. 18-12-2006 | Отправлено: 13:57 19-10-2007
Oleg_bbb

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Баг нашелся......
 
1. Берем любой объект (например мемо) и кладем его на форму отчета
2. Поверх него кладем бэнд
3. Пробуем растянуть бэнд до размера мемо
Результат - мыша ездит сверху экрана, а бэнд таскается внизу
 
того же можно добится просто таская изменитель размера бэнда вверх-вниз
 
скрин снять не получилось - мыши тама не видно
Версия ФР - 4.4. Версия с исходниками, купленная ж)
 
З.Ы. Надеюсь, я понятно все описал..... если что могу ответить на любые вопросы по этому поводу.

Всего записей: 15 | Зарегистр. 12-06-2002 | Отправлено: 18:33 25-10-2007
dvr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Распространяется ли данная акция на FastReport Studio для MSVC (в виде COM компонента, без исходников)?
Если да, то только на сам fastreport3.dll, или на дизайнер FastReport.exe тоже?

Всего записей: 6 | Зарегистр. 15-10-2003 | Отправлено: 14:05 03-01-2008
My_Way



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dvr

Цитата:
Распространяется ли данная акция на FastReport Studio для MSVC (в виде COM компонента, без исходников)?  

Комплект продукта FastReport Studio включает в себя как дизайнер,так и все необходимое для работы. Соответственно используется СОМ. Исходники тоже соответственно отсутствуют.
Не существует отдельного сабжа для MS Visual Studio, FastReport Studio может использоваться как в MS Visual Studio,так и в других подобных средах разработки.
Сотответственно, если в рамках данной акции раздается FastReport Studio Single, то акция распространяется и для вашего случая.

Всего записей: 80 | Зарегистр. 16-09-2004 | Отправлено: 20:52 07-01-2008
LadyOfWood

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
My_Way
На FastCube акция распространяется?

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 01:32 12-01-2008
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Про экспорт в PDF.
 
1. У меня портятся буквы азербайджанского языка(сохраняются вопросики), хотя в отчёте всё в порядке.
 
2. Надо одинаково назвать строки диалога экспорта и названия флагов.
Причем, скажу сразу, что верно в диалоге, но не верно название флагов.
В диалоге - Permissions, т.е. разрешения, и логично смотрятся чекбоксы (печать, модификация...).
Галочку поставил - значит разрешаешь.
Но в инспекторе объектов, это уже ProtectionFlags, т.е. ФлагиЗащиты.
и тут не понятно, true - это можно или запрещено...
 
Но сначала желательно всё же исправить экспорт в PDF букв аз.языка.
Пробовал на последней версии FR на С++Builder2007.

Всего записей: 2740 | Зарегистр. 16-10-2003 | Отправлено: 13:17 15-01-2008
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Ещё бажок.
Делаем новое приложение, на форму кидаем frxReport.
Щёлкаем на него дважды, попадаем в дизайнер.
В дизайнере на отчёт кладём PictureObject.
 
а) хорошо
Дважды щёлкаем на PictureObject, появляется окно, там жмём кнопку обзора, выбираем любой рисунок(jpeg), жмём Ок. Рисунок загружается в объект. Смотрим Превью, закрываем его, в дизайнере всё ОК.
 
б) плохо
Выбираем PictureObject, в инстпекторе объектов давим "..."  у свойства Picture, появляется окно, там жмём кнопку обзора, выбираем любой рисунок(jpeg), жмём Ок. Рисунок загружается в объект. Смотрим Превью, закрываем его, в дизайнере видим пустой PictureObject, без рисунка. Явно какой-то флажок не срабатывает при выборе рисунка через инспектор...

Всего записей: 2740 | Зарегистр. 16-10-2003 | Отправлено: 16:18 15-01-2008
EmeJIbka



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Пара непонятностей в работе DBCross:
1) При перетаскивании строки из списка полей в выбранном источнике данных в списки строк, столбцов или данных сама строка не исчезает (в тройке исчезала)
2) Несколько раз мне удалось поймать "List index out of bounce (-1)" при перетскивани (см. выше), но как я не понял...
З.Ы. FastReport 4.5.17

Всего записей: 167 | Зарегистр. 14-03-2005 | Отправлено: 12:54 20-01-2008
laborer2008

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
С недавних пор начал использовать fast report 4.5 и обнаружил несколько несуразностей/недоработок.
 
 
frxPreviewPageSettings.pas
 
В диалоге настроек параметров страницы пользователь может случайно ввести некорректные данные и при нажатии на 'Ok' программа ему ответит Access violation'ом. Данные конечно можно подправить и параметры страницы примут новые значения, но программа так ругающаяся оставляет впечатление недоделанной.
Чтобы этого не было, добавлены проверки корректности введённых данных в окна Edit. Для этого написаны обработчики OnExit:
 

Код:
 
{для MarginLeftE, MarginLeftR, MarginTopE, MarginBottonE}
procedure TfrxPageSettingsForm.MarginLeftEExit(Sender: TObject);
begin
  try
    frxStrToFloat(TEdit(Sender).Text);
  except
    TEdit(Sender).Text:='0';
  end;
end;
 
{для WidthE, HeightE}
procedure TfrxPageSettingsForm.WidthEExit(Sender: TObject);
var f:Double;
begin
  try
    f:=frxStrToFloat(TEdit(Sender).Text);
    if (f<0.1)then begin
      f:=0.1;// ограничиваем размер бумаги
      TEdit(Sender).Text:=frxFloatToStr(f);
    end;
  except
    TEdit(Sender).Text:=frxFloatToStr(0.1);
  end;
end;
 

Ограничено количество вводимых символов во все Edit'ы -  MaxLength:=30
 
было:

Код:
 
procedure TfrxPageSettingsForm.FormHide(Sender: TObject);
begin
  if ModalResult = mrOk then
  begin
    if PortraitRB.Checked then
      Page.Orientation := poPortrait else
      Page.Orientation := poLandscape;
 
    Page.PaperWidth := UnitsTomm(frxStrToFloat(WidthE.Text));
    Page.PaperHeight := UnitsTomm(frxStrToFloat(HeightE.Text));
    Page.PaperSize := frxPrinters.Printer.PaperNameToNumber(SizeCB.Text);
 
    Page.LeftMargin := UnitsTomm(frxStrToFloat(MarginLeftE.Text));
    Page.RightMargin := UnitsTomm(frxStrToFloat(MarginRightE.Text));
    Page.TopMargin := UnitsTomm(frxStrToFloat(MarginTopE.Text));
    Page.BottomMargin := UnitsTomm(frxStrToFloat(MarginBottomE.Text));
 
    Page.AlignChildren;
  end;
end;
 

стало:

Код:
 
procedure TfrxPageSettingsForm.FormHide(Sender: TObject);
begin
  if ModalResult = mrOk then
  begin
    MarginLeftEExit(MarginLeftE);
    MarginLeftEExit(MarginRightE);
    MarginLeftEExit(MarginTopE);
    MarginLeftEExit(MarginBottomE);
    WidthEExit(WidthE);
    WidthEExit(HeightE);
 
    if PortraitRB.Checked then
      Page.Orientation := poPortrait else
      Page.Orientation := poLandscape;
 
    Page.PaperWidth := UnitsTomm(frxStrToFloat(WidthE.Text));
    Page.PaperHeight := UnitsTomm(frxStrToFloat(HeightE.Text));
    Page.PaperSize := frxPrinters.Printer.PaperNameToNumber(SizeCB.Text);
 
    Page.LeftMargin := UnitsTomm(frxStrToFloat(MarginLeftE.Text));
    Page.RightMargin := UnitsTomm(frxStrToFloat(MarginRightE.Text));
    Page.TopMargin := UnitsTomm(frxStrToFloat(MarginTopE.Text));
    Page.BottomMargin := UnitsTomm(frxStrToFloat(MarginBottomE.Text));
 
    Page.AlignChildren;
  end;
end;
 

 
frxPrintDialog.pas
 
Похожая недоделка и в этом диалоге.
Если пользователь в PageNumbersE вводит некорректные данные, то возникают системные сообщения об ошибках.
Мне не понятно, почему тут проверку не сделали. Вроде бы есть стандартный диалог печати, который информирует пользователя в случае, если пользователь ошибётся.
Для предотвращения этого, добавлено:
 

Код:
 
TfrxPrintDialog
  private
    ...
    function CheckPageNumbersE: Boolean;// возвращает false, если в PageNumber.Text  
содержатся некорректные данные
 
function TfrxPrintDialog.CheckPageNumbersE: Boolean;
var i, start,a:Integer;
    s,txt:AnsiString;
begin
  Result:=true;
  start:=1;
  txt:=PageNumbersE.Text;
  for i:=1 to Length(txt) do begin
    if not(txt[i] in ['0','1','2','3','4','5','6','7','8','9',',','-'])then
    begin
      Result:=false;
      break;
    end;
    if (txt[i]=',') or (txt[i]='-')then begin
      s:=Copy(txt, start, i-start);
      try
        a:=StrToInt(s);
        if (a<=0)then Abort;
        start:=i+1;
        // тут по=хорошему надо бы добавить ещё и проверку, чтобы a не превышала количество страниц в отчёте.
      except
        Result:=false;
        break;
      end;
    end;
  end;
end;
 

написаны два обработчика:

Код:
 
procedure TfrxPrintDialog.OkBClick(Sender: TObject);// для OkB
begin
   if CheckPageNumbersE then OkB.ModalResult:=mrOk
   else begin
      Application.MessageBox(PChar(frxGet(9)), 'bla-bla-bla', MB_OK or MB_ICONERROR);
      OkB.ModalResult:=mrNone;
      PageNumbersE.SetFocus;
   end;
end;
 
procedure TfrxPrintDialog.FormClose(Sender: TObject; // для формы
  var Action: TCloseAction);
begin
  if (OkB.ModalResult=mrNone)then Action:=caNone;
  OkB.ModalResult:=mrOk;
end;
 

 
frxExportRTF.pas:
 
Первая же попытка сделать экспорт в RTF закончилась неудачей - вылетела ошибка. Стал разбираться.
Разработку я веду естественно при включённых опциях отладки (в том числе и Range check Error). Последняя опция проявляется, например, когда отрицательное число типа Integer пытаемся преобразовать к DWORD. А Integer - это тот же TColor. В функциях этого файла как раз и не учитывается последнее обстоятельство.
Решение - во всех местах где осуществлялись неявные приведения типов, стали осуществлятся явные приведения типов.
 
было:

Код:
 
function TfrxRTFExport.GetRTFColor(const c: DWORD): string;
var
  cn: DWORD;
begin
  cn := ColorToRGB(c);
  Result := '\red' + IntToStr(GetRValue(cn)) +
            '\green' + IntToStr(GetGValue(cn)) +
            '\blue' + IntToStr(GetBValue(cn)) + ';'
end;
 

Стало:

Код:
 
function TfrxRTFExport.GetRTFColor(const c: DWORD): string;
var
  cn: DWORD;
begin
  cn := ColorToRGB(TColor(c));
  Result := '\red' + IntToStr(GetRValue(cn)) +
            '\green' + IntToStr(GetGValue(cn)) +
            '\blue' + IntToStr(GetBValue(cn)) + ';'
end;
 

Встречающиеся вызовы GetRFGColor(НекийColor)в многочисленных местах заменены на GetRFGColor(DWORD(НекийColor))
 
В следующих местах добавил дополнительные проверки. Без которых также выскакивали ошибки.
 
frxXML.pas
 
было:

Код:
 
function Dup(n: Integer): String;
begin
   SetLength(Result, n);// тут почему-то у меня получался нулевой n.
            // ни времени, ни желания сильно разбираться не было, поэтому нашёл простое решение -
            // проверять на "положительность".
   FillChar(Result[1], n, ' ');
end;
 

стало:

Код:
 
function Dup(n: Integer): String;
begin
  if (n>0)then begin
    SetLength(Result, n);
    FillChar(Result[1], n, ' ');
  end else Result:='';  
end;
 

 
Ситуация с этим модулем была аналогична предыдущей. При построении отчёта - вываливалась ошибка.
 
frxAggregate.pas:
 
процедура вложенная в
 procedure TfrxAggregateList.FindAggregates(Memo: TfrxCustomMemoView;
  DataBand: TfrxDataBand);
 
было:

Код:
 
  procedure FindIn(const s: String);
  var
    i, j: Integer;
    s1, s2, s3, s4: String;
  begin
    if Check(s) then
      Exit;
 
    { this is an expression }
    i := 1;
    while i <= Length(s) do
    begin
      { skip non-significant chars }
      while (i <= Length(s)) and (s[i] in Spaces) do
        Inc(i);
       
      case s[i] of
        '<':
          begin
            FindIn(frxGetBrackedVariable(s, '<', '>', i, j));
            i := j;
          end;
 

стало:

Код:
 
  procedure FindIn(const s: String);
  var
    i, j: Integer;
    s1, s2, s3, s4: String;
  begin
    if Check(s) then
      Exit;
 
    { this is an expression }
    i := 1;
    while i <= Length(s) do
    begin
      { skip non-significant chars }
      while (i <= Length(s)) and (s[i] in Spaces) do
        Inc(i);
 
//здесь i становился больше Length(s) и проявлялся Range Check Error. Добавил дополнительную проверку.
      if i>Length(s)then break;
       
      case s[i] of
        '<':
          begin
            FindIn(frxGetBrackedVariable(s, '<', '>', i, j));
            i := j;
          end;
 

Всего записей: 1 | Зарегистр. 06-03-2008 | Отправлено: 22:49 06-03-2008
ectb

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
скачал триал версию Fast Report Studio с оф.сайта  
 
создаю отчет следующим образом (на C#):  
TfrxReportClass report = new TfrxReportClass();  
report.DesignReport();  
 
рисую линию, рисую вторую. первую в дереве объектов удаляю по "del", мышой веду в окно дизайнера и начинает вылезать:  
Access violation at address 03DE3EE0 in module 'fastreport3.dll'. Read of address 73726556.  
 
Честно признаюсь, документацию не читал. Баг или фича? :)
 
P.S. Нашел описание подобного бага от 31.10.2005... Но судя по тому что прошло уже больше 2х лет, то баг либо другой, либо это все же фича... http://forum.ru-board.com/topic.cgi?forum=33&topic=5647&start=200#17

Всего записей: 7 | Зарегистр. 09-02-2006 | Отправлено: 07:31 24-03-2008 | Исправлено: ectb, 07:35 24-03-2008
AlexNMelnikov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FastReport 4.5
Delphi 7
 
При уменьшении высоты "Редактора текста" до некоторой высоты уменьшение окна редактирование прекращается, а вот самого окна нет, таким образом кнопки налазят на окно редактирования.
Вероятно для окна редактирования установлена некоторая минимальная высота, а для всего "Редактора текста" нет.

Всего записей: 29 | Зарегистр. 19-02-2007 | Отправлено: 18:32 22-04-2008
EmeJIbka



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени:)
Обнаружил неточности перевода:

Всего записей: 167 | Зарегистр. 14-03-2005 | Отправлено: 20:08 25-04-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Лицензия FastReport за багрепорты и багофиксы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru