Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Событие печати документа... / 20 сообщений из 20, страница 1 из 1
28.12.2004, 13:52
    #32847752
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
Не могу найти событие, которое срабатывало бы на нажатие в CrystalReportViewer1 на эконку с принтером, а еще лучше на непосредственно печать. Все события, кот я перепробовала не срабатывают.
Это событие нужно для пометки в базе, что данный документ был распечатан.
...
Рейтинг: 0 / 0
28.12.2004, 15:30
    #32848049
baike2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
Где-то я такое уже видел... сейчас начнется:))
...
Рейтинг: 0 / 0
28.12.2004, 15:33
    #32848061
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
не поняла...
где видел и что начнется...
...
Рейтинг: 0 / 0
28.12.2004, 16:21
    #32848216
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
irinkaНе могу найти событие, которое срабатывало бы на нажатие в CrystalReportViewer1 на эконку с принтером, а еще лучше на непосредственно печать. Все события, кот я перепробовала не срабатывают.
Это событие нужно для пометки в базе, что данный документ был распечатан . Мне кажется, что вы подходите не с той стороны. Нажатие на кнопку "с принтером" означает лишь, что нажали на кнопку "с принтером".
Документ вполне мог и не напечататься по разным причинам.
Мне кажется, вам надо посмотреть на мониторинг статуса принтера и его задач (jobs)
Возможно, CR предоставляет какую-то объектную модель для этого
...
Рейтинг: 0 / 0
28.12.2004, 17:05
    #32848346
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
Спасибо, согласна, что нажатие на кнопку недостаточно и хорошо бы проверить статус.
Нашла такой пример из вашей ссылки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Private Enum PrinterStatus
        PrinterIdle =  3 
        PrinterPrinting =  4 
        PrinterWarmingUp =  5 
        ' For more states see WMI docs.
    End Enum

    Private Function PrinterStatusToString(ByVal ps As PrinterStatus) As String
        Dim s As String
        Select Case ps
            Case PrinterStatus.PrinterIdle
                s = "waiting (idle)"
            Case PrinterStatus.PrinterPrinting
                s = "printing"
            Case PrinterStatus.PrinterWarmingUp
                s = "warming up"
            Case Else   ' Vielleicht gibt es noch weitere Fälle...
                s = "unknown state"
        End Select
        PrinterStatusToString = s
    End Function

Private Sub Form1_Load( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
) Handles MyBase.Load
    Dim strPrintServer As String
    strPrintServer = "localhost"
    Dim WMIObject As String, PrinterSet As Object, Printer As Object
    WMIObject = "winmgmts://" & strPrintServer
    PrinterSet = GetObject(WMIObject).InstancesOf("win32_Printer")
    For Each Printer In PrinterSet
        MsgBox( _
            Printer.Name & ":  " & _
            PrinterStatusToString(Printer.PrinterStatus) _
        )
    Next Printer
End Sub

Вообщем он понятен, но опять же, в данном случае статус проверяется при загрузке формы, и остается вопрос в каком событии написать, то, что в примере написано в Load, чтобы вызвать эту самую проверку.
...
Рейтинг: 0 / 0
28.12.2004, 17:07
    #32848357
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
Небольшое пояснение...
Дело в том, чтобы перехватить событие, например, нажатия кнопки Del на клаве я использовала вот что:
Код: plaintext
1.
2.
3.
4.
5.
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
        If keyData =  131089  Then
        ля ля ля    
        End If
    End Function
Расчитывала, что есть что-то подобное для печати...
...
Рейтинг: 0 / 0
28.12.2004, 17:24
    #32848409
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
Все дело в том, что нет события "окончание печати документа". Просто потому, что OS грубо говоря посылает документы "в никуда" (на принтер). Далее они обрабатываются и печатаются принтером, у которого возможно только спросить "что он сейчас делает", т.е. узнать статус.

П.э. на ваш вопрос в каком событии написать, то, что в примере написано в Load, чтобы вызвать эту самую проверку. отвечу так:

Я бы по таймеру (возможно в отдельном треде) отслеживал статус принтера и его задач.

Хотя, сказать по правде, я не думаю что удастся написать 100% надежный механизм, который бы гарантировано подтверждал, что такой-то документ был _напечатан_ (а не послан на печать)
Даже сама OS (окно printers) частенько сбоит в этом вопросе.

В .net есть еще событие PrintDocument.EndPrint (для работы с PrintDocument) Но и оно говорит лишь о том, что последняя страница документа ушла на печать.
...
Рейтинг: 0 / 0
28.12.2004, 17:39
    #32848450
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
автор
П.э. на ваш вопрос в каком событии написать, то, что в примере написано в Load, чтобы вызвать эту самую проверку. отвечу так:

Я бы по таймеру (возможно в отдельном треде) отслеживал статус принтера и его задач.

