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

C# Discussion :

Ticket de caisse c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut Ticket de caisse c#
    Re bonjour à tous,

    Oui oui je vous embète encore et toujours . Aujourd'hui mon problème concerne l'impression des tickets. Plusieurs solution sont offertes à moi. Utiliser crystal report. Mais j'ai vite oublier cette solution, en concluant que c'était un peu trop lourd pour simplement imprimer des tickets de caisse.

    Donc je me suis reporté vers la solution du printdialog. Le soucis que j'ai : Je ne vois vraiment pas comment faire pour lui dire que j'ai une largeur ( par exemple 5, 71 cm) mais une longueur indéfini. J'ai checker a droite à gauche sur le net, mais je sents que je vais devenir chèvre lol.

    En gros pour l'instant mon code ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     doc.PrintPage += this.Doc_PrintPage;
     
                PrintDialog dlgSettings = new PrintDialog();
                dlgSettings.Document = doc;
     
                doc.OriginAtMargins = true;
                doc.QueryPageSettings += new QueryPageSettingsEventHandler(prDoc_QueryPageSettings);
                doc.EndPrint += new PrintEventHandler(this.prDoc_EndPrint);
                printPreviewDialog1.Document = doc;
                printPreviewDialog1.ShowDialog();

    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
     
    private void Doc_PrintPage(object sender, PrintPageEventArgs e)
            {
                Font font = new Font("Arial", 12);
                int height = 0;
                float x = e.MarginBounds.Left;
                int nombreart= 0;
     
                bool flagpage = false;
                e.Graphics.DrawString("Votre café du coin", font, Brushes.Black, x, height);
     
                Commande com = new Commande();
                Commandes_Service com_serv = new Commandes_Service();
                com = com_serv.getcommandesbyidtable(new Guid(cmb_tables.SelectedValue.ToString()));
     
     
                List<Article_Commande> art_com = new List<Article_Commande>();
                art_com = com_serv.get_article_commandes(com.Id_Commande);
     
               foreach(Article_Commande art_commande in art_com)
                {
                    Article arts = new Article();
                    ArticleService article_serv = new ArticleService();
     
                    arts= article_serv.getarticlebyid(art_commande.Article_Id.Id_Article);
                    height += 20;
                    e.Graphics.DrawString(arts.Nom_Article, font, Brushes.Black, x, height);
                    e.Graphics.DrawString(arts.Prix_Vente_Article.ToString(), font, Brushes.Black, e.MarginBounds.Left+300, height);
     
                    nombreart +=1;
                    if (height + 20 > e.MarginBounds.Height) flagpage = true;
                    if (flagpage == false)
                    { e.HasMorePages = false;}
                    else
                    {
                        e.HasMorePages = true;
                    this._currentPrintPage++;
                    height = 0;
                    flagpage = false;
                    if (this._maxPage < this._currentPrintPage) this._maxPage = this._currentPrintPage;
                    }
                }
     
            }
    J'ai déja un soucis pour passer a une page suivante il le faits pas et pourtant il passe bien dans ma boucle du flag. Quelqu'un aurait-il une idée, plus d'informations concernant les impressions en ticket de caisse.

    Dois-je fait configurer mon paperkind avec une taille ? si oui laquelle. Est-ce que quand le driver de l'imprimante est installer va-t-il le faire automatiquement? En gros je suis paumé et je nage sur la vague de mon code.

    Un grand merci à vous.

    IoIo

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    En déterminant dès le départ la taille du ticket à imprimer, on devrait pouvoir ajuster le PaperSize ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int PrintDocWidth=800 ; // suivant largeur du ruban 
    int PrintDocHeight= ... ; // calcul de hauteur du ticket
    // après la création du printDocument
    PaperSize paperSize = new PaperSize("Axxx", PrintDocWidth, PrintDocHeight);
    printDocument.DefaultPageSettings.PaperSize = paperSize;
    //ou dans le PrintPage event
    PaperSize paperSize = new PaperSize("Axxx", PrintDocWidth, PrintDocHeight);
    e.PageSettings.PaperSize = paperSize;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut
    Hello,

    Merci bien pour t'as réponse. Je vais tester cela. Ce qui me turlupine est la hauteur du ticket.

    A moin que je calcul le nombre d'article * les espaces entre chaque articles + mon début de ticket(commentaire) + la fin du ticket. Pense-tu que ce soit la solution ?

    Hier j'ai télécharger un driver d'imprimante ticket. Dans mon préview la largeur est bien prise en compte. Mais bien entendu au niveau de la hauteur il ca dépasse. Donc il faudrait que je lui transmette juste la hauteur? Mais il faut que je vérifier que la classe "PaperSize" accepte juste la hauteur et à mon avis non.

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    A moin que je calcul le nombre d'article + les espaces entre chaque articles+ mon début de ticket(commentaire) + la fin du ticket.
    Oui, c'est bien ce qu'il faut faire pour modifier le PaperSize dynamiquement.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut
    Bonsoir,

    Alors voila j'ai tester ta réponse, cela fonctionne mais j'ai un affichage un peu beaucoup bizarre.

    J'ai regarde sur le net le paper size ce qu'il prenait en paramètre il veux des inch --> 1 inch = 2.54 centimeters.

    Donc je vais faire tourner mes neurones pour calculer tout ca.

    Je me posais une autre question. Au lieu de mettre la largeur du ticket est-il possible de récupérer les paramètre de l'imprimante( ici j'ai mit l'imprimante par défaut, mon espon Tm_88iv). Puisque j'ai pu remarquer en regardant sur le net que toutes les imprimantes a ticket avait diffèrent taille d'impression. Donc si je lui mets une valeur en dur, cela va brider mon programme.

    Encore un grand merci de te pencher sur mon problème. Une bonne soirée.

    Ioio

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    On devrait pouvoir récupérer cette valeur dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printDocument.DefaultPageSettings.PaperSize.Width

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

Discussions similaires

  1. Imprimante Ticket de caisse
    Par JP.NUAGE dans le forum Matériel
    Réponses: 5
    Dernier message: 24/12/2009, 08h50
  2. [Imprimante] Machine à ticket de caisse
    Par popovitch130 dans le forum Périphériques
    Réponses: 3
    Dernier message: 18/03/2009, 18h25
  3. Impression avec une imprimante à ticket de caisse
    Par freud dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2008, 13h50
  4. Réponses: 3
    Dernier message: 19/01/2007, 14h52
  5. [VB]Ticket de caisse
    Par IADJOFOGUE dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 19/01/2006, 22h20

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