Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компонент «растет», соседи двигаются, Quick report, AutoStrech := True 
:(
    Опции темы
Chyslyvchyk
Дата 16.1.2007, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Есть QRExpr, QRDBText и еще один QRExpr размещены в DetailBand один под одним. AutoSize := False, AutoStrech := True. При выведении текста «наезжают» друг на друга. Как «попросить» их двигаться по мере увеличения размера верхнего компонента?


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Savek
Дата 16.1.2007, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7



В твоем случае по моему только ручками обрабатывать событие BeforPrint , где расчитывать новые координаты. Попробуй использовать ChildBand
PM MAIL   Вверх
Chyslyvchyk
Дата 18.1.2007, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Цитата(Savek @ 16.1.2007,  09:15)
В твоем случае по моему только ручками обрабатывать событие BeforPrint , где расчитывать новые координаты. Попробуй использовать ChildBand

Добавлены ChildBand-ы. Выставлены Parent-ы и LinkBand-ы. 
Получилось:
Band1 c QRExpr1
|
ChildBand1 c QRDBText1 (ParentBand := Band1, LinkBand := Band1) 
|
ChildBand2 c QRExpr2 (ParentBand := ChildBand1 , LinkBand := ChildBand1) 
|
ChildBand3 c QRExpr3 (ParentBand := ChildBand2 , LinkBand := ChildBand2) 

Теперь бы сделать так, чтобы если QRDBText1 или QRExpr2 или QRExpr3 были пустыми, то определенные ChildBand-ы бы не отображались. А то если QRDBText1  пустой, то остается пустое место между Band1 и ChildBand2, и т.д. smile
Код

procedure TForm.QRBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
 If QRDBText1 .Value.strResult = '' then Sender.ChildBand.Enabled := false else Sender.ChildBand.Enabled := true;
end;

procedure TForm.QRChildBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
 If QRExpr2.Value.strResult = '' then Sender.ChildBand.Enabled := false else Sender.ChildBand.Enabled := true;
end;

procedure TForm.QRChildBand2BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
 If QRExpr3.Value.strResult = '' then Sender.ChildBand.Enabled := false else Sender.ChildBand.Enabled := true;
end;


Все работает отлично, пока не пропадет ChildBand2, например. Тогда неважно QRExpr3.Value.strResult = '' или нет, ChildBand3 все равно выводится. Пустой...



--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Savek
Дата 18.1.2007, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7



Цитата(Chyslyvchyk @  18.1.2007,  07:44 Найти цитируемый пост)
Все работает отлично, пока не пропадет ChildBand2, например. Тогда неважно QRExpr3.Value.strResult = '' или нет, ChildBand3 все равно выводится. Пустой...

Похоже небольшая путаница с событиями. Дело в том что если ChildBand2.Enabled=false, то и QRChildBand2BeforePrint не возникает и соответственно ChildBand3 печатается в любом случае. Попробуй скрывать/показывать банды в их же событии OnBeforPrint
PM MAIL   Вверх
Chyslyvchyk
Дата 18.1.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Цитата(Savek @ 18.1.2007,  09:19)
Цитата(Chyslyvchyk @  18.1.2007,  07:44 Найти цитируемый пост)
Все работает отлично, пока не пропадет ChildBand2, например. Тогда неважно QRExpr3.Value.strResult = '' или нет, ChildBand3 все равно выводится. Пустой...

Похоже небольшая путаница с событиями. Дело в том что если ChildBand2.Enabled=false, то и QRChildBand2BeforePrint не возникает и соответственно ChildBand3 печатается в любом случае. Попробуй скрывать/показывать банды в их же событии OnBeforPrint

Poluchilos'. Tolko prishlos' ostavit' QRBand1BeforePrint i propisat' sleduzushee (a to vse ravno propadali): 
Код

procedure TForm.QRBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
  QRChildBand1.Enabled := true;
  QRChildBand2.Enabled := true;
  QRChildBand3.Enabled := true;
end;



--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Chyslyvchyk
Дата 2.2.2007, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



С QRChildBand-ами разобрались. А как ручками обрабатывать событие BeforPrint?  
Например, идут:
QRDBText1
QRDBText2

Код

//DetailBand
procedure TForm.QRBand3BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
  QRDBText2.Top := QRDBText1.Top + QRDBText1.Height + 2;
end;

Не работает. То есть работает. Только QRDBText1.Height = изначальному значению и не увеличивается, хотя высота меняется (текст ее растягивает).


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Savek
Дата 2.2.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7



Да.... На самом деле все сложнее чем кажется на первый взгляд, вот цитата из справки
Цитата

Q-30: Как я могу получить высоту секции с расширяемыми компонентами в runtime?

 Это  доступно  только  в  версии  3.0  

У меня версия 3.6.2 но правильное значение высоты получить не удается.

Наверное самый простой способ обойти этот ляпсус - это накидать нужное кол-во секций SubDetail для каждого QRDBText
PM MAIL   Вверх
Chyslyvchyk
Дата 7.2.2007, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Цитата(Savek @ 2.2.2007,  16:48)
Наверное самый простой способ обойти этот ляпсус - это накидать нужное кол-во секций SubDetail для каждого QRDBText

Да проблема в том, что мне нужно эти QRDBText накидать на сером фоне. То есть идет документ белый, а именно эти QRDBText  - в сером квардате. Если бы они были на одном Detail - все ок, берем QRShape и рисуем. А если на разных SubDetail - что делать? Ведь для каждой SubDetail рисуется отдельный QRShape...


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.