|
23.07.2009, 15:23 | #1 |
Участник
|
Печать формы
Я вроде посмотрел весь форум но так и не нашёл, как распечатать саму форму? ctrl+p работает, но метод print() почему то нет, делал на основе печать репорта, но не получается, может кто подскажет примерчик, или как запустить саму форму напечать?
|
|
23.07.2009, 15:32 | #2 |
Axapta
|
Что вы подразумеваете под словами "распечатать саму форму" и что значит "как запустить саму форму напечать"?
|
|
23.07.2009, 15:36 | #3 |
Участник
|
к сожалению то самое, всю форму, если интересно на ней activx control с web контентом, поэтому вопрос как запустить принт самой формы?
|
|
23.07.2009, 15:44 | #4 |
Участник
|
например, клавиши alt + prtScr, далее вставка в ворд и печать
|
|
23.07.2009, 15:59 | #5 |
Участник
|
а по другому, ведь ctrl+p работает же а как из кода?
|
|
23.07.2009, 16:06 | #6 |
Axapta
|
Простите, я опять не понял. Что значит "распечатать форму"? Вам надо на принтер скриншот отправить? Или же каким-либо образом все содержимое произвольной формы, с учетом того, что в каких-то частях формы могут быть скроллеры и на экран не все влезает? Или Автоотчет по ctrl+P же вроде именно он вызывается?
|
|
23.07.2009, 16:14 | #7 |
Участник
|
"Или же каким-либо образом все содержимое формы, с учетом того, что в каких-то частях формы могут быть скроллеры и на экран не все влезает?" вот это, как я понял из-за того что на форме нет datasource вместо автоотчёта, с помощью ctrl+p печатается вся форма, а не делается автоотчёт. Так вот как этот ctrl+p вызвать из X++?
|
|
23.07.2009, 16:25 | #8 |
Axapta
|
По ctrl+p всего лишь вызывается форма SysTableForm.
|
|
23.07.2009, 16:35 | #9 |
Участник
|
хммм нет у меня вызывается сразу принтер, как например если б из эксплоера вызвать ctrl+p ...
|
|
23.07.2009, 16:49 | #10 |
Участник
|
обрисую полностью ситуацию есть form с контролом activex (Microsoft Web Browser) как распечатать этот контрол на принтере? так как при ctrl+p вызывается, сразу принтер из windows? как это сделать из кода?
|
|
23.07.2009, 17:17 | #11 |
Боец
|
Вот для начала. По нажатию Ctrl+P фотографирует форму и кладет рисунок в буфер обмена.
Перекрыть метод task() на форме X++: public int task(int _taskId) { int ret; // DSPIC --> Image image; #define.Key_CtrlP(278) // DSPIC <-- ret = super(_taskId); // DSPIC --> if (_taskId == #Key_CtrlP) { image = new Image(); image.captureWindow(this.hWnd()); image.clipboardCopy(); } // DSPIC <-- return ret; } Если нужно не через SysPrintForm, то можно продумать вариант с WinApi::PrintDlg - вызывает виндошный диалог принтера перед печатью (Ctrl+P). Нужно посмотреть, как ему подсунуть буфер обмена для печати, либо получится сделать минуя буфер. Последний раз редактировалось DSPIC; 23.07.2009 в 17:31. Причина: PrintDlg |
|
23.07.2009, 18:18 | #12 |
Участник
|
спасибо за внимание, я посмотрел syshelp formu и там почти то что нужно, только мне не понятно как activex.document() засунуть в олекоманд, или как делается выборка и убирается header time and date ...
X++: void print() { OleCommand oleCommand; COMVariant parm; ; oleCommand = new OleCommand( browser1.Document() ); parm = new COMVariant(COMVariantInOut::Out); oleCommand.exec('',6,1,parm); |
|
23.07.2009, 20:35 | #13 |
Участник
|
Вобщем заработало
X++: void print() { OleCommand oleCommand; COMVariant parm; ; oleCommand = new OleCommand( browser1.Document().Interface() ); parm = new COMVariant(COMVariantInOut::Out); oleCommand.exec('',6,1,parm); } |
|
|
За это сообщение автора поблагодарили: oip (5). |