Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/30: Рейтинг темы: голосов - 30, средняя оценка - 4.77
Настя

Как сделать переменную высоту строки в отчете?

27.06.2010, 12:15. Показов 5911. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне необходимо, чтобы высота строки (т.е. фактически высота всех полей в области данных отчета) 'подстраивалась' под высоту одного поля.
Столкнулась со следующей проблемой: если у этого поля поставить разрешение на расширение/сжатие, то свойство Height данного поля получает правильное значение после события 'Форматирование'. До этого событие Height равно, соответственно, той высоте, которая установлена изначально в отчете.

Но получается, что после того, как я знаю, какая будет высота у 'определяющего' поля, я уже не могу насильственно менять высоту других полей, т.к., как я понимаю, после события 'Форматирование' сразу следует событие 'Страница', после которого я уже ничего сделать не могу.

Вопрос: как нибудь можно 'просочиться между капельками', или, может, какие другие пути подскажете, как можно 'выдернуть' этот Height?
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.06.2010, 12:15
Ответы с готовыми решениями:

Как сделать высоту строки в макете по содержимому
Всем доброго времени суток! Подскажите, пожалуйста, как в макете документа сделать, чтобы высота строки устанавливалась по...

В отчете некоторые строки не нужны. Как это сделать?
В отчете в зависимости от условий надо выключить из вывода определенные строки. Как? Благодарю.

Как в отчете подстроить высоту полей?
Уважаемые Access-программисты! У меня в отчете, в области данных, элементы могут расширяться по высоте, если значение не умещается...

10
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
29.06.2010, 12:43
Опиши более конкретно (на примере)
0
Настя
29.06.2010, 15:37
Пример следующий:
необходимость в этом возникает при формировании накладных, счетов, счетов-фактур и тому подобных документов, где зачастую наименование товара 'не влезает' в отведенную для него ячейку. При этом, если воспользоваться свойством 'Расширение' для данного поля, то получается, что ячейка с наименованием, при необходимости, увеличивается в высоту, чтобы разместить все данные, а все остальные ячейки (цена, количество, сумма и т.д.) - остаются прежней высоты.

Проверено, что если на событие Область_данных_Page повесить процедуру обработки события, то после выполнения следующего кода:
Visual Basic
1
2
Dim RowHeight As double ' необходимая высота строки
    RowHeight=Me.Наименование.Height
переменная RowHeight получает как раз нужное значение, но применить
его так, как мне надо, например вот так:
Visual Basic
1
    Me.Цена.Height=RowHeight
я уже не могу.

Всвязи с чем возникает вопрос: может быть это значение можно как нибудь 'выдернуть' пораньше?

Спасибо за ответ.
Comanche
29.06.2010, 16:38
Попробуй включить макрорекордер, затем отформатировать ручками всё до нужного тебе состояния, и остановить макрорекордер. Посмотри, что он у тебя записал.
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
30.06.2010, 07:59
На счет выдернуть по раньше, может попробывать вычислить за ранее в ручную зависимость между колличеством букв в товаре или цене, ну в чем надо, т.е. если Иванов - кол-во букв 6, то Height допустим равен 15, а далее в программе просто обрабатывать вставляемые данные и уже под них формировать Height!
0
Настя
30.06.2010, 12:18
Самостоятельно высоту от к-ва букв не рассчитаешь, точнее, рассчитать то можно, но для этого нужно где-то брать таблицу ширин символов (так как она разная у разных букв)для шрифта и вычислять общую длину строки.
Я, во-первых, понятия не имею, где взять эту самую таблицу ширин, а во-вторых, раз в Access заложена возможность автоматического расширения/сжатия поля, то, соответственно, есть и механизм для этого вычисления. Зачем же изобретать велосипед?
Настя
30.06.2010, 12:21
А насчет макрорекордера можно поподробнее, пожалуйста?
Если не трудно, образец кода, как его, собственно говоря, запустить.
Заранее благодарна.
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
30.06.2010, 14:05
Сори и еще раз сори! Я просто наверное по глупости подумал про Excel, а у тебя Access. Извени, но здесь я тебе не помошник! Я работаю с базами Access через Visual Basic и отчеты формирую в Excel, более гибко и надежно (хоть и теряю много ресурсов и времени), зато можно делать все чем обладает Excel.
0
guest1
01.07.2010, 11:29
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Compare Database
Option Explicit
 
Dim ctl As Control, MaxH As Integer
 
Private Sub ÎáëàñòüÄàííûõ_Print(Cancel As Integer, PrintCount As Integer)
 
   MaxH = 0
   For Each ctl In Me.Section(0).Controls 
      MaxH = IIf(MaxH > ctl.Height, MaxH, ctl.Height)
   Next ctl
 
   For Each ctl In Me.Section(0).Controls 
      Me.Line (ctl.Left, 0)-Step(ctl.Width, MaxH), , B
   Next ctl
 
End Sub
guest1
01.07.2010, 11:33
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'вставляем в модуль класса отчета
'отчет с переменной высотой полей
Option Compare Database
Option Explicit
 
Dim ctl As Control, MaxH As Integer
 
Private Sub ОбластьДанных_Print(Cancel As Integer, PrintCount As Integer)
 
   MaxH = 0
   For Each ctl In Me.Section(0).Controls ' Перебор всех компонентов семейства Controls.
      MaxH = IIf(MaxH > ctl.Height, MaxH, ctl.Height)
   Next ctl
 
   For Each ctl In Me.Section(0).Controls '  Перебор всех компонентов семейства Controls.
      Me.Line (ctl.Left, 0)-Step(ctl.Width, MaxH), , B
   Next ctl
 
End Sub
Настя
04.07.2010, 10:10
Большое спасибо за дельные советы.
Только я не поняла, что означает:

ÎáëàñòüÄàííûõ_

Или это код для Exel?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.07.2010, 10:10
Помогаю со студенческими работами здесь

Как сделать чтобы в отчёте не отображались строки с пустыми полями
Суть такая: В отчёте есть поля значения которых могут быть пустыми. Как сделать чтобы при печати они не выводились?

Как передать в переменную высоту изображения?
Всем привет! Подскажите пожалуйста, как передать переменной значение высоты изображения? Т.е., если например, у изображения высота...

Как записать height (высоту картинки) в переменную
как записать height (высоту картинки) в переменную возможно ли записать в label ?

Как при добавлении новой строки в ListView изменить высоту строки?
Всем привет! В одной теме я решил совместить несколько вопросов, но по общей теме. 1) Как в листвью при добавлении новой строки...

Как сделать кнопку печати в отчете
Подскажите, пожалуйста, как можно сделать кнопку в отчете, чтобы по ней его распечатать. Я пытался вставить ее в конструкторе, но не вышло....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru