Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Лицензия FastReport за багрепорты и багофиксы

Автор: jonikDk
Дата сообщения: 29.04.2008 09:18
FastReport 4.6

В отчете есть MasterData и Child. В Child находится CrossTab (В мастер дата - инфо о изделии, в CrossTab'е - строится кросс по этому изделию ).
Так вот если со свойствами по умолчанию - получается что CrossTab может разрываться на разные страницы, может быть что заголовок на одной - CrossTab на другой. Вид получается не очень. Если изменять свойства KeepChild(печатать на одинаковой странице) и AllowSplit(разрыв содержимого) - то получается что CrossTab если не помещается - переносится вместе с masterData на новую страницу(так и должно быть) - НО.....в crosstabe теряются все строки которые должны были быть на первой страницы, и их просто нигде нету(хотя сумма подбита правильно)......
версия FastReport - 4.6)
Автор: pnv82
Дата сообщения: 13.05.2008 17:34
FastReport 4.6
Баг и его частичный фикс:
При печати больших(размерами от 0,5мх2м) отчетов, в режиме разбиения не меньшие страницы, не совсем верно отрабатывает SplitPage(a, b, c, d: Extended; var x, y: Integer; var NeedRotate: Boolean);, иногда недопечатывая часть данных(листов). После некоторых копаний выяснилось, что не учитывается тот факт, что при большом кол-ве листов, поля принтера добавляют такую величину сдвига, что часть данных не помещается на листах, кол-во которых рассчитывается без учета полей. Но повторяется это не всегда, т.к. листов должно быть действительно много

Замена TrySplit на след. код частично решает проблему:

procedure TrySplit;
var
DiffX,DiffY:Extended;
const
AvgPrinterMargin=11; // усредненная величина полей страницы, по хорошему ее нужно получать для каждого принтера...
begin
// что значит проверка if Abs(Trunc(b / d) * d - b) < 11 then - неизвестно

// вычисляем первичное кол-во страниц - берем ближайшее большее целое
// т.к. отсечь кусочек картинки мы не можем, вне зависимости от ее размера
x := Ceil(a / c);
y := Ceil(b / d);

// добавляем место для полей принтера
DiffX := (x*2-2)*AvgPrinterMargin;
DiffY := (y*2-2)*AvgPrinterMargin;

// если места хватает даже с полями, то оставляем как есть
// иначе добавляем необходимое кол-во листов
if(x*c<a+DiffX) then
x := x + Ceil(DiffX/c);

if(y*d<b+DiffY) then
y := y + Ceil(DiffY/d);
end;





Index: D:/work/uhta/components/FastReport/Source/frxPreviewPages.pas
===================================================================
--- D:/work/uhta/components/FastReport/Source/frxPreviewPages.pas    (revision 20)
+++ D:/work/uhta/components/FastReport/Source/frxPreviewPages.pas    (revision 77)
@@ -143,7 +143,7 @@

uses
frxPreview, Printers, frxPrinter, frxPrintDialog, frxXMLSerializer, frxUtils,
- ShellApi, frxDMPClass, frxRes;
+ ShellApi, frxDMPClass, frxRes, Math;

type
THackComponent = class(TfrxComponent);
@@ -1463,16 +1463,27 @@
tempC: Extended;

procedure TrySplit;
+ var
+ DiffX,DiffY:Extended;
+ const
+ AvgPrinterMargin=11;
begin
- if Abs(Trunc(a / c) * c - a) < 11 then
- x := Round(a / c)
- else
- x := Trunc(a / c) + 1;
+ // что занчит проверка if Abs(Trunc(b / d) * d - b) < 11 then - неизвестно

- if Abs(Trunc(b / d) * d - b) < 11 then
- y := Round(b / d)
- else
- y := Trunc(b / d) + 1;
+ // вычисляем первичное кол-во страниц
+ x := Ceil(a / c);
+ y := Ceil(b / d);
+
+ // добавляем место для полей принтера
+ DiffX := (x*2-2)*AvgPrinterMargin;
+ DiffY := (y*2-2)*AvgPrinterMargin;
+
+ // если места хватает даже с полями
+ if(x*c<a+DiffX) then
+ x := x + Ceil(DiffX/c);
+
+ if(y*d<b+DiffY) then
+ y := y + Ceil(DiffY/d);
end;

