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 :

Impression de texte


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut Impression de texte
    Bonjour!

    Je voudrais avoir si il est possible d'imprimer un fichier texte notepad sans avoir besoin de l'ouvrir au préalable. Je voudrais que l'utilisateur n'ait qu'à cliquer sur un bouton pour que le programme cherche un fichier et l'imprime.
    J'ai beau chercher partout je n'arrive pas a trouver un exemple de cette procedure.

    Merci

  2. #2
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Bonsoir !

    Regarde dans l'aide l'unité Printers.

    @++

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    Je viens de jetter un oeil mais j'ai pas tout calculé ^^
    Je ne vois pas dans l'aide ou il est question de la lecture d'un fichier texte et de son impression...

  4. #4
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Il me semble que ShellExecute est capable de le faire avec la commande "PRINT" au lieu de "OPEN".

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    Oui c'est tout a fait exact, c'est d'ailleurs par la que j'avais commencé, le problème c'est qu'apparement c'est une impression "brut de pomme", c'est-a-dire qu'on ne peut pas modifier grand chose (par exemple il imprime en entete le nom du fichier ce que je ne voudrais pas). Mais dans l'absolu si c'est le seul moyen (en tout cas c'est le seul que j'ai réussi a faire marcher pour le moment! ) et bien ca sera shellexecute.

    Merci en tous les cas de vos réponses

  6. #6
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Citation Envoyé par quarkz
    Je ne vois pas dans l'aide ou il est question de la lecture d'un fichier texte et de son impression...
    L'aide ne donne pas tout le code tout cuit non plus

    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
    procedure PrintTextFile(const AFileName: string; const AMargin: Integer = 10);
    var
      S: TStringList;
      h, i: Integer;
    begin
      S := TStringList.Create;
      try
        S.LoadFromFile(AFileName);
        with Printer do
        begin
          BeginDoc;
            h := AMargin;
            for i := 0 to S.Count - 1 do
            begin
              Canvas.TextOut(AMargin, h, S[i]);
              Inc(h, Canvas.TextHeight(S[i]));
     
              if h > PageHeight - 2 * AMargin then
              begin
                NewPage;
                h := AMargin;
              end;
            end;
          EndDoc;
        end;
      finally
        S.Free;
      end;
    end;
    Code non testé, mais ça doit être un truc dans le genre... Tu peux aussi modifier la police, changer sa taille, convertir la marge des pixels vers des centimètres et j'en passe...

    @++

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Hdd34
    L'aide ne donne pas tout le code tout cuit non plus
    Et oui c'est bien pour ca que je demande de l'aide ici en effet quand t'es débutant il est parfois necessaire d'avoir un bout de code pour éclaircir les choses (parce que des fois ya des trucs vraiment obscurs)

    En tous cas je te remercie beaucoup, et je vais tester ca!

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    It works perfectly!
    Merci beaucoup.

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    Par contre j'ai juste un soucis, c'est que si le texte dépasse la surface imprimable, il ne revient pas a la ligne et donc est tronqué...

  10. #10
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Allez, à toi de bosser un p'tit peu
    Il faut te servir de la propriété PageWidth pour voir si le texte rentre. Pour connaître la largeur du texte, il faut utilise Canvas.TextWidth. Et si jamais il est trop grand, il faut le couper où il faut, en utilsant les fonctions Copy et Delete par exemple...

    @++

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 30
    Points : 16
    Points
    16
    Par défaut
    Bon allez je vais chercher encore alors (j'étais sur la bonne voie deja avec textwidth), mais si je trouve pas promis je reviens t'embeter

    Merci de ta gentillesse en tous cas

Discussions similaires

  1. Problème d'impression de texte
    Par gegila dans le forum Langage
    Réponses: 3
    Dernier message: 07/05/2008, 14h17
  2. Impression de text dans une CScrollView
    Par skalimer0 dans le forum MFC
    Réponses: 10
    Dernier message: 19/11/2007, 11h58
  3. Problème d'impression de texte verticalement
    Par m.nico dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/09/2007, 12h48
  4. Problème d'impression du texte
    Par tiyolx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 14/06/2007, 14h15
  5. Impression fichier texte.. encore !
    Par KeV31 dans le forum Langage
    Réponses: 11
    Dernier message: 29/05/2007, 09h58

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