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

Langage Delphi Discussion :

Ajouter du texte sur la première ligne d'un Mémo à l'impression


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 50
    Points
    50
    Par défaut Ajouter du texte sur la première ligne d'un Mémo à l'impression
    Bonjour

    J'ai une question "idiote" peut être ...

    Comment ajouter une ligne de texte sur la 1ere ligne d'un Memo avant d'imprimer celui ci qui contient déja du texte - voir mon code ci après

    A vous lire
    Merci
    Beauserge

    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
    procedure TForm1.BitBtn2Click(Sender: TObject);
    var
     FichierImprimante : TextFile;
     Titre : String;
      i, j : Integer;
    begin
      Titre:=('Matériels et Accessoires');
      if PrintDialog5.Execute then
      begin
        for j := 1 to PrintDialog5.Copies do // autant de fois que le nombre d'exemplaires voulu
        begin
          AssignPrn(FichierImprimante); //affecte FichierImprimante à l'imprimante
          Rewrite(FichierImprimante);
          begin
          Memo3.lines.add(Titre,[i-1]);  // ajoute le titre du Memo sur la 1ere ligne seulement à l'impression  pas bon !!
          end ;
          for i := 1 to Memo3.Lines.Count do
            Writeln
              (FichierImprimante, Memo3.Lines[i - 1]); // je l'imprime //pour chaque ligne du Mémo
          System.CloseFile(FichierImprimante); // fermeture du "fichier imprimante"
        end;
      end;
    end;

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 60
    Points : 78
    Points
    78
    Par défaut
    Si tu veux ajouter du texte au début du Memo utilise la méthode Insert avec l'index à 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo3.Lines.Insert(0, Titre);
    Tu peux essayer d'ajuster l'index suivant ta variable i pour le faire à chaque page, je n'ai pas testé...

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 50
    Points
    50
    Par défaut
    Merci DuffNut, ça fonctionne impec !

    par contre, lorsque la boite de dialogue d'impresssion s'ouvre et que je clique sur "Annuler l'impression", la 1ere ligne se rajoute quand même ?

    Comment se fait il ? Je voudrais que rien ne s'imprime

    A+
    Beauserge

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 60
    Points : 78
    Points
    78
    Par défaut
    J'ai ajouté un TPrintDialog pour avoir la même config que toi.

    Lorsque la fenêtre est appelée tu as le choix entre "OK" et "Cancel" pour moi. Quand je clique sur Cancel, rien ne se passe tu parles de ça pour annuler l'impression ?

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 50
    Points
    50
    Par défaut
    oui tout à fait.

    En fait si tu cliques la 1ere fois sur Annuler sans imprimer , c'est Ok - rien ne se passe
    mais si tu cliques sur Imprimer et qu'ensuite tu réessayes d'imprimer mais tu veux annuler l'impression, ça imprime quand même et cela autant de fois que tu cliqueras sur Annuler ensuite ...

    Essayes chez toi pour voir

    A te lire

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 097
    Points : 41 081
    Points
    41 081
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    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
    procedure TForm1.BitBtn2Click(Sender: TObject);
    var
     FichierImprimante : TextFile;
     Titre : String;
      i, j : Integer;
    begin
      Titre:=('Matériels et Accessoires');
      Memo3.lines.add(Titre,0);  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
      if PrintDialog5.Execute then
      begin
        for j := 1 to PrintDialog5.Copies do // autant de fois que le nombre d'exemplaires voulu
        begin
          AssignPrn(FichierImprimante); //affecte FichierImprimante à l'imprimante
          Rewrite(FichierImprimante);
          for i := 0 to Memo3.Lines.Count-1 do
            Writeln (FichierImprimante, Memo3.Lines[i]); // je l'imprime //pour chaque ligne du Mémo
          CloseFile(FichierImprimante); // fermeture du "fichier imprimante"
        end;
      end;
    end;

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 50
    Points
    50
    Par défaut
    Ne cherche pas DuffNut ! j'ai trouvé la solution au problème.

    Cela n'a rien à voir avec le bouton Cancel.
    En fait, étant donné que j'ajoute le titre avant l'impression et que mon Memo n'est sauvegardé qu'à la fermeture du programme, il conservait en mémoire le titre + ajoutait la nouvelle ligne à chaque fois.

    J'ai collé une ligne de code pour sauvegarder le Memo à la fin de l'impression et le tout est joué.

    Merci pour ton aide
    Cordialement
    Beauserge

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 60
    Points : 78
    Points
    78
    Par défaut
    J'ai essayé avec une imprimante PDF car je n'ai pas d'imprimante mais je n'ai pas le même problème que toi lorsque j'annule... Je suis avec Delphi 10.1 Berlin.

    Je n'ai pas vraiment d'idées sur le sujet, essaye de déboguer et ajouter/supprimer des lignes pour voir d'où vient le problème...

    Par contre tu as un problème dans tes boucles car le titre sera affiché plusieurs fois lorsque tu fais plusieurs copies. Et tu en auras un lorsque tu cliqueras une deuxième fois pour imprimer car le Titre sera de nouveau inséré dans le memo (vérifier si tu es déjà passé dans l'impression une fois...)

    Voici mon 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
    procedure TForm1.Button1Click(Sender: TObject);
    var
     FichierImprimante : TextFile;
     Titre : String;
      i, j : Integer;
    begin
      Titre:=('Matériels et Accessoires');
      if PrintDialog1.Execute then
      begin
        Memo1.Lines.Insert(0, Titre);
        for j := 1 to PrintDialog1.Copies do // autant de fois que le nombre d'exemplaires voulu
        begin
          AssignPrn(FichierImprimante); //affecte FichierImprimante à l'imprimante
          Rewrite(FichierImprimante);
          for i := 1 to Memo1.Lines.Count do
            Writeln(FichierImprimante, Memo1.Lines[i - 1]); // je l'imprime //pour chaque ligne du Mémo
          System.CloseFile(FichierImprimante); // fermeture du "fichier imprimante"
        end;
      end;
    end;

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 50
    Points
    50
    Par défaut
    oui effectivement le titre revenait à chaque fois dans la boucle donc pour "ruser", j'ai ajouté une ligne pour supprimer le titre avant le lancement de la boucle, puisque ensuite
    il se rajoute au lancement de l'impression et c'est réglé !

    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
     if PrintDialog5.Execute then
    
      begin
      Memo3.lines.Delete(0);  // supprimer le titre avant de le rajouter - plus bas dans le memo (pour éviter doublon)
        for j := 1 to PrintDialog5.Copies do // autant de fois que le nombre d'exemplaires voulu
        begin
          AssignPrn(FichierImprimante); //affecte FichierImprimante à l'imprimante
          Rewrite(FichierImprimante);
          Memo3.lines.Insert(0,Titre);  // ajoute le titre du Memo sur la 1ere ligne seulement à l'impression
          for i := 0 to Memo3.Lines.Count do
            Writeln
              (FichierImprimante, Memo3.Lines[i - 1]); // je l'imprime //pour chaque ligne du Mémo
          System.CloseFile(FichierImprimante); // fermeture du "fichier imprimante"
        end;
         Memo3.Lines.SaveToFile('Memo commentaires.txt');   // sauve le Memo à nouveau
      end;
    A+
    Beauserge

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

Discussions similaires

  1. ajout texte sur une courbe
    Par heliconet dans le forum Visio
    Réponses: 2
    Dernier message: 22/01/2008, 22h39
  2. [Système] Afficher un texte sur la même ligne
    Par Bridou dans le forum Langage
    Réponses: 4
    Dernier message: 08/10/2007, 16h17
  3. Image et texte sur la même ligne : aligner verticalement les deux ?
    Par titoumimi dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 25/01/2007, 13h47
  4. Réponses: 8
    Dernier message: 18/11/2006, 12h04
  5. wxWidgets : couleur de texte sur une seule ligne
    Par Oatly dans le forum wxWidgets
    Réponses: 8
    Dernier message: 05/12/2004, 19h24

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