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 :

problème d'impression et procedure d'EDM.


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut problème d'impression et procedure d'EDM.
    Bonjour,

    je suis en VB.net avec vs2019.

    j'ai en fait un problème et une question, je commence par le problème.

    je voudrai imprimer deux voire 3 feuilles, j'utilise la commande e.hasmorepage = true, mais il lance des pages à n'en plus finir, et c'est toujours la première qui apparait sur toutes ....
    s
    je met le code

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
     
     
     
            e.Graphics.DrawString(Final_datas.lb_well_name.Text, Final_datas.lb_well_name.Font, Brushes.Black, 50, 50)
     
            e.Graphics.DrawString(Final_datas.Lb_date.Text, Final_datas.Lb_date.Font, Brushes.Black, 500, 50)
     
            e.Graphics.DrawString(Form1.Label19.Text, Form1.Label19.Font, Brushes.Black, 50, 55)
     
     
            e.Graphics.DrawString(Form1.Label1.Text, Form1.Label1.Font, Brushes.Black, 50, 100)
     
     
            e.Graphics.DrawString(Final_datas.Lab_pr_csg_size.Text, Final_datas.Lab_pr_csg_size.Font, Brushes.Black, 50, 150)
     
            e.Graphics.DrawString(Final_datas.Lab_pr_csg_weight.Text, Final_datas.Lab_pr_csg_weight.Font, Brushes.Black, 50, 175)
     
            e.Graphics.DrawString(Final_datas.Lab_pr_csg_shoe.Text, Final_datas.Lab_pr_csg_shoe.Font, Brushes.Black, 50, 200)
     
            e.Graphics.DrawString(Final_datas.Lab_pr_csg_int_capa.Text, Final_datas.Lab_pr_csg_int_capa.Font, Brushes.Black, 50, 225)
     
     
     
            e.Graphics.DrawString(Form1.Label2.Text, Form1.Label2.Font, Brushes.Black, 350, 100)
     
            e.Graphics.DrawString(Final_datas.Lab_csg_size.Text, Final_datas.Lab_csg_size.Font, Brushes.Black, 350, 150)
            e.Graphics.DrawString(Final_datas.Lab_csg_weight.Text, Final_datas.Lab_csg_weight.Font, Brushes.Black, 550, 150)
     
            e.Graphics.DrawString(Final_datas.Lab_csg_int_vol.Text, Final_datas.Lab_csg_int_vol.Font, Brushes.Black, 350, 175)
            e.Graphics.DrawString(Final_datas.Lab_csg_ext_vol.Text, Final_datas.Lab_csg_ext_vol.Font, Brushes.Black, 550, 175)
     
            e.Graphics.DrawString(Final_datas.Lab_csg_int_dia.Text, Final_datas.Lab_csg_int_dia.Font, Brushes.Black, 350, 200)
     
            e.Graphics.DrawString(Final_datas.Lab_collar_depth.Text, Final_datas.Lab_collar_depth.Font, Brushes.Black, 550, 225)
            e.Graphics.DrawString(Final_datas.Lab_shoe_depth.Text, Final_datas.Lab_shoe_depth.Font, Brushes.Black, 350, 225)
     
            e.Graphics.DrawString(Final_datas.Lab_shoe_track_lenght.Text, Final_datas.Lab_shoe_track_lenght.Font, Brushes.Black, 50, 250)
     
            e.Graphics.DrawString(Form1.Label3.Text, Form1.Label3.Font, Brushes.Black, 50, 475)
     
            e.Graphics.DrawString(Final_datas.lb_int_vol_OH.Text, Final_datas.lb_int_vol_OH.Font, Brushes.Black, 50, 525)
            e.Graphics.DrawString(Final_datas.Lb_TD_MD.Text, Final_datas.Lb_TD_MD.Font, Brushes.Black, 50, 550)
            e.Graphics.DrawString(Final_datas.Lb_TD_TVD.Text, Final_datas.Lb_TD_TVD.Font, Brushes.Black, 50, 575)
            e.Graphics.DrawString(Final_datas.Lb_lg_OH.Text, Final_datas.Lb_lg_OH.Font, Brushes.Black, 50, 600)
     
            e.Graphics.DrawString(Form1.Label4.Text, Form1.Label4.Font, Brushes.Black, 50, 650)
     
            e.Graphics.DrawString(Final_datas.Lb_vol_lead.Text, Final_datas.Lb_vol_lead.Font, Brushes.Black, 50, 700)
            e.Graphics.DrawString(Form1.Label7.Text & " " & My.Settings.excess_lead & Form1.Label9.Text, Form1.Label7.Font, Brushes.Black, 400, 700)
            e.Graphics.DrawString(Final_datas.Lb_vol_excess_lead.Text, Final_datas.Lb_vol_excess_lead.Font, Brushes.Black, 200, 725)
     
            e.Graphics.DrawString(Final_datas.Lb_vol_tail.Text, Final_datas.Lb_vol_tail.Font, Brushes.Black, 50, 750)
            e.Graphics.DrawString(Form1.Label8.Text & " " & My.Settings.excess_tail & Form1.Label9.Text, Form1.Label8.Font, Brushes.Black, 400, 750)
            e.Graphics.DrawString(Final_datas.Lb_vol_excess_tail.Text, Final_datas.Lb_vol_excess_tail.Font, Brushes.Black, 200, 775)
     
     
            e.Graphics.DrawString(Final_datas.Lab_vol_shoe_track.Text, Final_datas.Lab_vol_shoe_track.Font, Brushes.Black, 50, 850)
            e.Graphics.DrawString(Final_datas.Lab_half_ST.Text, Final_datas.Lab_half_ST.Font, Brushes.Black, 350, 850)
     
            e.Graphics.DrawString(Final_datas.lab_vol_int_csg_to_fc.Text, Final_datas.Font, Brushes.Black, 50, 875)
            e.Graphics.DrawString(Final_datas.Lab_str_displ.Text, Final_datas.Lab_str_displ.Font, Brushes.Black, 50, 900)
     
            e.Graphics.DrawString(Final_datas.Lb_diplac_max.Text, Final_datas.Lb_diplac_max.Font, Brushes.Black, 50, 950)
            e.Graphics.DrawString(Final_datas.Lab_str_displ_max.Text, Final_datas.Lab_str_displ_max.Font, Brushes.Black, 50, 975)
     
     
            e.HasMorePages = True
     
     
            e.Graphics.DrawImage(My.Resources.bouton1, 50, 100)
     
     
        End Sub
    ensuite la question, j'envoi sur une form qui recapitule les datas, des affichages de label avec le texte et les datas, ce qui me permet de reprendre le label pour l'impression, le texte est déja présent, mais j'aurai aimé avoir le texte en style classique et le data en rouge et gras ?

    exemple de code ci dessus,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Tb_excess_lead_TextChanged(sender As Object, e As EventArgs) Handles Tb_excess_lead.TextChanged
     
            Try
                My.Settings.excess_lead = Tb_excess_lead.Text
            Catch ex As Exception When Tb_excess_lead.Text = ""
                Tb_excess_lead.Text = 0
            End Try
     
     
            My.Settings.vol_lead_exc = My.Settings.vol_lead + (My.Settings.vol_lead * (My.Settings.excess_lead / 100))
     
            Final_datas.Lb_vol_excess_lead.Text = "Vol. Lead Slurry with " & My.Settings.excess_lead & " % excess = " & Math.Round(My.Settings.vol_lead + (My.Settings.vol_lead * (My.Settings.excess_lead / 100)), 2) & " m³"
        End Sub
    voyez la dernière ligne de code envoi dans la form final_datas, le label vol_excess_lead.text avec sa définition complète, j'aurai aimé avoir la partie texte entre les "" en standard et les datas de my.settings.excess_lead en rouge et gras.

    c'est pour cela que mon titre est EDM (en...r de mouche)

    merci de votre aide

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonsoir,

    Je crois que tu devrais calculer l'espace que tu occupes sur une page, par rapport à ses dimensions, et utiliser HasMorePage comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ' En supposant que tu détermines la variable Fini en fonction du résultat du calcul que j'évoque ci-dessus
    If Fini Then
      HasMorePage = False
    Else 
      HasMorePage = True
    End If
    Voici, une procédure PrintPage qui envoie à l'imprimante le contenu d'un fichier TXT et contrôle de l'espace utilisé :

    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
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As  System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
      Dim Ligne As String
      Dim Position As System.Drawing.PointF
      Dim Rectangle As RectangleF	
      Dim Police As Font
      Dim HauteurLigne As Single
      Dim NbrLignesParPage As Integer
      Dim NumLigne As Integer = 0 			' Comptage des lignes imprimées
    ' Dans cet exemple, toutes les lignes utilisent la même police
      Police = New Font("Courier New", 10, FontStyle.Bold)
      HauteurLigne = Police.GetHeight(e.Graphics)
    ' Nombre de lignes par page est la hauteur de la zone imprimable divisée par la hauteur d'une ligne 
      NbrLignesParPage = e.MarginBounds.Height / HauteurLigne
     
      Do Until MonDoc.Peek = -1				' Lire le contenu du fichier ligne par ligne
        Ligne = MonDoc.ReadLine()				 
     
        Position = New PointF(e.MarginBounds.Left, e.MarginBounds.Top +  (NumLigne * HauteurLigne)) ' et calculer la position de la ligne à imprimer
     
        		' Définir les coordonnées de la zone  dans laquelle la ligne sera imprimée  avec la position calculée et sa taille
        Rectangle.Location = Position    		
        Rectangle.Width = e.MarginBounds.Width	' Récupérer la largeur entre marges
        Rectangle.Height = HauteurLigne			' et utiliser la hauteur de ligne
     
        e.Graphics.DrawString(Ligne, Police, Brushes.Black, Rectangle)
     
        NumLigne += 1 					' Incrémenter le compteur de lignes
        If NumLigne > NbrLignesParPage Then Exit Do	' et vérifier si on est en fin de page
      Loop
     
      If MonDoc.Peek <> -1 Then 				' Relancer l'impression de la page suivante si fichier as terminé
        e.HasMorePages = True				
      Else
        MonDoc.Close()
        MonDoc = New StreamReader(TDocument.Text) 	' En prévisualisation, cette procédure est exécutée une première fois pour l’affichage et il faut rouvrir le fichier pour 
      End If 							' 
    End Sub							'
    J'espère que ceci t'aidera ...

  3. #3
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut
    merci je vais essayer ca, je te tiens au courant, si je m'en sors, et aussi si je ne m'en sors pas

  4. #4
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut
    bon, je bute, j'ai repris ton exemple, mais d'après ce que je comprend, MonDoc doit etre un fichier texte ?, j'ai essayé d'ajouter une form dans laquelle j'ai mis une richtextbox, ancré au centre, dans laquelle j'ai mis des datas sous forme de label, ensuite j'ai remplacé MonDoc par le nom de ma form.label, et il ne comprend pas !

    Je pense qu'il faudrait que je crée un fichier text mais comment ?

    Merci

  5. #5
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Voici comment utiliser Word comme « générateur » de rapport. J’ai presque tout traduit de la version espagnole mais pas le document de base (DocPrimero.docx) pour l’exécution du programme (parce que je ne voulais pas refaire les vidéos).
    Toutefois, j’ai placé un doc de base (DocPrimeroTraduit.docx) avec les textes traduits en rouge que je te propose d’avoir sous les yeux lorsque tu regarderas la vidéo MettreDesChampsEtDesTables.mp4.

    Pour le reste, j’ai traduit les éléments du code qui étaient nommés en espagnol et tous les commentaires explicatifs.

    Je te propose de regarder d’abord les vidéos avant de lire le code :
    1. AjouterReferenceWord.mp4 (je suppose que tu connais déjà)
    2. MettreDesChampsEtDesTables.mp4 (si tu as un(e) spécialiste Word "sous la main", ça peut aider)
    3. Execution.mp4
    Ces 3 vidéos sont compressées dans le fichier : https://www.dropbox.com/s/ncs3um0ldb...Video.zip?dl=0

    Dans le code (Impresion_VB_Word_FR.zip) tu verras comment accéder aux différentes zones du document Word pour y placer tes données. Pour l’exemple du programme, ce sont les valeurs d’un DataGridView qui remplissent le formulaire Word. Dans ton programme, ce sera les valeurs de la table TableAImprimer(…).Texte qui rempliront le doc mais là, tu ne devras plus te soucier de la mise en page et des sauts de page, tout aura été réglé dans le doc de base.

    Je te souhaite beaucoup de satisfactions avec ce nouvel outil …

  6. #6
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut
    hola, tu as fais un boulot de titan !!!!, va falloir maintenant que je digère et surtout que je comprenne tout !, ca risque de prendre du temps, donc si tu n'as plus de nouvelles pendant 2 ou 3 jours c'est que je m'arracherai les cheveux !.

    Oserai je demander.....

    je suis un fan de fly simulateur, et bidouille assez bien en électronique (c'est mes études d'origine, même si je n'ai jamais pratiqué après, étant parti dans le pétrole), j'ai dans l'idée de faire un simulateur physique, avec des modules Ardino et des servos moteur de modélisme, ca te parle ?

  7. #7
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Encore moi ...

    T'envoyer l'illustration de mes lignes de codes d'essais est bien, mais t'envoyer les codes est mieux :

    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
     
            ''*** EXEMPLE POUR 1 LIGNE ****
            'TableAImprimer(2).Texte = "~LIGNE~Red~2~50~50~50~200"  ' ~NomCouleur~Epaisseur~X1~Y1~X2~Y2
            'TableAImprimer(2).Police = Nothing
            'TableAImprimer(2).Valeur_X_Rect = Nothing
            'TableAImprimer(2).Valeur_Y_RelativePrec = Nothing
     
            ''*** EXEMPLE POUR 1 IMAGE ****  
            ' Attention, le dossier Resources est copié dans le dossier d'exécution du programme
            ' c'est-à-dire dans le dossier .....\Bin\Debug pendant les mises au points, puis c'est selon l'installation
            'TableAImprimer(2).Texte = "~IMAGE~Resources\Bouton1.jpg~50~100"  ' ~Nom_et_Chemin_Du_FichierImage~X~Y
            'TableAImprimer(2).Police = Nothing
            'TableAImprimer(2).Valeur_X_Rect = Nothing
            'TableAImprimer(2).Valeur_Y_RelativePrec = Nothing
     
            ''*** EXEMPLE POUR NE RIEN FAIRE ****  Espace réservé dans la table pour utilisation future
            'TableAImprimer(2).Texte = "~~~~~~"  ' Rien à faire
            'TableAImprimer(2).Police = Nothing
            'TableAImprimer(2).Valeur_X_Rect = Nothing
            'TableAImprimer(2).Valeur_Y_RelativePrec = Nothing
    Bonne nuit

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Oui, dans mon exemple il s'agit d'un fichier TXT lu ligne par ligne, chaque ligne étant envoyée à l'imprimante, jusqu'à fin de fichier.
    Si, tu utilises une RichTextBox, tu dois la lire aussi ligne par ligne, en envoyant chaque ligne à l'imprimante, jusqu'à la fin des lignes

    Mais le principal principe à mettre en œuvre, compte tenu de ta question initiale, c'est de connaître le nombre de lignes que tu peux mettre sur une page et de compter les lignes effectivement envoyées à l'imprimante. Et c'est en fonction de cela que tu dois placer HasMorePage à True ou à False.

    J'ai d'autres exemples d'impression, éventuellement avec création d'un fichier TXT, mais aucun ne sera la réponse exacte pour TON projet.

    Ci-joint, une projet de test d'impression de différentes zones de texte, avec passage par un fichier intermédiaire de type TXT. L'exemple est écrit en espagnol mais seuls les commentaires explicatifs peuvent éventuellement te poser problèmes : pense à Google (Translator).

    Je ne reprendrai pas le forum avant 16h, j'espère que tu pourras te dépanner jusque là.


    ImpresionES.zip

  9. #9
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut
    Oui c'est ce que j'ai fais avec le richtextbox, mais peek, streamreader et readline, ne sont pas des membres de richtextbox ...

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Pour Word, c'est pas si compliqué. Je te conseil de t'en tenir aux tableaux. Tu y places les libellés et tu les mets en forme. Dans VB, tu te contentes de remplir les cellules avec les valeurs, aux indices que tu connais (1 à n pour les lignes et 1 à n pour les colonnes).

    Pour les modules Ardino, j'ai entendu parler mais je ne connait rien à leur programmation, même jamais vu une ligne de code, sûr il suffit de me renseigner mais je ne suis pas trop intéressé (faudrait que ce soit vraiment très simple, ou que ça puisse se programmer en VB ).

    A bientôt ...

  11. #11
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut
    Arduino c'est en C++, ou je bidouille encore moins bien qu'en vb

  12. #12
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je ne pensais pas que tu utilisais une RichTextBox sans savoir comment accéder à ses lignes ...

    Sérieusement, je t'ai préparé un exemple adapté à "ta" RichTextBox, je joins le projet : ImpressionRichTextBoxOK.zip

    Mais avant de lancer ce programme, regarde cette video pour savoir comment l'utiliser : https://www.dropbox.com/s/9369ao9sjp...xtBox.mp4?dl=0


    Bon amusement,


  13. #13
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut
    Merci, je vais essayer, la richboxtext c'etait pour essayer ton programme qui parlait de doc.text !, sinon je fais .....bien plus compliqué

    pour l'impression j'ai crée une form avec une richtextbox dedans mais qui ne me sert pas, puisque je met toutes mes lignes de code dans la form de code ....

  14. #14
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut
    bon j'ai regardé la vidéo et regardé fichier et je l'ai lancé, j'ai en majorité compris, mais c'est pas tout a fait ça que je cherche, comme je te disais la richtextbox je n'y touche pas, elle est la pour me servir de support, je ne met rien dedans, je vais t'envoyer le programme complet c'est surement pas écrit de façon académique, mais c'est pas mon métier, et je fais ça pour m'amuser, alors soit indulgent
    dans le program dans toutes les formes il y a un bouton "import data" utilise le, sinon comme le programme est assez spécifique tu risques d’être un peu perdu.
    bon le zip fais 2.5 Mo et le max c'est 2 Mo, alors comment faire ?

  15. #15
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Oui, en parcourant quelques sites, je vois ...
    Je dirai que c'est un langage Arduino, qui utilise les mots clés Arduino, les instructions de contrôle C/C++ et la syntaxe C/C++.
    Pour ce qui est des aspects C/C++, je connais .
    Pour ce qui est des "outils" Arduino, c'est autre chose ...
    J'ai lu une leçon d'introduction (je t'envoie le lien par message privé), jusque là c'est cool ...

    Il y a aussi un forum sur ce site : https://arduino.developpez.com/

  16. #16
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut
    c'est assez simple, enfin quand on fait des choses simple, j'arrive sans trop de pbs a jouer avec des Leds, un peu comme je veux (chenillard, stromboscope, etc) j'ai fais qqles montages, allumage de lampes en fonction de la luminosité, déclenchement de relais à distance, allumages de series de leds de façon aléatoire et a vitesse progressive et aleatoire( j'ai galéré !) pilotage de servos moteurs depuis des potentiometres, mais tout ca reste basique.

    il faut maintenant que je le pilote depuis le pc en USB, et après récupérer les valeurs FS (avec le SDK) et les transformer, bagatelle, tu vois .....

  17. #17
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    Pour information, il existe un forum Arduino sur DVP
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  18. #18
    Membre confirmé
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 123
    Par défaut
    Bon je crois que je vais laisser tomber, et en rester ou je suis, j'arrive pas avec word, je galère, je m’énerve et je vais te saouler !.

    J'arrive même pas a faire le rapprochement entre ton fichier sur la vidéo et le fichier impression que tu m'as envoyé, c'est dire !!!

    enfin merci d'avoir essayé!

  19. #19
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    ...

    Dépose donc ton zip sur un site comme Dropbox ou SkyDrive ou autre (comme j'ai fait avec la video) et envoie-moi le lien pour que je télécharge, tu peux faire un message privé pour cela.

    Je devrais avoir un peu de temps demain après-midi, je ne te promets rien quand au résultat : je te rappelle que ta question initiale était ± "comment ne pas faire de sauts de pages inutiles". Sur ce point, je pense t'avoir donné les moyens nécessaires.

    Bonne nuit,


  20. #20
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Un petit imprévu m’a permis d’examiner ton problème plus tôt qu’annoncé.

    Dans final_datas.vb, j’ai ajouté un PrintDialog pour pouvoir sélectionner une imprimante, cela me permet notamment de faire des essais vers un fichier pdf plutôt que de gaspiller du papier sur l’imprimante. Tu pourras toujours l’enlever si le choix de l’imprimante n’est pas une option de ton programme. Tu vois le résultat de cet ajout sur l’illustration ci-dessous et voici le code qui en découle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Private Sub PrintToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PrintToolStripMenuItem.Click
            '' Ne pas faire ===>     Call impression.PrintDocument1.Print()   **** c'est fait par PrintPreviewDialog
        End Sub
     
        Private Sub PrintPreviewToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PrintPreviewToolStripMenuItem.Click
            impression.PrintPreviewDialog1.ShowDialog()
        End Sub
     
        Private Sub PrinteSelectionToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PrinteSelectionToolStripMenuItem.Click
            impression.PrintDialog1.ShowDialog()
        End Sub
    Bien sûr, ma tentative de réponse à ton problème d’impression se trouve dans impression.vb, dans la procédure PrintDocument1_PrintPage(… ).
    Je ne suis intervenu que sur les 2 premières lignes d’impression (e.Graphics.DrawString( … ), comme mis en évidence sur la vidéo suivante où je te montre l’effet de mes codes : https://www.dropbox.com/s/jylobdk52m...rimer.mp4?dl=0

    Voici mes codes :
    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
       Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
            Dim Ligne As String
            Dim Position As System.Drawing.PointF
            Dim Rectangle As RectangleF
            Dim Police As Font
            Dim HauteurLigne As Single
     
            Police = Final_datas.lb_well_name.Font
            HauteurLigne = Police.GetHeight(e.Graphics)
            Ligne = Final_datas.lb_well_name.Text
            Position = New PointF(50, 50)          '''' Ceci correspond aux valeurs Left et Top que tu utilises
            Rectangle.Location = Position
     
            If Position.Y + HauteurLigne > e.MarginBounds.Height Then
                e.HasMorePages = True
                Exit Sub
            Else
                e.HasMorePages = False
            End If
            e.Graphics.DrawString(Ligne, Police, Brushes.Black, Rectangle)
     
            Police = Final_datas.Lb_date.Font
            HauteurLigne = Police.GetHeight(e.Graphics)
            Ligne = Final_datas.Lb_date.Text
            Position = New PointF(500, 50)          '''' Ceci correspond aux valeurs Left et Top que tu utilises
            Rectangle.Location = Position
     
            If Position.Y + HauteurLigne > e.MarginBounds.Height Then
                e.HasMorePages = True
                Exit Sub
            Else
                e.HasMorePages = False
            End If
            e.Graphics.DrawString(Ligne, Police, Brushes.Black, Rectangle)
     
            ' ....................  à continuer ......................
    A toi de reproduire le même mécanisme pour chaque impression que tu souhaites. Tout fonctionnera impeccablement tant que tu ne produis pas de saut de page. Lorsque se produira un saut de page, les positions Top de tes zones d’impression devront être « remises à 0 ». Comprends bien que si tu demandes une impression en position 1000 (par exemple) et que cela produit un saut de page, tu dois remettre ta zone d’impression en haut de la nouvelle page. Il faut dire que ton approche de « reproduction sur papier » (ou presque) de l'écran, ne facilite guère la gestion des sauts de pages. Mais d’un autre côté, puisque tu es capable de calculer la position que chaque zone sur la page, tu dois pouvoir aussi calculer quand tu veux passer à la page et où imprimer dans ce cas.

    Tu dois encore savoir que le code suivant relance la PrintDocument1_PrintPage(… ). A toi de savoir que faire lorsqu’elle s’exécute une 2ème, une 3ème, … fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                e.HasMorePages = True
                Exit Sub

    Bon travail, je retourne aux occupations que j'ai différées ...

    J'allais oublier l'illustration ...
    Nom : Pierrelec01.jpg
Affichages : 299
Taille : 201,1 Ko

Discussions similaires

  1. problème d'impression
    Par davedenice dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 28/07/2005, 16h57
  2. [PowerBuilder] Problème d'impression datawindow composite
    Par jpdar dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 17/05/2005, 13h33
  3. Réponses: 16
    Dernier message: 17/03/2005, 13h54
  4. [Rave] problème d'impression
    Par romstarr dans le forum Rave
    Réponses: 2
    Dernier message: 09/06/2004, 15h48
  5. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37

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