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 :

Delphi 2005 - TPrinter et enregistrement dans un fichier


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut Delphi 2005 - TPrinter et enregistrement dans un fichier
    Bonjour

    On utilise un TPrinter pour faire certains type d'impression, or on doit pouvoir également enregistrer les données "brut" dans un fichier...

    Donc le TPrinTer.BeginDoc de Delphi (Printers.pas)....

    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
    procedure TPrinter.BeginDoc;
    var
      DocInfo: TDocInfo;
    begin
      CheckPrinting(False);
      SetState(psHandleDC);
      Canvas.Refresh;
      TPrinterCanvas(Canvas).UpdateFont;
      FPrinting := True;
      FAborted := False;
      FPageNumber := 1;
      FillChar(DocInfo, SizeOf(DocInfo), 0);
      with DocInfo do
      begin
        cbSize := SizeOf(DocInfo);
        lpszDocName := PChar(Title);
      end;
      SetAbortProc(DC, AbortProc);
      StartDoc(DC, DocInfo);
      StartPage(DC);
    end;
    J'attire votre attention sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      with DocInfo do
      begin
        cbSize := SizeOf(DocInfo);
        lpszDocName := PChar(Title);
      end;
    Dans les source delphi window.pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      _DOCINFOA = packed record
        cbSize: Integer;
        lpszDocName: PAnsiChar;
        lpszOutput: PAnsiChar;
        lpszDatatype: PAnsiChar;
        fwType: DWORD;
      end;
    Question Pourquoi donc Borland n'ont pas implémenté les OutPut et Datatype ??? :

    Est ce que je peut m'en sortir sans recompiler les sources de delphi ....

    Merci

  2. #2
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut Delphi 2005 - TPrinter et enregistrement dans un fichier
    Salut

    C'est effectivement bizarre et on aurait apprécié un commentaire.
    Je n'ai pas de réponse à te proposer mais cela signifie sans doute que ces derniers paramètres ne sont pas utiles.

    N'as-tu rien trouvé dans l'aide de Windows ?

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  3. #3
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut Re: Delphi 2005 - TPrinter et enregistrement dans un fichier
    Citation Envoyé par e-ric
    derniers paramètres ne sont pas utiles.
    N'as-tu rien trouvé dans l'aide de Windows ?

    cdlt

    e-ric
    Et pourtant si c'est parametre sont utilie.... du coté de windows pas de problème c'est Borland qui n'as pas tous implémenté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DOCINFO
    The DOCINFO structure contains the input and output file names and other information used by the StartDoc function. 
     
    typedef struct { 
      int     cbSize; 
      LPCTSTR lpszDocName; 
      LPCTSTR lpszOutput; 
      LPCTSTR lpszDatatype;
      DWORD   fwType; 
    } DOCINFO, *LPDOCINFO
    Rien d'obsolete dans l'aide SDK

  4. #4
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Citation Envoyé par help SDK
    The DOCINFO structure contains the input and output filenames and other information used by the StartDoc function.

    typedef struct { // di
    int cbSize;
    LPCTSTR lpszDocName;
    LPCTSTR lpszOutput;
    LPCTSTR lpszDatatype; // Windows 95 only; ignored on Windows NT
    DWORD fwType; // Windows 95 only; ignored on Windows NT
    } DOCINFO;


    Members

    cbSize
    Specifies the size, in bytes, of the structure.

    lpszDocName
    Points to a null-terminated string that specifies the name of the document.

    lpszOutput
    Points to a null-terminated string that specifies the name of an output file. If this pointer is NULL, the output will be sent to the device identified by the device context handle that was passed to the StartDoc function.

    lpszDatatype
    Windows 95: Points to a null-terminated string that specifies the type of data used to record the print job.
    Windows NT: This member is ignored.

    fwType
    Windows 95: Specifies additional information about the print job. Can be zero or DI_APPBANDING if the application will use banding. For optimal performance during printing, banding applications should specify DI_APPBANDING.
    Windows NT: This member is ignored.

    See Also

    StartDoc
    Donc pour Windows (hors 9X), les deux derniers paramètres sont superflus. Il reste que l'objet TPrinter ne supporte la sortie vers un fichier car le paramètre lpszOutput est NULL selon le code de BeginDoc.

    Donc pas de solution avec TPrinter si tu veux imprimer dans un fichier. Les solutions possibles sont :
    - tu adaptes le code de TPrinter via une facade (une enveloppe) sur l'objet TPrinter,
    - tu développes un objet TMyPrinter copié et adapté depuis TPrinter pour gagner du temps en implémentant la sortie vers un fichier,
    - tu trouve un composant tout fait mais je n'ai rien à te proposer.

    Il y a peut-être d'autres solutions mais je ne les connais pas.

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #5
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Le collégue regarde, on va surement utiliser les API, on devrait s'en sortir....
    J'indiquerai la manip... si on trouve

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

Discussions similaires

  1. [Delphi 2005] Comment parcourir la liste des fichiers ?
    Par babyface dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2005, 11h01
  2. comment ne pas enregistrer dans le fichier log?
    Par trotters213 dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 21/03/2005, 14h56
  3. [LG]Enregistrements dans un fichier
    Par ticoude dans le forum Langage
    Réponses: 1
    Dernier message: 26/11/2004, 18h33
  4. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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