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++Builder Discussion :

Impression et lecture fichier journaliere.


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par d�faut Impression et lecture fichier journaliere.
    Voila,

    j'ai un probl�me avec une impression.

    Pour imprimer je recup�re le texte d'un memo (lier � une db Access)


    Voici 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
    Printer()->BeginDoc();
    Printer()->Canvas->Rectangle(720.712,150,1668.568,348.755);
    Printer()->Canvas->Font->Name="Times New Roman";
    Printer()->Canvas->Font->Size=16;
    Printer()->Canvas->TextOutA(805.712,210,"SERVICE MAINTENANCE");
    Printer()->Canvas->Font->Name="Times New Roman";
    Printer()->Canvas->Font->Size=14;
    AnsiString Texte = LbEntMemo->Caption;
    Printer()->Canvas->TextOutA(250,450,Texte);
    int y =250+Printer()->Canvas->TextWidth(Texte);
    Printer()->Canvas->MoveTo(250,517.225); Printer()->Canvas->LineTo(y,517.225);
    AnsiString Texte1 = DBEditNomMach->Text;
    int w =1928.836+Printer()->Canvas->TextWidth(Texte1);
    Printer()->Canvas->Rectangle(1877.164,438.755,w,528.715);
    Printer()->Canvas->TextOutA(1900,450,Texte1);
    Printer()->Canvas->Font->Name="Times New Roman";
    Printer()->Canvas->Font->Size=12;
    Printer()->Canvas->TextOutA(250,575,"Nom de l'opérateur :.................................");
    Printer()->Canvas->TextOutA(250,650,"Date d'éxecution des travaux :......../......../........");
    Printer()->Canvas->Rectangle(250,800,2150,2777.75);
    Printer()->Canvas->Font->Name="Times New Roman";
    Printer()->Canvas->Font->Size=10;
    // --------------------------
    // récupération du texte
    //
    AnsiString Texte2 = DBMemoEnt->Text;
    Printer()->Canvas->TextOutA(307.14,833.735,Texte2);
    // --------------------------
    AnsiString Texte3 = "Remarque et/ou travaux à éffectuer";
    Printer()->Canvas->TextOutA(250,2833.975,Texte3);
    int z =250+Printer()->Canvas->TextWidth(Texte3);
    Printer()->Canvas->MoveTo(250,2890.2); Printer()->Canvas->LineTo(z,2890.2);
    Printer()->EndDoc();
    J'ai executer mon prog avec un arr�t pour v�rifier ce qui se trouvais dans ma variable texte2 et j'ai bien mon texte avec a chaque fin de phrase mon saut de ligne et mon retour a la ligne mais lors de l'impression tout est imprimer sur une ligne!!

    En ce qui concerne la lecture du fichier j'aimerrai mettre ma db a jour une fois par jour existe t'il une fonction que je pourrai d�finir � 9h00 du matin tous les jour par exemple.

    Voila merci d'avance.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par d�faut
    Ben voila pour mon impression j'ai 4 carr� qui remplace mon saut de ligne et mon retour � la ligne si cela peut aider quelqu'un a me donner une solution

    Exemple:

    Salut,□□□□comment allez-vous?□□□□ � la place de

    Salut,

    Comment allez-vous?

    Voila si vous avez une id�e je suis preneur car moi je nage dans la semoule

    Merci d'avance.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 31
    Par d�faut
    Salut,
    Je me demande si le probl�me ne vient pas de la gestion des retours � la ligne?? Tu utilises des \n je suppose pour faire des retours � la lignes ?Je vais voir si je retrouve quelquechose pour t'aider car la comme �a je ne me souviens plus.

    ---
    Christophe.

  4. #4
    Membre Expert
    Avatar de Gilles Lou�se
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par d�faut
    Il semble que vous ne puissiez pas imprimer directement le contenu d'un composant s'il a plusieurs lignes, par exemple un Memo, contrairement � un exemple donn� dans la documentation, sinon, effectivement, vous obtenez quatre carr�s � la place de chaque retour chariot.

    La documentation donne un autre exemple (TPrinter : Utilisation TPrinter) que voici :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void __fastcall TForm1::Button1Click(TObject *Sender)
     
    {
      TPrinter *Prntr = Printer();
      TRect r = Rect(200,200,Prntr->PageWidth-200,Prntr->PageHeight-200);
      Prntr->BeginDoc();
      for( int i = 0; i < Memo1->Lines->Count; i++)
        Prntr->Canvas->TextOut(200,200+(i*Prntr->Canvas->TextHeight(Memo1->Lines->Strings[i])),Memo1->Lines->Strings[i]);
      Prntr->Canvas->Brush->Color = clBlack;
      Prntr->Canvas->FrameRect(r);
      Prntr->EndDoc();
    }
    Cet exemple imprime le contenu d'un Memo sur clic d'un bouton. Comme vous le voyez, on proc�de ligne apr�s ligne et on calcule la coordonn�e en y en fonction de la hauteur de chaque ligne. Ce n'est sans doute pas parfait car il peut y avoir des caract�res de diff�rentes hauteurs dans une ligne mais du moins cela montre qu'il faut faire du ligne � ligne.

    � bient�t
    Gilles

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Par d�faut
    Effectivement il me semble que la seule solution est de faire du ligne � ligne comme la pr�ciser Gilles, c'est la m�thode que j'utilise pour faire des rapports dans mes logiciels.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par d�faut
    Ok merci a tous pour ces r�ponse je vais essayer directement.

    Et pour effectu� une action une seule fois dans la journ�e, avez-vous une id�e?

    Exemple:

    j'ai une table que je veux mettre a jour une seule fois dans la journ�e disons que a 3h00 je veux ouvrir un fichier lire ligne par ligne son contenu et mettre � jour ma db (Access). Pour la gestion des fichier aucun probl�me tr�s bien expliquer dans la faq mais comment �ffectu� une proc�dure une seule fois dans la journ�e? y a t'il un composant partculier a utilis�?

    Merci d'avance pour vos r�ponses.

  7. #7
    Membre �prouv�
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Par d�faut
    tu peux utiliser un TTimer qui vient scruter l'heure toutes les secondes ... c'est ce que je fais en g�n�ral ...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par d�faut
    Salut a tous pour l'impression j'y arrive maintenant il me reste juste a definir les marge doite et gauche de ma page ainsi que le pied de page.

    Enfin ce qui m'interesse maintenant ce serait de voir comment freeze emplois un TTimer car je ne trouve pas trop d'explication dans l'aide de C++.

    Voila merci d'avance.

  9. #9
    Membre �prouv�
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Par d�faut
    Tu poses un timer sur ta fiche ( ou tu le cr�� en dynamique ) ... avec une intervalle de 1000 ms ... et une variable bool EnCours .
    Sur l'�venement OnTimer tu fais :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (FormatDateTime("hh:mm:ss",Now())==TonHeure)
    {
       if (!EnCours)
          ExecuteAction();
    }
    else
       EnCours=false;

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Lecture fichier Word et remplacement param�tre
    Par Pfeffer dans le forum C++Builder
    R�ponses: 4
    Dernier message: 21/02/2005, 17h30
  2. [ifstream] pb lecture fichier non sequentielle
    Par bludo dans le forum SL & STL
    R�ponses: 3
    Dernier message: 10/02/2005, 21h30
  3. [LG]probleme lecture fichier
    Par yp036871 dans le forum Langage
    R�ponses: 2
    Dernier message: 28/01/2004, 19h22
  4. [LG]Probleme lecture fichier file of ....
    Par John_win dans le forum Langage
    R�ponses: 11
    Dernier message: 11/11/2003, 18h53
  5. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    R�ponses: 3
    Dernier message: 16/07/2003, 11h08

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