begin



Добавлено:
Неочевидное поведение:
Опять таки, при печати больших отчетов и их разбиении на страницы такое логичное действие как задание печати конкретной страницы по номеру становится достаточно неочевидным - номер страницы относится не к получаемым страницам, а к оригинальным.
Другими словами, когда у меня есть отчет из одной страницы, например, 1 на 1 метр, и я печатаю его разбивая на А3 у меня нет никакой возможности отпечатать одну из этих разбитых страничек, что бы увидеть - правильно ли оно мне побилось - будут печататься все страницы подряд.

Добавлено:
FastReport 4.6
При переходе на версию 4.6, в которой изменилась работа с путями к шаблонам, столкнулись с неприятным поведением - после редактирования отчета путь к файлу шаблона прописывается абсолютный, даже если шаблон лежит в каталоге приложения, и соотвественно на машине, где приложение установлено по другому пути, шаблон не находится, даже если он есть в каталоге приложения.
Причем в procedure TfrxReport.SetParentReport(const Value: String); даже выполняется проверка на абсолютный путь, и в каталоге приложения шаблон ищется только для относительных путей.

Такое изменение поломало работу существующих приложений после перекомпиляции их с новой версией. Имхо стоит засчитать такое поведение багом, и поправить.

{ check relative path, exclude network path }
if (Length(fName) > 1) and (fName[2] <> ':')
and not ((fName[1] = '\') and (fName[2] = '\')) then
begin
fName := ExtractFilePath(SaveFileName) + Value;
if not FileExists(fName) then
fName := GetApplicationFolder + Value;
end;

для себя просто убрали проверку на абсолютный путь, уж не знаю, насколько это правильно.
Автор: leoadm
Дата сообщения: 30.05.2008 14:17
FR 4.6.8 При рекомпиляции для смены языка на Delphi 7 в полученный модуль pas русский языковый XML сваливается в неправильной кодировке. Виноват delphi7?
Автор: Alexpsyholog
Дата сообщения: 13.06.2008 12:03
Мужики! Помогите...!
В Fast Reporte 4.2.22 не могу решить проблему.
В запросе в Дивелопере у меня показывают null овые поля , а в Репорте они почему то отображаются нулями!
И при подсчете функцией AVG он начинает их считать при делении.
Так вот!
Я незнаю как мне в репорте вместо нулей при null овых значениях отображать пусто??????
Автор: delover
Дата сообщения: 17.06.2008 07:33
Alexpsyholog
Hide zerro
Автор: Antics
Дата сообщения: 23.06.2008 12:09
Столкнулся с проблемой масштабирования картинок в соответствии с разрешением растра (которое хранится в заголовке растрового файла).

Проблема была решена для BMP файлов.

Для масштабирования в PreView все достаточно просто:

frxClass:

TfrxPictureView = class(TfrxView)
....
public
+ Resolution: real;

......

constructor TfrxPictureView.Create(AOwner: TComponent);
....
FIsPictureStored := True;
+ Resolution:= 1;

......

procedure TfrxPictureView.Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended);
....
- OffsetRect(r, (FDX - Round(ScaleX * FPicture.Width)) div 2,
- (FDY - Round(ScaleY * FPicture.Height)) div 2);
+ OffsetRect(r, (FDX - Round(ScaleX * FPicture.Width * Resolution)) div 2,
+ (FDY - Round(ScaleY * FPicture.Height * Resolution)) div 2);

- r.Right := r.Left + Round(FPicture.Width * ScaleX);
+ r.Right := r.Left + Round(FPicture.Width * ScaleX * Resolution);

- r.Bottom := r.Top + Round(FPicture.Height * ScaleY);
+ r.Bottom := r.Top + Round(FPicture.Height * ScaleY * Resolution);

.......

function TfrxPictureView.LoadPictureFromStream(s: TStream): Hresult;
....
+ if BMPHeader.bfType = $4D42 then
+ begin
+ NewGraphic := TBitmap.Create;
+ bOK := True;
+ s.ReadBuffer(HSize,SizeOf(HSize));
+ s.Read(Pointer(Longint(@BIH) + sizeof(HSize))^,HSize-sizeof(HSize));
+ if BIH.biXPelsPerMeter=0 then Resolution:=1
+ else Resolution:=1000 / BIH.biXPelsPerMeter * 18 / 5;
+ if Resolution=0 then Resolution:=1;
+ end;

Но чтобы картинки масштабировались и при редактировании готового шаблона, нужно править frxXMLSerializer.pas:

implementation

uses frxUtils, frxRes, frxUnicodeUtils;

+ var Res: LongInt;

........

procedure TfrxXMLSerializer.XMLToObj(const s: String; Obj: TPersistent);
....
procedure DoNonPublishedProps;
....
FReader.Position := 0;

+ if FReaderStream.Size>67 then
+ begin
+ FReaderStream.Position := 42+22;
+ FReaderStream.Read(Res,SizeOf(Res))
+ end;

+ FReaderStream.Position := 0;

.......

function TfrxXMLSerializer.ObjToXML(Obj: TPersistent; const Add: String = '';
Ancestor: TPersistent = nil): String;

var ...

+ OldPos:integer;

....
procedure DoNonPublishedProps;
....
finally
AncMs.Free;
end;
end;

+if (Obj is TPicture) and (TPicture(Obj).Bitmap<>nil)
+ and (ms.Size>80) then
+ begin
+ OldPos:=ms.Position;
+ ms.Seek(42+22, soFromBeginning);
+ ms.Write(Res, SizeOf(Res));

+ ms.Position:=OldPos;
+ end;
....
if Obj is TfrxComponent then
begin
TfrxComponent(Obj).IsWriting := True;
if (Ancestor = nil) and Assigned(FOnGetAncestor) then
FOnGetAncestor(TfrxComponent(Obj).Name, Ancestor);
end;
+ if Obj is TfrxPictureView then
+ Res:=Round(1000 / (Obj as TfrxPictureView).Resolution * 18 / 5);

.......

procedure TfrxXMLSerializer.ReadRootComponent(Root: TfrxComponent;
....
XMLToObj(Item.Text, c);
+ if Item.Name='TfrxPictureView' then
+ begin
+ if Res=0 then (c as TfrxPictureView).Resolution:=1
+ else (c as TfrxPictureView).Resolution:=1000 / Res * 18 / 5;
+ end;
Автор: svalerik
Дата сообщения: 06.07.2008 18:16
Столкнулся с такой проблемой (FastReport Studio):
1. Создаем отчет с диалоговой формой.
2. На диалоговую форму помешаем кнопку, по нажатию на которую происходит выход из отчета.
3. Запускаем отчет используя командную строку.
4. При нажатии на кнопку получаем ошибку: "Неопознанная ошибка". Тоже самое происходит и при нажатии на крестик окна диалога.

з.ы. Написал на форуме разработчиков, там пока ответа нет
http://fast-report.com/ru/forum/index.php?showtopic=5641
Автор: pnv82
Дата сообщения: 15.07.2008 15:15
Не совсем логичная реализация function TfrxReport.PrepareReport(ClearLastReport: Boolean = True): Boolean; для VCL:

CheckDatasets(проверка наличия источников данных для датасетов) вызывается много раньше, чем происходит какое-либо событие, где эти датасеты можно инициализировать(например если списки датасетов, доступных к использованию в отчете строится динамически). Таким событием мог бы быть FOnBeginDoc, но он тоже происходит поздно.

Предвидя возражения, что все инициализации можно/нужно выполнять вообще, до запуска отчета - все хорошо, если не появляется необходимость запуска отчета на превью из дизайнера - текущая реализация сбрасывает свойства датасетов в procedure TfrxDesignerForm.PreviewCmdExecute(Sender: TObject); при FUndoBuffer.GetUndo(Report);

Хотелось бы, что бы OnBeginDoc был действительно OnBegin...


Автор: RUSer
Дата сообщения: 18.07.2008 15:00
Fast Report Ent 4.6.5

1. Открываем новый отчёт в редакторе отчётов.
2. Кладём лабел.
3. копируем
4. снимаем выделение с лабела
5. вставляем - ошибка "компонент с таким номером уже существует"

ФРСервер

1. Делаем форму из лабелов, эдитов и мемо.
2. Открываем её через браузер и видем, что все ранее ровные компоненты уехали, а шрифт лабелов вместо 12-го стал 8-м.
Автор: vidic777
Дата сообщения: 04.10.2008 02:57
Поставил версию FR 4 Pro v.4.6.110, IDE RAD Studio 2006 C++Builder 11 столкнулся с [more=ошибками]
[BCC32 Error] Frxunicodeutils.hpp(83): E2015 Ambiguity between 'TWideStrings' and 'Widestrings::TWideStrings'
[BCC32 Error] Frxunicodeutils.hpp(83): E2285 Could not find a match for 'TWideStrings::AddStrings(TStrings *)'
[BCC32 Error] frxExportTXT.hpp(105): E2450 Undefined structure 'TfrxTXTPrinterType'
[/more] при перекомпиляции проекта. Проблему решил путем комментирования сроки 83 в файле Frxunicodeutils.hpp и сроки 105 в frxExportTXT.hpp. Если это баг прошу засчитать. Про "ругань" компилятора на строку TfrxTXTPrinterType PrinterTypes[16]; в файле frxExportTXT.hpp уже сообщал ранее.

Заранее спасибо.
Автор: iiKKSS
Дата сообщения: 23.10.2008 09:21
старттопик
Цитата:
Исправлено: My_Way, 15:15 30-03-2007

а акция все еще действует аль?
Автор: LadyOfWood
Дата сообщения: 24.10.2008 22:51

Цитата:
а акция все еще действует аль?

Что-то мне подсказывает что нет, хотя конечно MyWay может выразится точнее.
Автор: ArmD45
Дата сообщения: 29.10.2008 15:53
FastReport 4.5
Компонент RichEdit
RTFExport
При конвертировании в файл rtf
Происходит глюк:

Текст RichEdit:
Предоплата / Prepayment : тур услуги

Что в итоге в файле rtf:
Предоплата / тур услуги

Ощущение что / - обрабатывается как какой-то управляющий знак. И текст идущий за ним выполняется как формула.
Автор: x_Stalker_x
Дата сообщения: 10.11.2008 17:29
FastReport 4.7.17

Отчет имеет нескольких таблиц состоящих из Header, MasterData и DetailData. Таблица печатается за таблицей и если страница заканчивается, то последняя таблица начинается с новой страницы. Необходимо чтоб Header, MasterData и DetailData печатались на новой странице вместе.
KeepTogether (держать detail вместе) помогает удержать вместе MasterData и DetailData.
KeepHeader (держать заголовок вместе) помогает удержать вместе Header и MasterData.
Но вместе они не работают. При включении обоих этих параметров перестает действовать KeepTogether. Так как будто он отключен.

По всей видимости они должны работать вместе. Или есть другие средства для достижения поставленной цели?
Автор: JustAMaaan
Дата сообщения: 20.11.2008 05:29
FR 3.24: есть отчет с ReportHeader, у которого два Child'а. Добавляю в отчёт PageHeader, в результате PageHeader печатается только на 2 странице, причём переменная Page уверяет, что эта страница - первая, а TotalPages - что единственная. В действительности страниц - две. MasterData в отчёте нет совсем (т.к. надо печатать только текущую запись), зато заголовок занимает 2 страницы.
Автор: Alex_Yagolnik
Дата сообщения: 19.01.2009 18:51
FR 4.75
Экспорт в RTF.

Казалось бы, компонент - TFrxRichView должен на "ты" с RTF, но экспорт кривой. В PDF гораздо лучше.
Итак
1) Текст помещается в левый верхний угол, даже, если он был по центру. Спасает указание отступов на странице.
2) Если верхний текст имел форматирование "по центру", то и следующий текст будет отцентрован, хотя в оригинале сдвинут влево.
3) В итоговом RTF межстрочные интервалы указаны "точно" из расчета минимальной высоты строки. В результате заголовки обрезаны сверху, а крупный текст сильно пожат по вертикали.

Конечно, если каждое текстовое поле с разными форматами оформлять как отдельное MemoView, то всё на своих местах. Но это крайне непродуктивно, если нужно взять отформатированный многостраничный образец договора в WORD формате и быстро сделать из него рабочий документ в FR, набросав в нужных местах ссылки на поля.

В идеале должно быть: в TFrxRichView помещается сложный RTF документ. При печати и экспорте в RTF - нет никакой разницы с первоисточником RTF.
Автор: ply
Дата сообщения: 25.01.2009 11:51
FR 4.7.62

Баг: В дизайнере отображаемого формата (DisplayFormat) в случае если никакой формат не выбран при клике по пустому полю в списке доступных форматов возникает ошибка "List Index out of bounds(-1)"

Багфикс:
Файл: frxEditFormat.pas
В начало процедуры TfrxFormatEditorForm.FormatLBClick добавить строку:
if FormatLB.ItemIndex=-1 then exit;
Автор: grumbler
Дата сообщения: 30.01.2009 23:28
FR 4.7.61
при экспорте в PDF строк, повернутых на 90 градусов с центрированием, получаем что все строки внутри ячейки накладываются одна на другую, пример
http://i021.radikal.ru/0901/41/0091f505fcce.jpg
Автор: Sekundant
Дата сообщения: 07.02.2009 18:11
FastReport 4.7.61

