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

VB.NET Discussion :

Impression de données, conversion VB6


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Impression de données, conversion VB6
    Bonjour,

    Je fait actuellement une conversion d'un projet VB6 vers le VB.net 2010

    Et je but sur l'impression de données.
    J'ai deja cherche mais je tombe toujours sur l'impression d'un document texte ou photo.

    En VB6 j'imprime les donnée que contient un Flexgrid. Dans ma conversion se sera un Datagirdview mais la n'est pas le problème.


    Voici le code VB6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    40
    41
    42
    43
    44
    45
    Private Sub cmdPrint_Click()
    Dim leftTab As Integer
    Dim indice As Integer
     
        Protocol.WaitEndSend  'Wait for end of transaction before opening cmdDialog
        MDIWin50.CommonDialog.CancelError = True
        MDIWin50.CommonDialog.Flags = cdlPDPrintSetup
        On Error GoTo ErrHandler
        MDIWin50.CommonDialog.DialogTitle = LoadPrgString(MSG_PRINT_HISTOFILE)
        MDIWin50.CommonDialog.ShowPrinter
        leftTab = 500
        If flxGridHistory.Rows <> 0 Then
          Printer.Print ("********************************************************")
          Printer.Print ("" & lblEditFrom.caption & "           " & txtEdited.caption & "           " & Now)
          Printer.Print ("********************************************************")
          Printer.Print ""
          Printer.Print ""
          Printer.Print (flxGridHistory.Rows - 1 & " alarms")
          Printer.Print ""
     
          Printer.Font.Bold = True
          For indice = 0 To flxGridHistory.Rows - 1
            If indice > 0 Then
              Printer.Font.Bold = False
            End If
     
            Printer.CurrentX = leftTab + 200
            Printer.Print flxGridHistory.TextMatrix(indice, 1);
            Printer.CurrentX = leftTab + 2000
            Printer.Print flxGridHistory.TextMatrix(indice, 2);
            Printer.CurrentX = leftTab + 3500
            Printer.Print flxGridHistory.TextMatrix(indice, 3);
            Printer.CurrentX = leftTab + 6000
            Printer.Print flxGridHistory.TextMatrix(indice, 5);
            Printer.Print ""
     
          Next
        End If
        Printer.EndDoc
        Exit Sub
     
    ErrHandler:
        Exit Sub
     
    End Sub
    J'ai vu que l'objet PrintDialog peux donc remplacer le CommonDialog
    Mais ensuite printer n'existe pas en .net.

    J'ai vu aussi sur certain tuto que l'on utilise un événement mais j'ai du mal a comprendre tous cela et surtout pour l'adapter à mon cas puisque l'on crée le document ligne par ligne.

    L’idéal pour que je puisse avoir une méthode portable serait que je face ma même chose mais en passant en paramètre une collection ou autre puis imprimer cette collection.

    Je pensais a créer un document texte temporaire puis l'imprimer et le supprimer, mais cela me semble d'un autre temps. Quoi que ce soit peut être la solution.

    Merci de votre aide

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    avec le printdocument tu peux avoir à peu près le même code

    instancier un printdocument, le paramétrer si nécessaire (imprimante à utiliser, taille de la page, marges ...)
    appeler .PrintDocument
    là un event se lève (printpage) et c'est dans cet évènement que tu as accès à e.Graphics, qui est une surface de dessin de la page actuelle (un peu comme printer dans ton code)

    sur e.graphics on peut dessiner ce qu'on veut
    e.Graphics.Drawstring pour écrire du texte
    e.Graphics.drawimage pour dessiner une image
    e.Graphics.drawrectangle, fillrectangle, drawellipse etc...
    le tout avec gestion des fonts, des couleurs et des brushes
    (graphics est une classe utilisée aussi bien à l'impression qu'à l'écran, on peut se créer un bouton qui fait un drawrectangle et un drawstring)

    il faut donc gérer x et y toi même

    à la sortie définitive (expliqué plus bas) de l'event la ou les pages sont envoyées à l'imprimante

    la seule chose un peu perturbante au début sur cet objet, c'est qu'il y a e.hasmorepages
    si tu mets true dedans avant la fin de l'event, l'event sera relevé dans la foulée, pour la page suivante
    ce serait donc à toi de gérer en plus sur quelle page tu es (ou sur quel index de collection)

    après tu peux faire une classe qui permet d'imprimer n'importe quelle collection en encapsulant le printdocument dedans
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Un gros merci Pol63 pour la piste, je vais tester cela dès que possible.

    Je suppose que pour paramétrer le printdocument on peut utiliser un printdialog?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    oui je crois que ca sert à ca
    (choix de l'imprimante en utilisant l'interface de windows, qui peut donc renvoyer sur l'interface des drivers pour le paramétrage du papier et autres)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Conversion de données en VB6
    Par obel38 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/01/2011, 15h28
  2. problème état formulaire impression de données
    Par jordinette dans le forum IHM
    Réponses: 2
    Dernier message: 23/11/2005, 14h33
  3. connection base de données avec VB6
    Par 24 faubourg dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/11/2005, 20h03
  4. [CR] Impression de données non issues d'une base de données
    Par jeroe dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 04/04/2005, 09h09
  5. Quick Report et impression de données hors BDD
    Par gRRosminet dans le forum C++Builder
    Réponses: 8
    Dernier message: 19/08/2002, 09h47

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