Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.16;
Скачать: CL | DM;

Вниз

Отчет   Найти похожие ветки 

 
rvi ©   (2007-07-23 10:58) [0]

Подскажите пожалуйста, чем лучше воспользоваться для генерации отчета (одна таблица на несколько страниц).

1) RichEdit пробовал, но так и не нашол, как сформировать таблицу.
2) GenRtf от Дмитрия Мотвеева неправильно добавляет ячейки в таблицу (глюк имеено на второй ячейке в строке), в связи с чем RichEdit и WordPad неправильно отображают сгенерированный RTF. Пример тоже не работает.
3) KOLReport просто не устанавливается. При создании пакета dpk для Delphi 7. Это уже обсуждалось кем-то выше. Помимо ошибок приведенных там выдает Duplicate resource. Бился долго и безуспешно.

Заранее спасибо за ответы. Программирую на KOL недавно, так что не пинайте больно.


 
avs ©   (2007-07-27 02:28) [1]

Удобная вещь Reportf. Шаблон rtf-ка, Данные в текстовом файле, отчет
rtf-ка. Есть exe-шник и unit.
Взять можно здесь:<http://softsklad.ru/codings/oths/4986prog.html>


 
rvi ©   (2007-07-30 15:03) [2]

2avs Спасибо, попробую.

Хочу поделится опытом борьбы с KOLReport. Может кому пригодится.

После долгих и нудных попыток установить ЭТО чудо на Delphi7, удалось довести его до рабочего состояния.
1) В архиве выложенном на этом сайте вместе с исходниками самого компонента, лежат исходники примера (их необходимо отделить)
2) Нехватающие модули KOLPrinters, KOLPrintCommon и т.д. берем из архива другого компонента   kolprintdialogs.7z
3) Удаляем из создавемого dpk файл res, иначе дублируются ресурсы.
4) При компиляции выводит ошибку Неизвестный идентификатор ... (пишу установку по памяти поэтому немогу привести строку дословно, но это обсуждалось на форуме) в строке IF ... Richedit=-1 Then Exit; Коментируем эту строку и инсталируем пакет.
5) Сталкиваемся с глюком: при предварительном просмотре не перелистывает сираницы кнопками <<,<,>,>>. Точнее на самом деле перелистывает, но не перерисовывает. Лечим так, в файле KOLReport находим procedure TPreviewObj.TBClick(Sender: PObj) и добавляем в самый конец процедуры строчку: PB.Invalidate;
6) Если есть необходимость перевести все управление на русский, то в этомже файле (KOLReport) находим procedure NewPreviewForm( var PreviewObj: PPreviewObj; AParent: PControl );

Далее можно менять все и размеры ToolBar-а и названия кнопок и иконки. Приведу в качестве примера изменения сделанные мной:

procedure NewPreviewForm( var PreviewObj: PPreviewObj; AParent: PControl );
var Pn: PControl;
begin
 new( PreviewObj, Create );
 PreviewObj.Form := NewForm( AParent, "Preview" ).SetSize( 600, 600 )
    .SetPosition( (GetSystemMetrics( SM_CXSCREEN ) - 600) div 2,
               (GetSystemMetrics( SM_CYSCREEN ) - 600) div 2 );
 {Brandys}
 PreviewObj.Options := [psdMargins,psdSamplePage,psdPaperControl,psdPrinterControl,psdWarning,psdHundre dthsOfMillimeters,psdUseMargins,psdUseMinMargins];
 PreviewObj.PSD := NewPageSetupDialog(PreviewObj.Form,PreviewObj.Options);
 PreviewObj.PSD.SetMinMargins(500,500,500,500);
 PreviewObj.Form.Border := 0;
 Pn := NewPanel( PreviewObj.Form, esNone ).SetSize( 0, 25 ).SetAlign( caTop );
 PreviewObj.TB := NewToolbar( Pn, caNone, [ tboNoDivider ],
    THandle(-1), [ "<<", "<", ">", ">>", " Печать", "Установки", "Вид", "Закрыть" ],
    [ 6, 6, 6, 6, 14, 10, 12, 5 ] ).SetAlign( caLeft ).SetSize( 480, 0 );
 PreviewObj.TB.OnClick := PreviewObj.TBClick;
 PreviewObj.TB.OnTBDropDown := PreviewObj.TBDropDownViewMenu;
 NewMenu( PreviewObj.Form, 0, [ "" ], nil );
 PreviewObj.ViewMenu := NewMenu( PreviewObj.Form, 0,
                     [ "-!Подогнать по &Высоте", "-!Подогнать по &Ширине", "-!&1:1" ],
                     PreviewObj.TBViewMenuClick );
 PreviewObj.LB := NewLabel( Pn, "" ).SetAlign( caClient );
 PreviewObj.LB.TextAlign := taRight;
 PreviewObj.LB.VerticalAlign := vaCenter;
 PreviewObj.Form.OnShow := PreviewObj.AdjustButtons;
 PreviewObj.SB := NewScrollBoxEx( PreviewObj.Form, esLowered ).SetAlign( caClient );
 PreviewObj.PB := NewPaintBox( PreviewObj.SB );
 PreviewObj.PB.OnPaint := PreviewObj.PaintPage;

 //PreviewObj.TB.TBButtonVisible[ TBSetu ] := FALSE;
 PreviewObj.Form.OnResize := PreviewObj.ResizePreviewForm;
end;

Кстати, для создания отчетов необязательно лепить сотни форм как в примере. Можно все компоненты разместить на главной форме, только изменить Visible:=False; При вызове предворительного просмотра Report сам создает форму приведенной выше процедурой.

Осталась только одна проблема связанная с утечкой памяти. Компонент не очищает за собой память. Скорее всего это как то связанно с новой версией KOL. Пытался разобраться, но пока ничего не выходит. В связи с этим, просьба к В. Кладову, как к автору компонента посмотреть в чем может быть причина.


 
Vladimir Kladov   (2007-07-30 18:22) [3]

Я просто давно туда не смотрел, а KOL меняется. Там изначально предполагается, что нужен компонент печати, на выбор, Брандыса или Жарова.

Я дойду до печати в своей программе, тогда и смотреть буду.



Страницы: 1 вся ветка

Текущий архив: 2008.03.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
6-1182196105
Keni
2007-06-18 23:48
2008.03.16
Я м SSL-сервер


6-1182328697
RaPToRidze
2007-06-20 12:38
2008.03.16
получения ресурсов удаленного компа


2-1203327368
mfender
2008-02-18 12:36
2008.03.16
Кодировка XML. Не могу осилить...


2-1203104123
Res
2008-02-15 22:35
2008.03.16
winsock


15-1202456414
iwan
2008-02-08 10:40
2008.03.16
Что прочитать про ООП?