IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VS 2005] PrintDocument et saut de page


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut [VS 2005] PrintDocument et saut de page
    Bonjour !
    Ayant fait une recherche sur le titre de mon topic et n'ayant rien trouvé, je me permets de vous poser la question :
    En me référant au tuto de Bidou sur l'impression via printDocument, j'ai tenté de réaliser des sauts de page : big plouffff
    Je me suis lancée dans un "bête" petit code imprimant des chiffres de 1 à 100 voulant comprendre cette drôle de bête "impressionnante".
    Voici le code qui m'imprime bien les chiffres mais, ne passe pas à la page : (Il imprime de 1 à 62 puis écrase le 1 par 63 en réécrivant sur la même page)
    Private Sub PrintDocument2_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument2.PrintPage
    Dim LigneParPage As Integer = 0
    Dim YPos As Single = 0
    Dim Cmpt As Integer = 0
    Dim ae As Integer = 0
    Dim MargeG As Single = e.MarginBounds.Left
    Dim MargeH As Single = e.MarginBounds.Top
    Dim LigneEncours As String = Nothing
    Dim Police As New Font("Arial", 11)
    Dim Interligne As Single = Police.GetHeight(e.Graphics)

    LigneParPage = e.MarginBounds.Height / Interligne

    While ae < 100
    While Cmpt < LigneParPage
    ae += 1

    LigneEncours = ae.ToString
    YPos = MargeH + Cmpt * Interligne
    e.Graphics.DrawString(LigneEncours, Police, Brushes.Black, MargeG, YPos, New StringFormat())
    Cmpt += 1
    If ae = 100 Then
    Exit While
    End If

    End While
    Cmpt = 0
    If ae < 100 Then
    e.HasMorePages = True
    Else
    e.HasMorePages = False
    End If

    End While
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim valMarge As Integer = Printing.PrinterUnitConvert.Convert(100, PrinterUnit.TenthsOfAMillimeter, PrinterUnit.Display)

    With Me.PrintDocument2.DefaultPageSettings
    .Landscape = False
    .Color = False
    .Margins = New Printing.Margins(valMarge, valMarge, valMarge, valMarge)

    End With

    Me.PrintPreviewDialog2.ShowDialog()
    End Sub
    Qu'est-ce que j'ai fait de mal, Bidou et Ms me donnant le même code mais sans résultats

    Merci à vous tous

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Essaie de remplacer tes deux while imbriqués par un seul while avec une double condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While ae < 100 And Cmpt < LigneParPage
    Il faudra donc que ae soit un attribut de la classe et non plus une variable locale.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Au risque de te décevoir, je ne pense pas que ce soit l'origine du problème. Nous avons (mon mari et moi) testé ce code sous différents aspects depuis presque 15 jours maintenant en cherchant sur msdn et autres mais absolument sans aucun succès !
    En dernier recours, nous en appelons aux compétences des habitués de dvp !

    En résumé : le saut de page ne se fait pas quelque soit la config du code !

    Help Bidou (et consors)

  4. #4
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Serait-il possible que ces ennuis soient liés au fait que c'est un preview et non une impression réelle ?

    Y aurait-il un bug dans mon VS ? J'ai retapé tout le code du tuto de Bidou et, même phénomène, pas de saut de pages

    Auriez-vous des idées ? (cela devient assez urgent au niveau de mon échéance )

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu pourras dire ce que tu veux, je reste persuadé que ta logique est fausse. Je détaille le raisonnement :
    1. ae est une variable locale
    2. Tu sais que 100 éléments ne rentreront jamais dans une seule page.
    3. Tu sais que l'événement PrintPage est déclenché pour chaque page.
    4. Tu sais que pour savoir quoi imprimer sur une page, tu dois savoir où tu en étais à la fin de la dernière.
    5. Pour savoir où tu en étais, il faut obligatoirement un attribut dans ta classe qui stocke cette valeur.

    Pour reprendre ton code, tu essaie d'imprimer sur UNE seule page tous les éléments, donc tu reviens forcément au début de la page pour afficher les derniers.

    En réponse à :
    je ne pense pas que ce soit l'origine du problème
    Je ne te force pas à me croire, mais si tu demandes de l'aide ici, je pense que tu pourrais au moins accorder le bénéfice du doute à ceux qui te répondent.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Oui, je te comprends, tu as raison. Ce qui m'inquiète, c'est que le code dans le tuto de Bidou est forcément OK et qu'il ne veut pas fonctionner.
    Bon, je vais suivre évidemment ton conseil et refaire un code logique pour mon exemple des chiffres de 1 à 100. Sait-on jamais qu'un miracle se produise !
    En tous les cas, merci et désolée si j'ai paru abrupte, ce n'était pas du tout mon intention

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] convertir 0x0c en saut de page ?
    Par narmataru dans le forum Langage
    Réponses: 5
    Dernier message: 26/01/2005, 16h41
  2. [Rave Report] les sauts de page
    Par Isa31 dans le forum Rave
    Réponses: 4
    Dernier message: 14/10/2004, 18h51
  3. [VBA] Saut de page...
    Par _Maniak dans le forum Général VBA
    Réponses: 5
    Dernier message: 24/09/2004, 15h26
  4. Réponses: 7
    Dernier message: 05/12/2003, 10h14
  5. [Delphi6] Saut de page
    Par Seb328Ci dans le forum QuickReport
    Réponses: 1
    Dernier message: 02/10/2003, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo