Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Вывод отчетов


Автор: Алкоголик 25.6.2009, 08:15
Здраствуйте. 
В программке нужно отправить напечать небольшой документик.
Содержит постоянную картинку, пару таблиц берущихся из StringGrid'a и постоянный текст...
Начал изучать по этой теме мануалы, но ничего не понял. Какой из генераторов отчетов бесплатный и сразу бы примерчик по работе с ним..
Заранее спасибо..

Автор: Frees 25.6.2009, 08:28
http://www.reportingfor.info/ru/

Автор: pseud 25.6.2009, 12:16
рекомендую FastReport.
раньше сидел по привычке на QuickReport - не ркуомендую, особенно как начинающему, граблей не оберешься.
FastReport - сила.

Автор: Алкоголик 25.6.2009, 18:46
Прошу подсказать наипростейший способ для решения этой задачи. Вообщем надо распечатать страницу которая состоит из картинки(всегда одной и той же), потом таблица1 в которую текст из переменных берется, таблица2( данные берутся из StrinGrida) и текст(всегда постоянный)...
Пробовал передавать в ворд 
Код

function SaveAsWordFile(AGrid: TStringGrid): Boolean;
Function zamena (findtext_,pastetext_:string; w : Variant): boolean;
begin
 zamena:=true;
 try
        W.Selection.End:=0;
        W.Selection.Start:=0;
        W.Selection.Find.Forward:=true;
        W.Selection.Find.Text:= findtext_;
  if W.Selection.Find.Execute then begin
        W.Selection.Delete;
        W.Selection.InsertAfter (pastetext_);
  end
        else zamena:=false;
 except
  zamena:=false;
 end;
end;

var
  WordApp, NewDoc, WordTable: OLEVariant;
  iRows, iCols, iGridRows, jGridCols,g: Integer;
  qw, nams:string;


begin
try
   WordApp := CreateOleObject('Word.Application');
except
   Exit;
end;
  NewDoc:=WordApp.Documents.Add(extractfilepath(paramstr(0))+'doc.dot',EmptyParam);
  zamena('#klient',Fmain.Klient, WordApp);
  zamena('#tel',Fmain.Tel, WordApp);
  zamena('#mail',Fmain.Mail, WordApp);
  zamena('#name',Fmain.Name, WordApp);
  zamena('#num',Fmain.NumP, WordApp);
  zamena('#date',Fmain.Dat, WordApp);
  WordApp.Selection.MoveDown(EmptyParam,3,EmptyParam);
  iCols := AGrid.ColCount;
  iRows := Agrid.RowCount;
  WordTable := NewDoc.Tables.Add(WordApp.Selection.Range, iRows, iCols);
  WordTable.Borders.InsideLineStyle:=1;
  WordTable.Borders.OutsideLineStyle:=1;
   for iGridRows := 1 to iRows do
     for jGridCols := 1 to iCols do
       WordTable.Cell(iGridRows, jGridCols).Range.Text := AGrid.Cells[jGridCols - 1, iGridRows - 1];
     WordApp.ActiveDocument.Tables.Item(2).Columns.Item(1).PreferredWidth:=20;
     WordApp.ActiveDocument.Tables.Item(2).Columns.Item(2).PreferredWidth:=50;
     WordApp.ActiveDocument.Tables.Item(2).Columns.Item(3).PreferredWidth:=300;
     WordApp.ActiveDocument.Tables.Item(2).Columns.Item(4).PreferredWidth:=35;
     WordApp.ActiveDocument.Tables.Item(2).Columns.Item(5).PreferredWidth:=40;
     WordApp.ActiveDocument.Tables.Item(2).Columns.Item(6).PreferredWidth:=50;
  WordApp.ActiveDocument.PrintOut;
  wordapp.ActiveDocument.Close;
  wordapp.Quit;
  WordApp := Unassigned;
  NewDoc := Unassigned;
end;


Не соблюдает ширину столбцов, т.е. они все одинакового размера... Хотя если просто передовать и делать видимым, ширина нужной ширины)

Добавлено через 1 минуту и 57 секунд
Можно, через какие-нибудь репортсы, но только спримером пожалуйста.. Нет совсем времени  изучать хорошо и эксперементировать...

