WordWrap ActiveReports 2

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

WordWrap ActiveReports 2

Сообщение SergT » 16.11.2006 (Чт) 9:40

Доброго здоровья всем жителям форума!
Вот столкнулся... Может кто знает?
Пользую ActiveReports2. В Details есть несколько полей. Все имеют свойство Wordwrap=True, Border со всех сторон (прямоугольник).
Когда текст вмещается в поля - все выглядит в виде аккуратной таблички (типа Excel). Но если не вмещаеся - таблица превращается в набор прямоугольников разной высоты :cry:
Пробовал расчитывать длину текста и там где короче - добивать пробелами, однако пробелы игнорируются (если только в конце не ставить, например, точку).
Очень надо получить в каждой строке Details поля одинаковой высоты, т.е. таблицу с разной ( в соответствии с WordWrap) высотой строк .
Может это вообще невозможно? В примерах DataDynamics изящно обходят эту проблемму не рисуя окантовку поля.
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.11.2006 (Чт) 9:56

Попробуй рисовать окантовку линиями, а не бордюром.
Lasciate ogni speranza, voi ch'entrate.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 16.11.2006 (Чт) 10:04

Я пользуюсь ActiveReports2 пару недель. Очень понравился. После Access-ных репортов - очень понятен, много схожего. Однако, я так и не нашел возможности менять размеры или что-то рисовать именно в уникальной строке Details.
Если у Вас есть подобные знания - очень прошу поделиться, а то спать скоро перестану :)

добавлено позднее...
Подскажите хотя бы, в какой момент произошло событие WordWrap, что бы отловить высоту поля. Или я вообще не так все понимаю?
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.11.2006 (Чт) 10:13

Зачем ее вообще отлавливать?
Нарисуй две горизонтальные линии, вверху секии и внизу секции.
Нарисуй нужное количество вертикальных линий на всю высоту секции.
При расширении текстовых полей вертикальные линии должны автоматически растянуться.
Lasciate ogni speranza, voi ch'entrate.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 16.11.2006 (Чт) 10:17

alibek писал(а):...При расширении текстовых полей вертикальные линии должны автоматически растянуться.
:shock:
Чего-то у меня не так получалось :? Спасибо за совет - побегу пробовать. Такой вариант меня бы устроил! Да, а вот еще и заголовки над полями... Как попробую, дам ответ!
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.11.2006 (Чт) 11:53

alibek писал(а):Зачем ее вообще отлавливать?
Нарисуй две горизонтальные линии, вверху секии и внизу секции.
Нарисуй нужное количество вертикальных линий на всю высоту секции.
При расширении текстовых полей вертикальные линии должны автоматически растянуться.


А если нужно самостоятельно "растягивать", то это также делается элементарно - просто надо это делать в событии Before_Print секции.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.11.2006 (Чт) 12:04

Ну если что-то нестандартное, то да.
Но насколько я помню, автоматически растягиваться по высоте репорт может сам.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.11.2006 (Чт) 12:25

alibek писал(а):Ну если что-то нестандартное, то да.
Но насколько я помню, автоматически растягиваться по высоте репорт может сам.


Не репорт растягивать, а контролы в его секции.
Например несколько Field с бордюрами можно растянуть по высоте большего (который растянулся от длинного текста). То бишь чтобы получить красивую табличку. Твой вариант с линиями тоже верен - это просто разные варианты достижения одной и той-же цели (в данном случае)...

И вообще - AR устанавливает размеры компонентов к моменту возникновения BeforePrint. Соответственно в этих событиях можно начинать самому играться с их размерами (в зависимости от уже рассчитанных AR и прочих параметров отчета).

А в AfterPrint можно уже самостоятельно рисовать на листе отчета (DrawLine, DrawText и т.д.)
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 16.11.2006 (Чт) 12:45

To Andrey Fedorov: Спасибо. Попробую, а то с линиями не очень получается :( .
А, вообще, AR клёвая штука. Возможностей - море, а размер маленький. Думаю, что мой выбор с репортами решен!
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.11.2006 (Чт) 12:53

SergT писал(а):А, вообще, AR клёвая штука. Возможностей - море, а размер маленький.


Угу - когда его поймешь то действительно все просто и удобно.
Единственно чего мне раз не хватило - возможности включать в один отчет страниц разного размера. Именно размера - например (A3 и A4), а не ориентации (с ориентацией никаких проблем нет). Точнее включить-то можно, но вот на принтер их корректно за раз я вывести не смог. Конечно, можно печатать их из отчета постранично, на как-то это некрасиво - куча страниц в очереди...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 16.11.2006 (Чт) 13:01

To Andrey Fedorov : Ура! Спасибо! 8) Теперь буду спать спокойно!
Ну просто мечты идиота :D
--------------------------------------
Private Sub Detail_BeforePrint()
F1.Height = F0.Height
F2.Height = F0.Height
................
F10.Height = F0.Height
End Sub

Интересно, а в Access такое сработает?
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.11.2006 (Чт) 13:05

SergT писал(а):Ну просто мечты идиота :D


Private Sub Detail_BeforePrint()
Dim i As Integer, h As Long
h = F0.Height
For i = 1 To 10
Detail.Controls("F" & i).Height = h
Next i
End Sub

И в Access-е можно подобно...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 17.11.2006 (Пт) 9:38

To Andrey Fedorov : Да, примерно так я и поступил. Сперва нашел самый высокий, а затем "подтянул" остальные.
Вот у меня еще вопрс возник по ходу дела. Хотел сделать код более универсальным. Предполагалось проверить все контролы и, если они являются полями, проводить операции с ними. Однако, не смог определить ControlType :cry: . Через имя все просто (можно и так оставить), но вопрос засел занозой :) . Как определить, что контрол - поле?. Есть еще лейблы, линии и.т.д. Полагаю, специфика синтакссиса именно в AR.
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.11.2006 (Пт) 9:45

SergT писал(а):Как определить, что контрол - поле?. Есть еще лейблы, линии и.т.д. Полагаю, специфика синтакссиса именно в AR.


Никакой специфики - смотри Help по TypeName, TypeOff
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 17.11.2006 (Пт) 10:05

Andrey Fedorov писал(а):TypeName, TypeOff

Спасибо! :) Я искал ControlType :oops:
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 92

    TopList