Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.07.2008, 17:55
YaroslavSh YaroslavSh вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 8
Репутация: 10
Вопрос Помогите с отчётом в QuickReport

Здравствуйте. Проблема такая:
Из предварительно созданного файла в процессе работы программы получаем данные и отправляем их QuickReport. BandType:rbDetail, в зависимости от того сколько наработали получаем в отчете разное число строк и картинки разного размера отправляемых в DetailBand. Для наглядности пример ниже... Пришлось размер DetailBand сделать максимально возможным. Вот это место не получается удалить, уходит много лишней бумаги. Подскажите если кто знает как DetailBandом можно обрезать лишнее место?
Изображения
Тип файла: jpg пример.jpg (40.9 Кбайт, 17 просмотров)
Ответить с цитированием
  #2  
Старый 19.07.2008, 19:11
Директор ВЭБ Директор ВЭБ вне форума
Прохожий
 
Регистрация: 15.07.2008
Сообщения: 19
Репутация: 10
По умолчанию

Удалять ничего не надо просто Band максимально близко тянешь в притык с последним Лейблом в данном случаи с Текстом3
Ответить с цитированием
  #3  
Старый 19.07.2008, 19:19
YaroslavSh YaroslavSh вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 8
Репутация: 10
По умолчанию

У меня размер картинки заранее не определен и размер текста всегда разный. Если Band максимально близко подтянуть к Лейблу, то в некоторых случаях картинки получаються обрезанными или текст (QRRichText).

Последний раз редактировалось YaroslavSh, 19.07.2008 в 19:27.
Ответить с цитированием
  #4  
Старый 25.07.2008, 10:54
YaroslavSh YaroslavSh вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 8
Репутация: 10
По умолчанию

Ещё вопрос: почему компонент QRShape с параметром brush style = bsBDiagonal при печати полностью получается чёрный квадрат вместо штрихованного квадрата.
Ответить с цитированием
  #5  
Старый 25.07.2008, 18:04
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

А почему бы не посчитать размеры каждого нового полученного элемента и выставить все параметры програмно в он-лайне !
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #6  
Старый 25.07.2008, 18:25
YaroslavSh YaroslavSh вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 8
Репутация: 10
По умолчанию

Тяжело, там более 50 вариантов, не хотелось бы для каждого конкретного случая писать своё. Неужели нельзя DetailBand1.size.height делать по последнему элементу?
Ответить с цитированием
  #7  
Старый 25.07.2008, 18:27
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

+1.
Band.OnPrint (вроде так, давно с QR не работал) тебе поможет.
Вызывается перед собственно печатью.

А с Шейпом - может стиля такого у принтера нету, вот он и берет другой.
Или, что даже вероятнее, там есть ошибочка - не учитывается разрешение принтера. Т.е. шейп красится диагонально через, например, 2 пикселя. Но на принтере ты 2 пикселя не увидишь - мелкие больно - вот и получаешь закрашеный квадрат. Лучше делай через заливку серым цветом - вполне пристойно выглядит.
Ответить с цитированием
  #8  
Старый 25.07.2008, 18:52
YaroslavSh YaroslavSh вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
+1.
Band.OnPrint (вроде так, давно с QR не работал) тебе поможет.
Вызывается перед собственно печатью.


lmikle может BeforePrint ?
Ответить с цитированием
  #9  
Старый 25.07.2008, 19:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Скорее всего, я же говорю - давно не работал с QR, навскидку просто не помню как называется. Но таким фокусом пользовался.
Ответить с цитированием
  #10  
Старый 26.07.2008, 00:17
YaroslavSh YaroslavSh вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle

А с Шейпом - может стиля такого у принтера нету, вот он и берет другой.
Или, что даже вероятнее, там есть ошибочка - не учитывается разрешение принтера. Т.е. шейп красится диагонально через, например, 2 пикселя. Но на принтере ты 2 пикселя не увидишь - мелкие больно - вот и получаешь закрашеный квадрат. Лучше делай через заливку серым цветом - вполне пристойно выглядит.


На счёт через заливку делать шейп, меня-то как раз интересует печать диагональной штриховки.
Ответить с цитированием
  #11  
Старый 27.07.2008, 22:30
YaroslavSh YaroslavSh вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 8
Репутация: 10
По умолчанию

Вот быстро набросал отчет для наглядности на D7 QR 5.02.
Вложения
Тип файла: zip Project1.zip (39.6 Кбайт, 6 просмотров)

Последний раз редактировалось YaroslavSh, 28.07.2008 в 08:49.
Ответить с цитированием
  #12  
Старый 28.07.2008, 01:44
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от YaroslavSh
На счёт через заливку делать шейп, меня-то как раз интересует печать диагональной штриховки.

Тогда играй с кистью.
На том же OnBeforePrint попробуй шейпу указать свою кисть. Может хоть так сработает.
Ответить с цитированием
  #13  
Старый 28.07.2008, 22:32
YaroslavSh YaroslavSh вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Тогда играй с кистью.
На том же OnBeforePrint попробуй шейпу указать свою кисть. Может хоть так сработает.

Доигрался, но не с кистью, помоему тоже ничего. Может кому понадобиться. Идея не моя, но искал долго .
var
test: TBitmap;
X, Y, kX, kY: Integer;

test:= TBitmap.Create;
test.LoadFromFile('test.bmp');
test.Transparent:=true;
test.TransparentColor:=test.Canvas.Pixels[0, 3];
kX := Width DIV test.Width;
kY := Height DIV test.Height;
FOR X := 0 TO kX DO
FOR Y := 0 TO kY DO
QRImage1.Canvas.Draw(X*test.Width, Y*test.Height, test);

Последний раз редактировалось YaroslavSh, 28.07.2008 в 22:37.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter