Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / расширение в отчете (new) / 10 сообщений из 10, страница 1 из 1
27.02.2004, 11:09
    #32423841
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширение в отчете (new)
Достаточно известная проблема с изображением табличек в отчете, когда используется расширение.

На данный момент мне известен единственный приемлемый способ
- с прорисовкой линий при событии печать

мне в нем не нравится что линии не приемлемы при полосатой раскраске (заливке каждой 3 записи светло серым)

а по сему такие мысли:

1. Измерение высоты строк
если в таблице одно поле задает максимальную высоту строки (простейший вариант) то

на стадии открытия отчета программно сгенерить временный отчет с этим контролом по событию печать промерить его высоту в каждой записи и сохранить в массив

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

2. А нет ли какого контрола для рисования строки таблицы ?
...
Рейтинг: 0 / 0
27.02.2004, 11:14
    #32423853
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширение в отчете (new)
или может не создавать временный отчет а измерять в первом запуске, закрывать и снова открывать, но данные могут измениться ....
...
Рейтинг: 0 / 0
27.02.2004, 11:37
    #32423902
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширение в отчете (new)
2 АлексейК
Недавно делал такую штуку, нужно было показывать несколько контролов с форматированием в зависимости от различных условий друг под другом. Так просто измеряли высоту максимального контрола на он_формат секции и позиционировали под ним, если надо, другие, точно также поступали и с вертикаольными линиями - горизонтальных нет.
...
Рейтинг: 0 / 0
27.02.2004, 11:57
    #32423936
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширение в отчете (new)
2 Hummer

такой способ здесь не пройдет, если конечно нет такой хитрой штуки как измерить высоту контрола после его расширения

расширенная высота контрола известна только в событии онпринт но уже нельзя изменять размеры ((

как измерить высоту контрола после расширения???
может быть разное число символов, размер и насыщенность шрифта
может апи какое есть для такого расчета?
...
Рейтинг: 0 / 0
27.02.2004, 12:43
    #32424053
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширение в отчете (new)
побывал на
http://www.lebans.com/textwidth-height.htm

меряет размер контрола эмулируя построение надписи через апи.

пробовал его отчет - пример.
работает, не быстро и не точно - если ширину поля сделать меньше последнее слово не влазит.
...
Рейтинг: 0 / 0
27.02.2004, 13:31
    #32424178
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширение в отчете (new)
Отправил пример. Может что-то не так понял, но вроде всё работает....
...
Рейтинг: 0 / 0
27.02.2004, 14:06
    #32424249
расширение в отчете (new)
не понял проблемы. Если в печати, к примеру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Static bColor
    bColor = bColor +  1 
    If bColor Mod  3  =  0  Then
        Me.FillColor =  12632256 
        Me.FillStyle =  0 
    Else
        Me.FillStyle =  0 
        Me.FillColor =  16777215 
    End If

и в отрисовке, после определения hMax
Код: plaintext
1.
2.
rep.CurrentX =  0 
rep.CurrentY =  0 
rep.Line Step( 0 ,  0 )-(rep.Width, hMax), , B

то все работает.

В чем проблема?
...
Рейтинг: 0 / 0
27.02.2004, 15:16
    #32424445
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширение в отчете (new)
идея вместо цвета заполнения рисовать под контролами прямоугольник понятна


не понятна конструкция
rep.Line Step(0, 0)-(rep.Width, hMax), , B

Step(0, 0) ??? к чему это?? я помню степ только для циклов
...
Рейтинг: 0 / 0
27.02.2004, 16:56
    #32424706
N_A
N_A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширение в отчете (new)
АлексейК мне в нем не нравится что линии не приемлемы при полосатой раскраске (заливке каждой 3 записи светло серым)
Код: plaintext
If ppp Mod  3  <>  0  Then Me.Section( 0 ).BackColor = RGB( 255 ,  255 ,  255 ) Else Me.Section( 0 ).BackColor = RGB( 240 ,  240 ,  240 )

,где ppp возрастает для каждой записи на 1.
Разве не зальёт каждую 3 запись (область данных)

p.s.:
Me.Height отлично справится с измерением высоты прямоугольника для рисования.
...
Рейтинг: 0 / 0
27.02.2004, 17:52
    #32424812
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расширение в отчете (new)
2 N_A

сенькс, получилось
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / расширение в отчете (new) / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]