Баг:В отчетах с уровнем вложености более 1(т.е. если во вложеном отчете сделать еще один вложеный) при установке свойства PrintOnParent в true у всех вложеных, перестают отображаться отчеты вложеные во вложеные.

Добавлено:
FastReport 4.7.61
Баг: при копировании вложеного отчета новой страницы не появляеться, а он ссылаеться на страницу копируемого вложеного отчета
Автор: Mikle83
Дата сообщения: 27.02.2009 09:56
Добрый день!
Возникла следующая проблема с кросстабом:

при переносе значения на новую страницу происходит следующая странная вещь:

если объединенная ячейка разбивается разрывом страницы, то на новой странице ее высота определяется необходимой высотой для дочерней ячейки, в результате текст может не полностью быть выведен на экран...


Пользуется фаст репорт версии 4.2.46

Проблема была подтверждена специалистами FastReport при моем обращении, но решена до сих пор не была.
Автор: omickron
Дата сообщения: 05.04.2009 08:21
Заметил баг, никак не могу с ним справиться.
Сделал отчёт.
http://i082.radikal.ru/0904/10/b1d00302df2f.jpg (скрин нужного места).
А при печати, да и в режиме предпросмотра получаю следующее:
http://i003.radikal.ru/0904/f4/7a7ddf60b77a.jpg (скрин предпросмотра).
Все компоненты типа TfrxMemo, имеют одинаковое значение Top. А при печати первый чуть-чуть выше оказывается. И не пойму, почему.

