Страница: 1 |
Вопрос: Печать в VB 2005 | Добавлено: 01.03.06 17:21 |
Автор вопроса: ![]() |
Есть такой код. По нажатию cmdPrint перебираются имена файлов из листбокса и вызывается PrintPage для каждого файла...
Private Sub cmdPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrint.Click
With lstPrint Ind = 0 For a = 0 To .Items.Count - 1 If VB.Right(.Items(a), 1) = "П" Then PageSet.PageSettings.Landscape = False .Items(a) = VB.Left(.Items(a), Len(.Items(a)) - 5) Else PageSet.PageSettings.Landscape = True End If PrintDoc.Print() Ind = Ind + 1 Next .Items.Clear() End With End Sub Private Sub PrintDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDoc.PrintPage If PageSet.PageSettings.Landscape Then e.Graphics.DrawImage(System.Drawing.Image.FromFile(Path.curPath & lstPrint.Items(Ind)), 1, 1, 580, 825) e.Graphics.DrawImage(System.Drawing.Image.FromFile(Path.curPath & "п;" & lstPrint.Items(Ind)), 589, 1, 580, 825) Else e.Graphics.DrawImage(System.Drawing.Image.FromFile(Path.curPath & lstPrint.Items(Ind)), 1, 1, 820, 1160) End If End Sub Можно ли в PrintPage перебирать эти файлы? Я так делал но печатается не несколько страниц, а одна с последним файлом. Есть какой-то параметр HasMorePages который Boolen но я не пойму как его использовать. HELP!!! |
Ответы | Всего ответов: 3 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 01.03.06 17:40 |
PrintPage вызывается для каждой страницы в отдельности. Если у вас
многостраничный документ, то при обработке всех страниц кроме последней задавайте в обработчике PrintPage e.HasMorePages = True На последней странице соответственно укажите e.HasMorePages = False |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 219571279 Вопросов: 34 Ответов: 486 |
Профиль | Цитата | #2 | Добавлено: 01.03.06 18:39 |
Я так пробовал, но все равно печатается последняя страница. я ставил HasMorePeges в PrintPage где только можно придумать... Но...
Завтра, если не против, выложу сдесь код обработки в PrintPage, может че подскажите... |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 219571279 Вопросов: 34 Ответов: 486 |
Профиль | Цитата | #3 | Добавлено: 02.03.06 12:54 |
Тут цикл в PrintPage, но, блин, печатается первая страница и все.. И PageSet.PageSettings.Landscape = True не устанавливается перед e.Graphics.DrawImage...
Private Sub cmdPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrint.Click
PrintDoc.Print() lstPrint.Items.Clear() End Sub Private Sub PrintDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDoc.PrintPage With lstPrint For a = 0 To .Items.Count - 1 If a = .Items.Count - 1 Then e.HasMorePages = False Else e.HasMorePages = True End If If VB.Right(.Items ![]() PageSet.PageSettings.Landscape = False .Items ![]() ![]() ![]() e.Graphics.DrawImage(System.Drawing.Image.FromFile(Path.curPath & lstPrint.Items(Ind)), 1, 1, 820, 1160) Else PageSet.PageSettings.Landscape = True e.Graphics.DrawImage(System.Drawing.Image.FromFile(Path.curPath & lstPrint.Items(Ind)), 1, 1, 580, 825) e.Graphics.DrawImage(System.Drawing.Image.FromFile(Path.curPath & "п;" & lstPrint.Items(Ind)), 589, 1, 580, 825) End If Next End With End Sub |
Страница: 1 |
|