:: Visual Foxpro, Foxpro for DOS
Re: Изыскания на тему печати двух копий отчета на одном листе.
Владимир Максимов

Сообщений: 14145
Откуда: Москва
Дата регистрации: 02.09.2000
Менеджер Маша будет разрезать бумагу на 2 половинки? Ну, чтобы отнести одну копию одному начальнику, а другую - другому? Какие проблемы разрезать бумагу ДО печати, а не ПОСЛЕ?

Понимаете, Вы ерундной занимаетесь. Чтобы было понятно, о чем речь, уточню:

1. Ваше решение хорошее и грамотное в рамках решаемой задачи
2. Сама решаемая задача чрезвычайно редкая и, как следствие, ценность предлагаемого решения не велика

Кроме того, из Ваших описаний следует, что Вы вообще-то создавали достаточно мало отчетов. Ну, или не дали себе труд проанализировать что и как Вы делаете в процессе создания отчетов.

Понимаете, даже в такой постановке: "Вам заказали простенький отчет" возникают вопросы, ставящие под сомнение использование данного решения.

1. Каким образом, при не определенном количестве номенклатуры, Вы можете ДО печати отчета узнать поместится ли вся номенклатура на одной половине листа или нет? Ну, хорошо, сегодня поместилась, а завтра добавили еще одну позицию и уже не помещается. А менеджер Маша по прежнему тупо жмет на Ctrl. Расход бумаги увеличился, вместо того, чтобы уменьшится (куча испорченных отчетов)

2. Программное решение организационных проблем (новый начальник) - путь "в никуда". Рассуждать можно много и долго, но результат будет один. Организационные проблемы должны решаться организационными же средствами. Попытка решить подобные проблемы программными средствами только усиливает неразбериху и откладывает принятие организационных решений.

Деньги-то Вы свои получите, но и только. Проблемы организации Вы не решите и переход на 1С станет неизбежностью. Что, впрочем, тоже не решит проблемы организации... На аналитиках обычно экономят...
Ratings: 0 negative/0 positive
Re: Изыскания на тему печати двух копий отчета на одном листе.
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Цитата:
На аналитиках обычно экономят...
Даже хуже... Не знают о существовании такой профессии. Исходят из собственной гениальности.

------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Изыскания на тему печати двух копий отчета на одном листе.
mxprud

Сообщений: 25
Откуда: Севастополь
Дата регистрации: 02.06.2008
Не надо воспринимать приведенный пример буквально. Смотрите глубже. Я лишь говорю о минимизации потребности в сопровождении.
Ratings: 0 negative/0 positive
Re: Изыскания на тему печати двух копий отчета на одном листе.
leonid

Сообщений: 3227
Откуда: Рига
Дата регистрации: 03.02.2006
mxprud
чтобы успокоить психику молодой, незамужней, но симпатичной и ни в чем не повинной девочки
Ну, это не так уж и трудно, значительно труднее успокоить психику немолодой, замужней, увы несимпатичной и к тому же в чем-то повинной Марьи Ивановны.
Цитата:
Смотрите глубже.
Не знаю, может быть Вы не поняли, но именно это на протяжении всей этой дискуссии все Вам и советуют.

А впрочем, самое мудрое, что в этой дискусиии было сказано - это:
Владимир Максимов
не будут Вас разубеждать
А я, дурак, сразу и не понял.
Ratings: 0 negative/0 positive
Re: Изыскания на тему печати двух копий отчета на одном листе.
mxprud

Сообщений: 25
Откуда: Севастополь
Дата регистрации: 02.06.2008
Вот вариант как ДО ПЕЧАТИ проверить, помещается ли две копии на лист
...
oReportListener = Createobject("MXReportListener")
oReportListener.two = CtrlPressed()
if oReportListener.two
oReportListener.listenerType=-1
Report Form &rf_name Object oReportListener
oReportListener.listenerType=1
if oReportListener.DisableTwo
messagebox('Две копии данного отчета на лист не поместятся!')
endif
Endif
Report Form &rf_Name object oReportListener To Printer Prompt
...
Define Class MXReportListener As ReportListener
Two = .f.
DisableTwo = .f.
PageHeight = 0
HalfPageHeight = 0
Procedure Init
This.ListenerType=1
Endproc
Procedure BeforeReport
this.PageHeight=this.GetPageHeight()
this.HalfPageHeight=Int(this.PageHeight/2)
Endproc
Procedure Render
Parameters nFRXRecNo, nLeft,nTop,nWidth,nHeight, nObjectContinuationType, cContentsToBeRendered, GDIPlusImage
If this.ListenerType = -1
If (m.nTop+m.nHeight)>=this.HalfPageHeight
this.DisableTwo = .T.
this.CancelReport()
endif
else
If !this.DisableTwo And this.two And (m.nTop+this.HalfPageHeight)<this.PageHeight
This.Render(m.nFRXRecNo, m.nLeft,m.nTop+this.HalfPageHeight,m.nWidth,m.nHeight, m.nObjectContinuationType, m.cContentsToBeRendered, m.GDIPlusImage)
Endif
endif
Endproc
Enddefine



Исправлено 1 раз(а). Последнее : mxprud, 19.06.08 15:52
Ratings: 0 negative/0 positive
Re: Изыскания на тему печати двух копий отчета на одном листе.
shubenkov

Сообщений: 1
Дата регистрации: 27.02.2013
Я тоже много думал по поводу печати двух отчетов на листе или объедения нескольких отчетов. Мне кажется все здесь упускают главное: формирование самого отчета из рабочего файла. Какие проблемы: просто добавить к этому файлу дополнительное поле для печати, а в самом отчете соответственно добавить это дополнительное поле. При смене значения дополнительного поля делать смену листа, вот и все проблемы. При таком подходе не нужно чесать правой пяткой левое ухо.
Ratings: 0 negative/0 positive
Re: Изыскания на тему печати двух копий отчета на одном листе.
of63
Автор

Сообщений: 25867
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Во времена матричных (моноширинных) принтеров, я называл подобную процедуру DblPage
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 27 (Гостей: 27)

© 2000-2025 Fox Club 
Яндекс.Метрика