А если в этот момент кто-то еще печатает на этот принтере???
Получается нужно проверять кто и каким приложением печатает документ...так я понимаю
...
Рейтинг: 0 / 0
28.12.2004, 17:42
    #32848463
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
А событие, что мы отправили документ "в никуда", можно перехватить?
...
Рейтинг: 0 / 0
28.12.2004, 17:46
    #32848481
Azart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
А может вам в БД заносить статус вроде этого: "документ был отправлен на печать". Вы будете знать, что кто то пытался его напечатать, но не будет 100%, что это получилось(бумага кончалась, свет погас и етк). А статус будет выставляться по проверке клика на вашу пентограмму печати.
...
Рейтинг: 0 / 0
28.12.2004, 17:53
    #32848497
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
Приехали...
Дело в том, что явного события нажатия на пиктограмму нету, в этом первоначально и состоял вопрос (не могу найти событие нажатие на пиктограмму)
Может вы подскажите где оно?
...
Рейтинг: 0 / 0
28.12.2004, 18:00
    #32848512
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
irinkaПриехали...
Дело в том, что явного события нажатия на пиктограмму нету, в этом первоначально и состоял вопрос (не могу найти событие нажатие на пиктограмму)
Может вы подскажите где оно? Нету такого события.
Можно создать свою кнопку "печать" и вызывать метод
CrystalReportViewer1.PrintReport по клику ней с запоминанием всего что хотите в БД.
...
Рейтинг: 0 / 0
28.12.2004, 18:09
    #32848533
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
Спасибо за содействие и за ссылку (она мне еще пригодится) :)
К сожалению склоняюсь к этому же решению (создать свою кнопку)
...
Рейтинг: 0 / 0
29.12.2004, 14:18
    #32849748
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
По клику кнопки вызовется диалоговое окно, где можно нажать ОК, а можно Отмена.
не могу сообразить как сделать проверку - что нажато, т е например как в таком варианте:
Код: plaintext
1.
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
а как для CrystalReportViewer1.PrintReport()?
...
Рейтинг: 0 / 0
29.12.2004, 14:24
    #32849770
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
/topic/127742&hl=dialogresult#1010101
И весь тот тред тоже полезен
...
Рейтинг: 0 / 0
11.01.2005, 14:14
    #32859139
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
Прошу прощения, возможно, за глупый вопрос, но я немного не поняла...
Еще раз... Есть кнопка Button1, на которой висит такой обработчик:
CrystalReportViewer1.PrintReport()
Нажав на эту кнопку появится диалогое окно "Печать"
Пользователь может нажать Ок (тогда по хорошему пойдет печать) и Отмена (тогда окно закроется)

Внимательно просмотрела ссылку про DialogResult.
Т е нажатие на кнопку ОК пользователем в окне "Печать" можно можно перехватить с посомощью Button1.DialogResult=DialogResult.OK? или как
...
Рейтинг: 0 / 0
11.01.2005, 14:39
    #32859217
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
irinkaПрошу прощения, возможно, за глупый вопрос, но я немного не поняла...
Еще раз... Есть кнопка Button1, на которой висит такой обработчик:
CrystalReportViewer1.PrintReport()
Нажав на эту кнопку появится диалогое окно "Печать"
Пользователь может нажать Ок (тогда по хорошему пойдет печать) и Отмена (тогда окно закроется)

Внимательно просмотрела ссылку про DialogResult.
Т е нажатие на кнопку ОК пользователем в окне "Печать" можно можно перехватить с посомощью Button1.DialogResult=DialogResult.OK? или как Я невнимательно прочел ваш предыдущий вопрос.
Мне кажется, что перехватить результат выбора из стандартного Print Dialog, показанного из метода PrintReport нельзя.
Т.е. вам придется предположить, что раз на вашу кнопку нажали, то попытка печати была.
...
Рейтинг: 0 / 0
11.01.2005, 14:43
    #32859233
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
Спасибо, понятно...
Получается тогда так:
1. либо как сказали Вы "Т.е. вам придется предположить, что раз на вашу кнопку нажали, то попытка печати была."
2. либо создать свое диалоговое окно с парамерами печати

Мда не густо... :(
...
Рейтинг: 0 / 0
11.01.2005, 14:51
    #32859265
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
irinkaСпасибо, понятно...
Получается тогда так:
1. либо как сказали Вы "Т.е. вам придется предположить, что раз на вашу кнопку нажали, то попытка печати была."
2. либо создать свое диалоговое окно с парамерами печати

Мда не густо... :( 2 - окно то вы сделаете, а печатать как ? Все равно придется вызвать метод PrintReport, который покажет стандартное окно.

PS: в "старых" версиях CR, в ActiveX контроле была возможность не показывать диалог печати, а печатать сразу на принтер по умолчанию. Здесь этого нет
...
Рейтинг: 0 / 0
02.02.2005, 17:07
    #32897654
baike2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Событие печати документа...
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Событие печати документа... / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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