Автор: insoft 26.6.2009, 13:37
Цитата

Можно, через какие-нибудь репортсы, но только спримером пожалуйста.. Нет совсем времени  изучать хорошо и эксперементировать...

используй FastReport
пример по работе со StringGrid есть в примерах поставляемых с генератором...
ну и смотри ссылку ту что дал Frees... там много информации о всех генераторах ;)

Автор: Данкинг 28.6.2009, 11:10
Цитата(insoft @  26.6.2009,  14:37 Найти цитируемый пост)
используй FastReport

Да, там и справка хорошая есть. smile 

Автор: Rohoss 28.6.2009, 11:16
Цитата(Данкинг @  28.6.2009,  11:10 Найти цитируемый пост)
Да, там и справка хорошая есть.  

Причём русскоязычная

Автор: Romikgy 28.6.2009, 22:19
кса я freefastreport так и не удалось привязать к дельфи , требует кучу доп. компонент (((

Автор: insoft 29.6.2009, 07:47
Цитата(Romikgy @  28.6.2009,  22:19 Найти цитируемый пост)
кса я freefastreport так и не удалось привязать к дельфи , требует кучу доп. компонент ((( 

какие именно?

Автор: Romikgy 29.6.2009, 10:09
чет из серии RX требовало и еще чето ...., у них там один компонент был сделан из компаненты rxspeedbutton , это точно помню,
у мя на машине rx никогда не стояли и косяк ((

Автор: hkdkest 1.7.2009, 10:21
• http://codingrus.ru/readarticle.php?article_id=764

Автор: flomaster 1.7.2009, 19:38
FreeReport - самодостаточный инструмент. Других библиотек не требует.
При установке компонент сообщение об отсутствии чего-либо скорее всего говорит, что проигнорированы инструкция по установке или readme.txt
У меня FR прижился еще до знакомства с  rx, eh и пр. Lib.

Автор: Romikgy 1.7.2009, 20:02
flomaster, перепроверил еще раз
дельфи 7 открываю FREEREP7.DPK
нажимаю компиляцию и 
Код

[Fatal Error] FREEREP7.dpk(35): Required package 'IBO_D6' not found

как лечить?
зачем этот ибо?
PS  я никогда не пишу того что не было

Автор: flomaster 1.7.2009, 23:35
Подобная проблема может возникать если вместо "Compile" нажать "Build".
В этом случае компилятор подпортит исходники и без допусилий ничего не выйдет.
Проще всего заново распаковать исходники и откомпилировать без лишних телодвижений.

Автор: Romikgy 2.7.2009, 11:16
Ув. flomaster, я юзаю дельфи уже уйму лет , компоненты ставил и некоторые писал сам 
так что фраза типа 

Цитата(flomaster @  1.7.2009,  22:35 Найти цитируемый пост)
если вместо "Compile" нажать "Build".

думаю ко мне мало подходит .... ИМХО!

Автор: flomaster 2.7.2009, 14:53
Тогда есть подозрение, что Дельфа 7 установлена поверх 6-й.
Или FR воспринимает как 6-ку.

Автор: Romikgy 2.7.2009, 15:13
Цитата(flomaster @  2.7.2009,  13:53 Найти цитируемый пост)
Тогда есть подозрение, что Дельфа 7 установлена поверх 6-й.
Или FR воспринимает как 6-ку.

нет дельфи установлена с нуля , и никогда не было 6 версии 

Автор: Romikgy 2.7.2009, 16:01
воть файл оригинал 
странно что 
Код

{$IFDEF IBO}
, IBO_D6
{$ELSE}
, VCLDB
{$ENDIF}

поменял на IBO_D7
и в файле FR.INC 
пришлось добавить код 
Код

{$IFDEF TeeChart}
 {$UNDEF TeeChart}
{$ENDIF}

только после этого откомпилировалось и стало в систему......

Автор: flomaster 3.7.2009, 00:50
Посмотрел свой экземляр - та же строка.
Просто не использую IB, видно потому и не вылезало.

Автор: Romikgy 3.7.2009, 09:17
дык и я не юзаю ((

Автор: flomaster 3.7.2009, 15:19
Где же определена IBO?

Автор: Romikgy 3.7.2009, 15:40
я не в курсе ((

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)