![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
просмотр перед печатью [D5, Win95/98]
valdn © (2002-07-25 17:02:00)Уважаемые знатоки !
Проблема такая : отчет выводится напрямую на принтер, используя свойство Printer.Canvas. Всё замечательно, но иногда этот отчет нужно печатать не сразу, а сначала просмотреть с экрана и затем уже принимать решение о печати. Если прорисовывать его на форме, используя Form.Canvas, то возникают 2 нехороших момента :
1)поскольку отчет большой , в размеры формы он не помещается, а горизонтальную и вертикальную полосы прокрутки на чистой форме создать не удается;
2)чтобы отчет прорисовывался при изменении размеров формы , его формирование приходится помещать в обработчик события OnPaint, и это приводит к задержкам при перерисовке формы, поскольку отчет формируется достаточно долго.
Подскажите, пожалуйста, каким образом можно сделать что-то вроде QReport, когда отчет формируется 1 раз, а затем его сколько угодно можно разглядывать с экрана, используя горизонтальную и вертикальную полосы прокрутки.
Заранее благодарен всем ответившим.
valdn (2002-07-29 11:44:00) [1]Вариант Scrollbox + Image работает хорошо. Правда, приходится использовать следующую цепочку :
BitMap:=Graphics.TBitmap.Create;
BitMap.LoadFromFile("c:\vedomost.bmp");
BitMap.Height:=Height1;
Image.Height:=Height1;
BitMap.Width:=Width1;
Image.Width:=Width1;
Picture:=TPicture.Create;
Picture.Graphic:=BitMap;
Image.Picture:=Picture;
И если убрать загрузку BitMap из файла (загружается пустая картинка), то в этом случае программа работать не хочет - наверное, после создания BitMap нужно задавать ему еще какие-то параметры.
>Dmk
Отдельное спасибо за исходники.
>pasha676,proton
Все репорты работают под стандартные БД, а я, нахлебавшись с Paradox, решил извратиться :) и сделать локальную БД на файлах прямого доступа, перекачивая их содержимое после соответствующей выборки сразу в StringGrid. Тут уже не раз обсуждалась проблема локальных БД , и большинство, как я понял, склоняется к варианту данные хранить в файлах, а наборы данных создавать в памяти, используя специальные компоненты. Мой вариант - как логическое продолжение этого направления - выбрасывается лишнее звено :).
TTCustomDelphiMaster (2002-07-26 20:36:00) [2]sok (26.07.02 09:28)
pasha676 (26.07.02 15:06)
Proton © (26.07.02 19:21)
Ага и переписывать всю программу. Если у человека отчет выводиться на canvas, то почему бы его не вывести на canvas TImage. Какие тут сложности?
А в следующей программе может он и воспользуется предложенными вами компонентами.
PS: И вообще, не видите что ли человек пробует, не надо ему мешать. Кто опаздал - тот не успел. :)
Proton (2002-07-26 19:21:00) [3]или fastreport"ом или freereprort"ом или preport"ом ?
или еще чем, зачем сложности такие ?
pasha676 (2002-07-26 15:06:00) [4]А че бы не воспользоваться КвикРепортом?
EyeDiver (2002-07-26 13:55:00) [5]После изменения размеров формы и скроллинге инвалидейтится только часть окна. Поэтому только она и перерисовывется. Для отрисовки всего окна необходимо вызвать InvalidateRect на WM_SIZE, WM_VSCROLL, WM_HSCROLL с параметрами ClientRect (инвалидейтить всю клиентскую область), правда появится эффект мерцания, но перерисовываться все будет грамотно
sok (2002-07-26 09:28:00) [6]Попробуйте использовать компонент TPrintPreview www.delphiarea.com
valdn (2002-07-26 08:39:00) [7]Спасибо всем ответившим.Идеи есть - буду пробовать.
Dmk (2002-07-26 05:34:00) [8]Я делал подобное. Могу исходники кинуть по почте. Размерчик Zip"a только 1.84 Mb.
Proton (2002-07-26 03:45:00) [9]картинку (TImage) можно поместить в scrollbox
TTCustomDelphiMaster (2002-07-25 18:24:00) [10]valdn
Только что на голову упало яблоко и родилась идея.
Создаешь на форме TImage, задаешь ему размеры, рисуешь на его canvas отчет, а дальше не твои заботы.
TTCustomDelphiMaster (2002-07-25 17:49:00) [11]valdn (25.07.02 17:36)
Значит криво написан обработчик onPaint или onPaint не происходит при скроллинге (проверь). Вообще для увеличения быстодействия отчет можно нарисовать например на canvas"е TBitmap и копировать нужный кусок на canvas формы.
valdn (2002-07-25 17:36:00) [12]>TTCustomDelphiMaster
Размещал Panel для пробы, полоса прокрутки появлялась, но при перемещении с помощью полосы скрытые части отчета почему-то не прорисовываются - они прорисовываются только при изменени размера формы.
TTCustomDelphiMaster (2002-07-25 17:22:00) [13]
> valdn (25.07.02 17:02)
> Уважаемые знатоки !
> 1)поскольку отчет большой , в размеры формы он не помещается,
> а горизонтальную и вертикальную полосы прокрутки на чистой
> форме создать не удается;
А что на форму нельзя поместить что нибуть маленькое, прозрачненькое пониже и поправее?