Это уже известная проблема?


P.S. Если нужно, файл fr3 отчёта могу выслать по электронке.
Автор: pzaytsev
Дата сообщения: 16.07.2009 12:20
Данная тема ещё актуальна? Найден баг в FastReport Enterprise (TfrxServer)
Автор: apnss
Дата сообщения: 10.11.2009 18:13
не знаю актуально или нет, но думаю пригодится


при экспорте отчета в Excel не принимается формат #,##0.00

решение
--------------


Код: procedure TfrxXLSExport.ExportPage_Fast;
...
function ConvertFormat(const fstr: string): string;
...
case fstr[length(fstr)] of
'n': begin
result := '# ##0' + DecimalSeparator;
for i := 1 to p do result := result + '0';
end;
'f': begin
result := '0' + DecimalSeparator;
for i := 1 to p do result := result + '0';
end;
'd': begin
result := '#' + DecimalSeparator;
for i := 1 to p do result := result + '#';
end
// <---- добавлено
'#', '0':
begin
result:= fstr;
If ThousandSeparator <> ',' Then result:= ReplaceStr(result, ',', ThousandSeparator);
If DecimalSeparator <> '.' Then result:= ReplaceStr(result, '.', DecimalSeparator);
end;
// <------
end;
Автор: buhscout
Дата сообщения: 14.01.2010 08:53
FastReport.Utils.CompilerException was unhandled
Message="(Text2): error CS0246: Не удалось найти имя типа или пространства имен \"ContragentAddress\" (пропущена директива using или ссылка на сборку?)\r\n"
Source="FastReport"
StackTrace:
в GNnEm402crmrrFi87q.V3uCXhV3NcYg2ptgle.QrplypkLO()
в GNnEm402crmrrFi87q.V3uCXhV3NcYg2ptgle.h8GaT14KQ()
в FastReport.Report.SWtlkQw2C()
в FastReport.Report.Prepare(Boolean append)
в FastReport.Report.Prepare()
в FastReport.Report.Show(Boolean modal, Form owner)
в FastReport.Report.Show()
в ITS.Contracts.AddIn.OutgoingSpecificationView.sbPrint_Click(Object sender, EventArgs e) в C:\documents\CHEMK\Its.Contracts\Contracts\ITS.Contracts.AddIn\OutgoingSpecificationView.cs:строка 579
в System.Windows.Forms.Control.OnClick(EventArgs e)
в DevExpress.XtraEditors.BaseButton.OnClick(EventArgs e)
в DevExpress.XtraEditors.BaseButton.OnMouseUp(MouseEventArgs e)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в DevExpress.Utils.Controls.ControlBase.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.RunDialog(Form form)
в System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
в System.Windows.Forms.Form.ShowDialog()
в ITS.Contracts.AddIn.ContractView.OpenEditor(BaseSpecification specification) в C:\documents\CHEMK\Its.Contracts\Contracts\ITS.Contracts.AddIn\ContractView.cs:строка 380
в ITS.Contracts.AddIn.ContractView.sbChange_Click(Object sender, EventArgs e) в C:\documents\CHEMK\Its.Contracts\Contracts\ITS.Contracts.AddIn\ContractView.cs:строка 170
в ITS.Contracts.AddIn.ContractView.gcSpecifications_DoubleClick(Object sender, EventArgs e) в C:\documents\CHEMK\Its.Contracts\Contracts\ITS.Contracts.AddIn\ContractView.cs:строка 181
в System.Windows.Forms.Control.OnDoubleClick(EventArgs e)
в DevExpress.XtraGrid.GridControl.OnDoubleClick(EventArgs ev)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в DevExpress.XtraEditors.Container.EditorContainer.WndProc(Message& m)
в DevExpress.XtraGrid.GridControl.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.Run(Form mainForm)
в View.Program.Main() в C:\documents\CHEMK\Its.Contracts\View\Program.cs:строка 15
в System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
InnerException:

сборка Data.dll:

public class Address
{
...
}

сборка Contragents.dll:

public class ContragentAddress : Address, ICloneable
{
...
}

public class ContragentCompany {
public virtual ContragentAddress CAddress{get;set;}
...
}

сборка ContractsData.dll:

public partial class Contract : Document {
public virtual ContragentCompany HomeContragent {get;set;}
...
}

выводится в отчёт: Contract.ContragentCompany.ContragentAddress

отчёт находится в сборке Contracts.AddIn.dll, референсы на все сборки тоже

Добавлено:
public partial class Contract : Document {
public virtual IList<Contragent> Contragents {get;set;}
...
}

отчёт не видит вложенных свойств в Contragent, вместо свойств класса Contragent есть только свойство Value c DataType IList`1
Автор: vladmal
Дата сообщения: 13.05.2010 04:30
Delphi 2007, FastReport 4.9.60
Описание бага + багофикс.
=============================
Описание ошибки:

При использовании TfrxDBLookupComboBox, когда в качестве поля ListField используется поле источника данных с алиасом, отличным от имени поля набора данных (например, "Компания" вместо "Company"), выбрасывается ошибка "Поле не найдено":
- при вызове метода TfrxReport.ShowReport() - через короткий промежуток после начала просмотра отчета
- при вызове метода TfrxReport.DesignReport() - после завершения просмотра отчета

Способ воспроизведения:
=============================
1. В папке \Demos\Main находим проект FRDemo.dpr, открываем.

2. Открываем Unit2.pas, находим CustomersDS. Вызываем "Edit Field Aliases..."
Для поля "Customer" задаем алиас "Компания", жмем ОК.

3. Сохраняем, компилируем, запускам приложение.

4. В деревце с отчетами открываем папку "Dialogs and script".
Выбираем отчет "Hello FastReport", жмем кнопку Design.

5. Меню - Отчет - Данные - ставим галку "Customers", жмем ОК.

6. Открываем форму диалога DialogPage1.

На форму бросаем DBLookupComboBox, настраиваем его свойства:

AutoOpenDataSet = "True";
DataSet = "Customers";
KeyField = "Cust No";
ListField = "Phone";

Запускам, видим, видим, что DBLookupComboBox работает, жмем ОК, наблюдаем preview, закрываем Preview - все ОК.

Меняем значение ListField.

ListField = "Компания";

Запускам, видим, видим, что DBLookupComboBox работает, жмем ОК, наблюдаем preview, закрываем Preview - получаем Exception.

Сохраняем отчет (Ctrl+S), закрываем дизайнер, жмем Preview, видим, что DBLookupComboBox работает, жмем ОК, получаем наблюдаем Exception на фоне Preview.


Причина:
=============================

При десериализации объекта TfrxDBLookupComboBox свойство ListField записывается/восстанавливается раньше, чем свойство DataSet.

Поэтому код

Код:
procedure TfrxDBLookupComboBox.SetListField(Value: String);
begin
if FDataSet <> nil then
Value := FDataSet.ConvertAlias(Value);
FDBLookupComboBox.ListField := Value;
end;
Автор: vladmal
Дата сообщения: 10.06.2010 13:28
В, блин, написал:

Цитата:
Все, что нужно сделать - поменять порядок описания членов класса TfrxDBLookupComboBox в секции Published: - свойство KeyField разместить после свойства DataSetName;


Нужно оба поля (KeyField и ListField) помещать после DataSetName.
Короче, должно быть именно так, как на врезке ("Секция published теперь должна выглядеть так: ")
Автор: AS0kol
Дата сообщения: 23.09.2010 19:24
Двусторонняя печать. Первый раз отчет печатется нормально в режиме двусторонней печать, во второй раз duplex из PrintDialog игнорируется.
Решение:
в процедуре TfrxPrinter.SetPrintParams
заментить
if FDuplex <> -1 then
ADuplex := FDuplex;

if (ADuplex <> FMode.dmDuplex) and (ADuplex <> -1) then
begin
FMode.dmFields := FMode.dmFields or DM_DUPLEX;
FMode.dmDuplex := ADuplex;
end;
на
if ADuplex <> -1 then begin
FMode.dmFields := FMode.dmFields or DM_DUPLEX;
FMode.dmDuplex := ADuplex;
end;
Автор: JustAMaaan
Дата сообщения: 21.10.2010 10:39
Тема ещё актуальна? Глюк в FR4, точнее - в компоненте TfsSyntaxMemo из комплекта поставки:
1. Ставим тип подсветки синтаксиса stSQL
2. Вбиваем в Lines тестовую строку, я выбрал такую:
select *, i "My Field" from my_table where q='test' and r=7 and s is NULL

3.меняем размер шрифта в свойстве TextAttr с 10 на 12

Компилируем, запускаем, получаем полный набор глюков с отображением: курсор рисуется не там, где надо, выделение текста - аналогично, если начать вводить текст, когда курсор стоит на букве r - введённые символы не отображаются. Причина в том, что ширина символа считается фиксированной и одинаковой для всех шрифтов, хотя все четыре используемых шрифта могут быть разными.
Автор: Boatswian
Дата сообщения: 05.12.2011 22:44
FastReport 4.11 Standart + Delphi7

При экспорте в RTF формат в Memo не экспортируется зачеркнутый тип шрифта.

В frxExportRTF.pas

В процедуру
function TfrxRTFExport.GetRTFFontStyle(const f: TFontStyles): String;
begin
Result := '';
if fsItalic in f then Result := '\i';
if fsBold in f then Result := Result + '\b';
if fsUnderline in f then Result := Result + '\ul';
end;

надо добавить строчку
if fsStrikeOut in f then Result := Result + '\strike';

А в FastReport inc надо отправлять сообщение или Вы сами пересылаете?
Автор: Frodo_Torbins
Дата сообщения: 26.12.2011 12:57
Не по теме но все же: В FastCube 1.8.6 при использовании в программе SafeMM проявляется AV в fcGridPainters.pas - TfcCustomGridPainter.DrawText. Способ исправления очень простой:

Код: //было:
Sz := (Length(AText) + 5) * SizeOf(TfcChar); // +4 characters for DT_MODIFYSTRING
GetMem(P, Sz);
Move(PfcChar(AText)^, P^, Sz);
//стало:
Sz := (Length(AText) + 5) * SizeOf(TfcChar); // +4 characters for DT_MODIFYSTRING
GetMem(P, Sz);
Move(PfcChar(AText)^, P^, Length(AText) * SizeOf(TfcChar));

Страницы: 12345678910111213141516

Предыдущая тема: Числовой формат даты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.