Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > MS Access > свойство CanGrow поля отчёта |
Автор: kapbepucm 6.11.2007, 17:27 |
В стандартном поле отчёта есть свойство CanGrow. Возможно ли програмно узнать на сколько поле "хочет вырати", если CanGrow=False? Добавлено через 1 минуту и 30 секунд Мне не надо расширять строки, только хочу цифры знать. |
Автор: kapbepucm 7.11.2007, 11:06 |
"Копаясь" в этом деле, получил странный эффект. При установке CanGrow=True отчёт печатает пустые поля. Чем такое может быть вызвано? |
Автор: Akina 7.11.2007, 11:08 |
Refresh/Repaint/Requery/Re(чего там еще бывает)... Да! а свойство-то меняем в режиме макета? |
Автор: kapbepucm 7.11.2007, 13:40 |
Режим Design view. Только вот незадача, куда я ни писал RepaintObject, так всё равно не хочет показывать написанное в поле, но всё становится на своё место, как только CanGrow=False |
Автор: Akina 7.11.2007, 13:54 |
kapbepucm, т.е. если я правильно понимаю:
|
Автор: kapbepucm 7.11.2007, 14:06 |
Нет, всё ещё проще: 1)вариант Report.Open Design CanGrow=False Report.Save Report.Close Report.Open View Здесь вижу всё 2)вариант Report.Open Design CanGrow=True Report.Save Report.Close Report.Open View Здесь вижу только те поля у которых CanGrow=False Добавлено через 1 минуту и 11 секунд И делаю пока всё ручками |
Автор: kapbepucm 14.4.2009, 09:20 |
Проблема несколько видоизменилась. Теперь надо узнать "насколько выросло" поле в "повторяющейся" секции Detail. Изначально у поля стоит значение CanGrow=True. Но в событии OnFormat этой секции свойство Height показывает старое значение. Вопрос: как узнать новое? |
Автор: bopoha 14.4.2009, 11:44 |
На событии OnPaint() |
Автор: Akina 14.4.2009, 11:47 | ||
Получать его в методе, вызываемом, когда форматирование уже завершено. |
Автор: kapbepucm 14.4.2009, 12:48 | ||||
Псевдографически у меня такой отчёт:
|
Автор: Akina 14.4.2009, 13:12 |
Ну вообще-то так и должно получиться без всяких дополнительных телодвижений... |
Автор: kapbepucm 14.4.2009, 15:07 | ||||
Добавлено через 1 минуту и 44 секунды "Растёт" только то поле, которое длинное, а надо, чтобы все. |
Автор: Akina 14.4.2009, 15:20 |
А зачем бордюр у ПОЛЯ? Прорисуй прямые между полями и по верху области данных и подножки - они и образуют тебе сетку. |
Автор: kapbepucm 14.4.2009, 15:55 | ||
Гмм... Но всё равно, чтобы нарисовать вертикальную линию, своиство Height кое-где надо увеличивать. Проблема осталась
![]() Проблема: нужный вертикальный рамер можно узнать, когда уже поздно менять (OnPrint). Менять что-либо в секции возможно только в OnFormat- но там невозможно узнать, насколько надо менять. Какой выход? |
Автор: bopoha 14.4.2009, 16:04 |
Я такую задачу уже решал. Поищу дома. |
Автор: kapbepucm 14.4.2009, 17:18 |
Буду с нетерпением ждать ![]() |
Автор: bopoha 15.4.2009, 23:27 | ||
Задача решалась следующим образом: В области данных все поля размещались в одну линию. Под полями размещена линия (элемент управления): lineEndRow. Алгоритм вызывается на событие OnPaint и рисует вертикальные линии высотой равной lineEndRow.Top Например (c работающего кода) :
|
Автор: kapbepucm 20.4.2009, 10:33 |
Простите за нескромный вопрос. Я в Design view (Access2000) не могу найти событие OnPaint ![]() Не подскажите событие OnPaint к какому обьекту надо подцепить? |
Автор: bopoha 26.4.2009, 22:03 |
kapbepucm, к тому разделу, где необходимо рисовать линии. В указанном выше примере это Область данных. |