ESCOLHER PAGINAS NO PRINTPREVIEW

DAMASCENO.CESAR 13/05/2016 11:24:59
#462052
Bom dia, crio relatorios com o draw print normalmente, modelo-os da forma que quero, abro para visualização. altero impressora, altero o botao imprmir para escolher impressora no print preview, até aí, tudo normal e sem dúvidas.
Mas quando tento escolher quais páginas imprimir, não consigo imprimir apenas o intervalo selecionado, só imprimo o relatório inteiro, já tentei alterar de diversas maneiras o código abaixo que é do botão imprimir do print preview e não adianta, ele passa os valores do inicio e do fim da impressão, mas imprime todas as páginas

  Private Sub MeuClick2(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
If e.ClickedItem.Text = [Ô]Imprimir[Ô] Then
Dim PrintD As New PrintDialog
PrintD.AllowSomePages = True [ô]libera para escolher quais páginas
PrintD.PrinterSettings.MinimumPage = 1
PrintD.PrinterSettings.MaximumPage = PaginaAtual [ô] aqui vai o total de páginas
PrintD.Document = pd
If PrintD.ShowDialog() = Windows.Forms.DialogResult.OK Then
pd.PrinterSettings = PrintD.PrinterSettings
pd.Print()
End If
End If
End Sub


Já pesquisei na net e aqui no site e não achei nada, só informam que FromPage é onde inicia a impressão e ToPage onde termina, seto esses valores
corretamente tanto que retornam os valores mas não consigo passá-los para a impressão.
Se alguém souber como me ajudar
DAMASCENO.CESAR 13/05/2016 16:03:16
#462059
na gambiarra funciona assim:

  Private Sub MeuClick2(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
If e.ClickedItem.Text = [Ô]Imprimir[Ô] Then
Dim PrintD As New PrintDialog
PrintD.AllowSomePages = True
PrintD.PrinterSettings.MinimumPage = 1
PrintD.PrinterSettings.MaximumPage = PaginaAtual
PrintD.Document = pd
If PrintD.ShowDialog() = Windows.Forms.DialogResult.OK Then
PgIni = PrintD.PrinterSettings.FromPage
PgFim = PrintD.PrinterSettings.ToPage
If PgIni = Nothing Or PgFim = Nothing Then
PrintD.Document.Print()
Else
ImpPgEsc()
End If
End If
End If
End Sub


aí vem isso:

  While (LinhaAtual < LinhasPorPagina AndAlso LinhaTabela < TbG.Count)
If PgFim < PaginaAtual Then
LinhaTabela = TbG.Count + 1
e.HasMorePages = False
Exit While
Exit Sub
End If
If PgIni > PaginaAtual Then
[ô]LinhaAtual += LinhasPorPagina
LinhaTabela += (LinhasPorPagina - LinhaAtual)
PaginaAtual += 1

Else
pNome = TbG.Item(LinhaTabela).Texto1
pMatricula = TbG.Item(LinhaTabela).Num1
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
Qtde += 1
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, PosicaoDaLinha, MargemDireita + 10, PosicaoDaLinha)
e.Graphics.DrawString(UCase(pNome), FonteNormal, Brushes.Black, MargemEsquerda + 2, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(FormatNumber(pMatricula, 0), FonteNormal, Brushes.Black, MargemEsquerda + 557, PosicaoDaLinha, format3)
e.Graphics.DrawString(TbG.Item(LinhaTabela).Data1, FonteNormal, Brushes.Black, MargemEsquerda + 562, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(TbG.Item(LinhaTabela).Texto2, FonteNormal, Brushes.Black, MargemEsquerda + 652, PosicaoDaLinha, New StringFormat())

e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, PosicaoDaLinha, MargemEsquerda, PosicaoDaLinha + 17) [ô]linha matr
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda + 480, PosicaoDaLinha, MargemEsquerda + 480, PosicaoDaLinha + 17) [ô]linha nome
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda + 560, PosicaoDaLinha, MargemEsquerda + 560, PosicaoDaLinha + 17) [ô]linha inclusao
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda + 650, PosicaoDaLinha, MargemEsquerda + 650, PosicaoDaLinha + 17) [ô]linha prodece
e.Graphics.DrawLine(CanetaDaImpressora, MargemDireita + 10, PosicaoDaLinha, MargemDireita + 10, PosicaoDaLinha + 17) [ô]linha fecha
LinhaAtual += 1
LinhaTabela += 1
End If
End While
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, PosicaoDaLinha + 17, MargemDireita + 10, PosicaoDaLinha + 17)
[ô]*****************************
[ô]Imprime assinatura
[ô]*****************************
[ô] PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)
e.Graphics.DrawString([Ô]Usuário: [Ô] & UsaLogon, FonteNormal, Brushes.Black, MargemEsquerda, MargemInferior, New StringFormat())
e.Graphics.DrawString(Format(Today, [Ô]dd/MM/yyyy[Ô]), FonteNormal, Brushes.Black, MargemEsquerda + 500, MargemInferior, New StringFormat())
e.Graphics.DrawString([Ô]Pág.[Ô] & PaginaAtual, FonteNormal, Brushes.Black, MargemDireita, MargemInferior, New StringFormat())
PaginaAtual += 1
If PgFim < PaginaAtual Then
LinhaTabela = TbG.Count + 1
e.HasMorePages = False
Exit Sub
End If


pra quem tiver o mesmo problema que eu e nao resolveu, vai a dica da gambi

vou deixar o tópico aberto até segunda, pra ver se alguem tem uma solução correta
DAMASCENO.CESAR 17/05/2016 13:07:00
#462182
Bom pessoal, vou encerrando o tópico e já que não encontrei outra solução, vou manter essa mesma
Tópico encerrado , respostas não são mais permitidas