Высота детали в репорте

Обсуждение извечных проблем кларионовских (и не только) отчетов

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Hello ClaList,

Задача: вывести на лазерный принтер отчет, сформированный программой
на ДОС-клиппере. Шапки и подножия уже в отчете.
У заказчика только лазерный принтер, а автор программы на клиппере
не знает клиппера под винду и все отчеты сделаны на матричник.
В клиппере можно переназначить вывод с принтера на файл. Хочу этот
файл вывести клашей на лазерник, что бы перед запуском печати можно
было задавать шрифт и высоту детали - подобрать под каждый отчет.
Программа dosprn у заказчика при печати альбомом кладет на бок часть
букв. Возможно нестыковка с драйвером принтера. На другом лазернике
все в порядке той же программой dosprn.


Как можно во время исполнения программы изменить высоту детали?

пробовал после открытия репорта на клаше 5 и 5.5
settarget(Report,DETAIL) - не понимает DETAIL, не понимает
RPT:DETAIL, не понимает метку детали, не получается назначить USE-
переменную для детали, даже в сурсах.

settarget(Report,2) или 1 или 0 принимает
settarget(Report,?ZUB:st) принимает (это поле на детали)

TARGET{PROP:Height}=glo:hiht ! изменяется высота отчета
settarget()


пробовал
DETAIL{PROP:Height}=glo:hiht
RPT:DETAIL{PROP:Height}=glo:hiht
?DETAIL{PROP:Height}=glo:hiht
?RPT:DETAIL{PROP:Height}=glo:hiht

не понимает DETAIL и RPT:DETAIL ,не получается назначить USE-
переменную для детали, даже в сурсах.


Пробовал перегнать в сырцы и сделать строку
report REPORT,AT(0,0,177,186),PAPER(PAPER:A4),PRE(RPT),FONT('Arial Cyr',10,,),MM
det DETAIL,AT(,,177,glo:hiht)
Link error: value not static
glo:hiht глобальная переменная, указывал атрибут static ошибка таже.

Неужели придется делать пачку деталей разной высоты, и печатать
ту их них, что по размеру подойдет?
--
Best regards,
Чаплыгин mailto:chapligin@fromru.com
Написал: ClaList(2)
Гость

Сообщение Гость »

Я уже сделал печать на принтер портретом и альбомом и выгрузку в MSWORD портретом и альбомом. Шрифт и высота детели для печати задаются с окна.

--
Best regards,
Чаплыгин

(Добавление)

А че, слабо почитать хелп или посмотреть тестовые примеры!?
Попробуй:

Код: Выделить всё

REPORT,AT(0,0,177,186),PAPER(PAPER:A4),PRE(RPT),FONT('Arial Cyr',10,,),MM
det  DETAIL,AT(,,177,10),USE(?MyDetail)
...

  SetTarget(REPORT)
  ?MyDetail{PROP:FontName} = 'Courier Cyr'
  ?MyDetail{PROP:FontSize} = 12
  ?MyDetail{PROP:FontStyle} = FONT:Italic
  ?MyDetail{PROP:FontCharSet} = CHARSET:CYRILLIC
  ?MyDetail{PROP:Height} = ...
  SetTarget()
  Print(RPT:det)
Думаю, тебе понравится! :)))

Удачи!

=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru

Проблема в том, что нельзя поставить ,USE(?MyDetail)!
В хелпе есть пример, но ,USE(?MyDetail) нельзя поставить даже в сырцах! Пробовал на 5.0в и 5.5 !

--
Best regards,
Чаплыгин

Ну зачем же так категорично?

Detail -> окно Properties -> поле Use: вводишь ?MyDetail и будет тебе щастье. :)

С уважением,
Новиков Антон

Не будет счастье - проверено!
Ввести можно, но в сырец ?MyDetail не попадет! - проверил на 5 и 5.5!
Правильно указаывать порядковый номер элемента отчета при изменении свойств:
Нашел сам правильное решение!
settarget(Report,?ZUB:st) ! вполне возможно хватит settarget(Report)
glo:numer{PROP:Height}=glo:hiht
settarget()

ZUB:st ! (это поле на детали)
glo:hiht ! изменяется высота детали
glo:numer ! Номер элемента отчета

не правильно TARGET{PROP:Height}=glo:hiht ! изменяется высота отчета

Видимо TARGET содержит "0" и команда меняет высоту самого отчета,
а поставил в glo:numer "1" и изменил высоту детали!

--
Best regards,
Чаплыгин

(Добавление)

Ты меня, конечно, извини, то напрашивается вопрос -
"Ты доку, хотя-бы начального уровня, по Клариону читал?"
Если мне не изменяет память - что-то типа QuickStart и тому подобное!

Во-первых, USE-метку можно назначить ЛЮБОМУ контролу как окна, так и отчета - прямо в дизайнере окна/отчета!
Во-вторых, USE-метку можно вписать и в сырцах:
- из оболочки, по кнопке входа в код окна/отчета
- в исходном коде, если процедура не генерится по шаблонам а пишеться полностью ручками.

Так что, как говорится, изучайте матчасть, коллега! :))

Олег Руденко oleg_rudenko@mail.ru

Попробуй сам поставить и компильнуть !

Код: Выделить всё

REPORT,AT(0,0,177,186),PAPER(PAPER:A4),PRE(RPT),FONT('Arial Cyr',10,,),MM
det  DETAIL,AT(,,177,10),USE(?MyDetail)
         STRING(@s255),AT(0,0,7198,167),USE(ZUB:st),TRN
       END
     END
Странно! Сейчас попробовал еще раз и получилось!
USE(?MyDetail) ставится и работает! А я пробовал в субботу и воскресенье - ничего не получалось - компилятор ругался на ",USE(?MyDetail)". Я пробовал и на 5 и на 5.5 клаше!
Имя встакленное через свойства детали НЕ вписывалось в сырец.
Копировал все из zubil006.clw в сырец и добавлял ",USE(?MyDetail)" к детали и получал сообщение об ошибке!
Сейчас вставил через свойства процедуры - кнопка с тремя точками около кнопки репорт - вставилось и сохранилось при редеатировании отчета обычным способом. Даже обращение сработало "glo:numer = ?MyDetail".
Если бы все сразу получилось - я б никого не беспокоил!
В свойствах детали сейчас MyDetail отображается со знаком "?", т.е. ?MyDetail.
Никогда не ставил в это поле имя с "?". Для фильтруемых деталей ставил без "?" и все работало! Пробовал сейчас на 5.0B шаблоны ШВС.

Спасибо за терпение и понимание!

--
Best regards,
Чаплыгин
Написал: ClaList(2)
Гость

Сообщение Гость »

А если полей в отчете много? А если порядок полей поменяется?
Будешь каждый раз пересчитывать контролы?

Мой тебе совет - НЕ ИЗОБРЕТАЙ ВЕЛОСИПЕД!
Все это - дело самого компилятора!
Твое дело - только задать контролу метку и использовать ее!
А для этого, естественно, надо изучить не только основы самого языка, но и возможности среды разработки.
В частности - дизайнера окон/отчетов.

Удачи!

Олег Руденко

У меня простой случай - одна деталь и одно поле для вывода.
Если отчет сложный - согласен, нужно заставить компилятор определять порядковый номер контрола! Можно "glo:numer = ?ZUB:st - 1", ZUB:st - первое поле на детали, а минус 1 - будет сама деталь!

--
Best regards,
Чаплыгин
Написал: ClaList(2)
Ответить