-
Разобрался с KOLEDB - все нахожу, фильтрую и отображаю. Остановился на создании отчетов. На родном сайте ничего хорошего не нашел, или не разобрался - помогите
-
KOLReport, аналог для VCL NormalReport, только его и использую. Говорят, с KOLReport были какие-то проблемы. Скоро до него доберусь, гляну, что там случилось.
-
Пытался я его поставить на Delphi 7 с установленным KOL&MCK - получал сообщение о устаревшем коде....там есть пакеты только до 5-го..... плиз помогите
-
Пакет сами сделайте.
Добавьте прямо в код юнита (ов) в начало {$I KOLDEF.inc}, поменьше дурных предупреждний будет.
-
KOLReport я не смог поставить ни на 7 ни на 5 версии так что я думаю. Не ставится пакет 5 версии ругается на директиву ALIGN говорит что такую не знает. Так что советую делать под чистым KOL. С UNICODOM была мелкая проблема в модуле Printers а без него вроде работает. Чтобы разобраться возьми Demo и перепиши его в KOL. Тогда поймешь как работает. Модуль мне очень понравился это то что мне было нужно. Но не все работает правильно в установках принтера. Валится. Я сейчас все это смотрю. Если разбирусь подскажу.
-
Я не крутой спец по KOL.. Хотел просто переделать свой старый проект из под 7-го.... Там пользовался FreeReport - мне его хватало..... Хотел и под Kol&MCK заиметь что-то подобное
-
Сильным спецом там быть ненадо. Паскаль я думаю тебе знаком. Сначала создается форма которая даже не выводится на экран. Затем на ней создаются поля Band для строк таблицы создаешь набор полей. Заполняешь эти поля значениями. Для таблицы поля заполняешь в цикле. Форма фактически служит шаблоном.
-
Пришли примерчик плиз........с коментами
-
//вызов отчета procedure TfGL.bnRepClick(Sender: PObj); var F: PForm3; begin NewForm3( F, Applet ); try F.Form.Visible:=True; F.Report1.PreviewModal; finally F.Form.Free; end; end; // unit Unit2;
interface
uses Windows, Messages, ShellAPI, KOL, KOLReport ;
type PForm3 = ^TForm3; TForm3 = object(TObj) Form: PControl; Report1: TKOLReport; BandTitle: TKOLBand; ReportLabel1: TKOLReportLabel; BandColumns: TKOLBand; BandCompany: TKOLBand; BandDetail: TKOLBand; DetailFName: TKOLReportLabel; DetailLName: TKOLReportLabel; ReportLabel2: TKOLReportLabel; DetailN: TKOLReportLabel; ReportLabel3: TKOLReportLabel; procedure Report1Print(Sender: PObj); procedure Report1NewPage(Sender: PObj); private PrintingDetail: Boolean; end;
procedure NewForm3( var Result: PForm3; AParent: PControl );
implementation
procedure NewForm3( var Result: PForm3; AParent: PControl ); begin New( Result, Create ); Result.Form := NewForm( AParent, 'Form3' ).SetPosition( 262, 112 ); Result.Form.Add2AutoFree( Result ); Result.Form.Visible := False; Result.Form.SetClientSize( 688, 438 ); Result.Form.Font.Color := clBlack; //Создаем шаблон формы Result.Report1 := NewReport; Result.Report1.DoubleBufferedPreview := TRUE; Result.Report1.DocumentName := 'Test'; Result.Form.Add2AutoFree( Result.Report1 ); Result.Report1.OnPrint := Result.Report1Print; Result.Report1.OnNewPage := Result.Report1NewPage; // панель Заголовока отчета Result.BandTitle := NewBand( Result.Form, [frLeft,frTop,frRight,frBottom] ).SetPosition( 112, 40 ).SetSize( 393, 89 ); Result.BandTitle.Border := 0; Result.BandTitle.Color := clWhite; // Заголовок Отчета Result.ReportLabel1:=NewWordWrapReportLabel( Result.BandTitle, 'Sample Report to see what can be done with KOLReport', [] ) .SetAlign ( caClient ).MakeWordWrap.AutoSize( FALSE ); Result.ReportLabel1.Font.FontStyle := [ fsBold ]; Result.ReportLabel1.Font.FontHeight := 32; Result.ReportLabel1.TextAlign := KOL.taCenter; Result.ReportLabel1.Border := 1; // панель заголовока таблицы // Панель шапки_1 таблицы Result.BandColumns := NewBand( Result.Form, [frLeft,frTop,frRight,frBottom] ) .SetPosition( 16, 216 ).SetSize( 625, 25 ); Result.BandColumns.Border := 1; Result.BandColumns.Color := clWhite; // 1-й столбец шапки таблицы Result.ReportLabel2 := NewReportLabel( Result.BandColumns, '#', [] ) .SetAlign ( caLeft ).SetSize( 24, 0 ).AutoSize( FALSE ); Result.ReportLabel2.TextAlign := KOL.taCenter; Result.ReportLabel2.VerticalAlign := KOL.vaCenter; Result.ReportLabel2.Color := clWhite; // 2-й столбец шапки таблицы Result.ReportLabel3:=NewReportLabel(Result.BandColumns,'First Name',[frLeft]) .SetAlign ( caLeft ).SetSize( 165, 0 ).AutoSize( FALSE ); Result.ReportLabel3.TextAlign := KOL.taCenter; Result.ReportLabel3.VerticalAlign := KOL.vaCenter; Result.ReportLabel3.Color := clWhite; // // Панель шапки_2 таблицы Result.BandCompany := NewBand(Result.Form,[frLeft,frRight,frBottom]) .SetPosition( 16, 246 ).SetSize( 625, 25 ); Result.BandCompany.Font.FontName := 'Arial'; Result.BandCompany.VerticalAlign := KOL.vaCenter; Result.BandCompany.Border := 1; Result.BandCompany.Color := clWhite; Result.BandCompany.Caption := ' Company name'; // Панель таблицы Result.BandDetail:=NewBand( Result.Form, [] ) .SetPosition( 17, 279 ).SetSize( 625, 25 ); Result.BandDetail.Font.FontName := 'Arial'; Result.BandDetail.Border := 0; Result.BandDetail.Color := clWhite; // // столбец_3 таблицы // Result.DetailLName.TabOrder = -1 Result.DetailLName:=NewReportLabel(Result.BandDetail,'Last Name',[frLeft,frBottom]) .SetAlign ( caClient ).AutoSize( FALSE ); {$IFDEF UNICODE_CTRLS} Result.DetailLName.SetUnicode(TRUE); {$ENDIF UNICODE_CTRLS} Result.DetailLName.VerticalAlign := KOL.vaCenter; Result.DetailLName.Border := 1; Result.DetailLName.Color := clWhite; // // столбец_1 таблицы // Result.DetailN.TabOrder = -1 Result.DetailN:=NewReportLabel(Result.BandDetail,'#',[frLeft,frBottom]) .SetAlign ( caLeft ).SetSize( 24, 0 ).AutoSize( FALSE ); {$IFDEF UNICODE_CTRLS} Result.DetailN.SetUnicode(TRUE); {$ENDIF UNICODE_CTRLS} Result.DetailN.TextAlign := KOL.taCenter; Result.DetailN.VerticalAlign := KOL.vaCenter; Result.DetailN.Border := 1; Result.DetailN.Color := clWhite; // // столбец_2 таблицы // Result.DetailFName.TabOrder = -1 Result.DetailFName := NewReportLabel(Result.BandDetail,'First Name',[frLeft,frBottom]) .SetAlign ( caLeft ).SetSize( 165, 0 ).AutoSize( FALSE ); {$IFDEF UNICODE_CTRLS} Result.DetailFName.SetUnicode(TRUE); {$ENDIF UNICODE_CTRLS} Result.DetailFName.VerticalAlign := KOL.vaCenter; Result.DetailFName.Border := 1; Result.DetailFName.Color := clWhite; end; //вывод на печать формы procedure TForm3.Report1Print(Sender: PObj); const FirstNames: array[ 0..9 ] of String = ( 'Abraham', 'Bobby', 'Dennis', 'Harold', 'Iven', 'Jack', 'Jim', 'John', 'Kevin', 'Peter' ); LastNames: array[ 0..9 ] of String = ( 'Benson', 'Darkson', 'Firson', 'Henson', 'Jayson', 'Larson', 'Pirson', 'Smithson', 'Veyson', 'Zigfridson' ); var I, J, N, C: Integer; begin //заголовок формы Report1.AddBandEx( BandTitle, blCenter ); N := 0; C := 0; for I := 0 to 3 do begin Report1.AddBandEx( BandColumns, blExpandRight ); PrintingDetail := TRUE; //строки отчета for J := 0 to Random( 10 ) do begin if (J = 0) or (Random(10) = 0) then begin Inc( C ); BandCompany.Caption := ' Company number ' + Int2Str( C ); if BandCompany.Height + BandDetail.Height > Report1.HeightAvailable then Report1.NewPage; Report1.AddBandEx( BandCompany, blExpandRight ); end; Inc( N ); DetailN .Caption := Int2Str( N ); DetailFName .Caption := FirstNames[ Random( 10 ) ]; DetailLName .Caption := LastNames[ Random( 10 ) ]; Report1.AddBandEx( BandDetail, blExpandRight ); end; PrintingDetail := FALSE; end; end;
procedure TForm3.Report1NewPage(Sender: PObj); begin //Вывод шапки таблицы if PrintingDetail then Report1.AddBandEx( BandColumns, blExpandRight ); end;
end.
-
Как только цепляю в uses KOLPrinters он не нахидит модули *.dcu - они ведь образуются при нормальной компиляции KOLPrinters - что мне делать?????
-
ПОМОГИТЕ !!!!!! Дайте KOLReport для 7-го Delphi !!!!!!!!!!!!!!!!!!!!!!!!!!!
-
НЕ хочу переходить на 5-й только для того чтобы печатать отчет
-
Ребилдол делал? Я ставил какой-то KOLReport на D7
-
Обновил у себя KOLReport + KOLPrintDialogs, и зодно ToGRush. Проверял, что ставится (теперь), на D6. Ошибка-то 3 буквы всего ClassName -> SubClassName, изменилось года 2 по-моему как. Можно было и самим найти, если сильно хочется.
-
Где у тебя размещены модули KOLReport и KOLPrintDialogs? Запиши их в свой каталог. Владимиру - по моему были еще проблемы при использовании UNICODA. Где взять изменения?
-
Я с unicode не смотрел. Сами знаете, что поправлять. String -> KOLString, в событиях -> KOL_String.
-
Я то исправлю там надо то исправить в 1 или 2 местах. Скажи где взять последние исправления модулей KOLReport я не нашел свежих версий.
-
буквально пару дней назад выкладывал. Нужен еще KOLPrintDialogs от Brandys'а, я его тоже выкладывал обновленный. В топ-10 даже занёс.
-
Скачал - спасибо..... Вот только пока один вопрос - как изменить размер страницы по умолчанию - например А5? Пробовал по всякому - хрен. Только если сам принтер настроен на такой формат - тогда пожалуйста. Пока обойдусь но......
-
Есть там такое средство. Только размер страницы надо указывать в 0.1 миллиметра, кажется. Printer.PageWidth и PageHeight. Я в своём проекте, кстати, сам KOLReport для печати использовать не стал. Того что есть в KOLPrintDialogs + техника работы с метафайлами, содранная (всё-таки) из моего же KOLReport, и этого хватило. И там вообще все параметры задаются из программы, и диалог вызывается в основном чтобы принтер выбрать не по умолчанию (и убедиться, что прога его видит).
|