Про Report Preview

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Про Report Preview

Сообщение Игорь Столяров »

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

Зачем в штатном ABC классе предпросмотра отчётов ABREPORT.CLW 2 (два) раза подряд
вызывается SELF.InitWindowPosition() для установки размера и положения окна ?

Возможно в этом есть какой-то божественный замысел, который я не понимаю.
Заранее спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 87 раз
Поблагодарили: 5 раз

Про Report Preview

Сообщение ingasoftplus »

уточняйте версию. в 10 такого нет, например
да и в 8, 9 или 11 тоже нет
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Про Report Preview

Сообщение RaFaeL »

Игорь Столяров писал(а): 07 Ноябрь 2020, 23:38 SELF.InitWindowPosition()
Нет в штатном ABREPORT.CLW ничего похожего
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Про Report Preview

Сообщение Игорь Столяров »

Относясь с глубоким уважением к умению смотреть в книгу - процитирую ABREPORT.CLW С11.0.13630:

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

PrintPreviewClass.Display PROCEDURE ...
...
    OPEN (PreviewWindow)

    SELF.PreviewWindow &= PreviewWindow
    SELF.InitWindowPosition (PreviewWindow)  ! После открытия окна - установить размер и позицию
    SETCURSOR (CURSOR:Wait)   
и ещё раз то же самое

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

PrintPreviewClass.Open PROCEDURE()
i   UNSIGNED,AUTO
  CODE
  IF NOT SELF.Maximize
     SELF.InitWindowPosition (SELF.PreviewWindow)  ! Ещё раз, если оконный режим
  END
Во избежание недоразумений, просто установим вот так и создадим любой отчёт:

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

PrintPreviewClass.InitWindowPosition  PROCEDURE (WINDOW PreviewWindow)
  CODE
  DISPLAY
  Message('Всем выйти на свет !')
  ...
В принципе, у меня уже есть версия чем и почему это делалось,
но хотелось бы услышать: действительно это вижу только я ? ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Про Report Preview

Сообщение RaFaeL »

Прям вот так, с русскими комментами? )

В 9 версии нашел, в 6й нет такого
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Про Report Preview

Сообщение kreator »

Я видимо заметил первым - viewtopic.php?f=4&t=4523. В общем, логика непонятна. Идёт хитрый пересчёт в пиксели и с какими-то условиями. Два раза вызов, потому что два разных условия - Maximize и не Maximize. Поскольку у программеров SV не принято писать комменты (принято считать, что программист программиста должен понимать без комментариев), то надо потратить кучу времени и то не факт, что поймёшь. Результат такого программирования - глюк. Правда в этом случае его очень трудно поймать.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Про Report Preview

Сообщение Игорь Столяров »

RaFaeL писал(а): 08 Ноябрь 2020, 13:59 Прям вот так, с русскими комментами? )
Нет, конечно. Комменты добавил я для тех, кто не умеет пользоваться поиском. ;)
kreator писал(а): 11 Октябрь 2019, 15:24 Сделал обратное преобразование окна из пикселей при записи ini-файла и запретил второй раз (когда окно пиксельное) читать координаты из ini-файла.
Супер ! Вот оно ! Да ! Спасибо за ссылку. Абсолютно независимо вчера-сегодня - я пришёл к такому же решению. :)
Ископаемая проблема в связке ABREPORT + INIClass есть и закрыта она кривым костылём отцов-основателей.
Просто 98% юзеров и разработчиков не парятся и разворачивают предпросмотр на весь экран.
А как только переключаешь предпросмотр в оконный режим - оттуда начинают лезть тараканы (bugs). :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Про Report Preview

Сообщение finsoftrz »

Как ни странно, я сегодня тоже занимался подобным вопросом. Но у меня в ШВС все просто, как капуста. :-) Размеры фрейма в пикселях сохраняются в глобальных переменных, поэтому отследить улет окна предпросмотра за границы фрейма сложности не представляет, эти переменные доступны в процедуре предпросмотра.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Про Report Preview

Сообщение Игорь Столяров »

finsoftrz писал(а): 08 Ноябрь 2020, 17:45 Размеры фрейма в пикселях сохраняются в глобальных переменных
Но есть один момент ... :) Координаты окна предпросмотра (notMDI) для отчёта запущенного в потоке
всё равно выставляются от рабочей области фрейма, а не собственно окна фрейма. ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Про Report Preview

Сообщение finsoftrz »

Для меня это нормально, фича такая. У меня превью только на то, что надо напечатать. Всякие отчеты по другому формируются.
C6/C11, ШВС, tps/btrieve.
Ответить