25 - Perfectionnement
    Sur ce chapitre, nous allons ajouter des fonctionnalités à notre exemple de base afin de cerner un maximum de cas.

    25.1 - Impression en direct :

    Vous devez ajouter un composant TButton avec la propriété CAPTION := 'Imprimer ' et un TPrintDialog (palette standard de DELPHI dialogues) et obtenir ceci :
    Ajoutez aussi l'unité Printers à la clause USES de votre fiche et entrez le code suivant à l'évenement onClick du bouton "Imprimer" que j'ai nommé bPrint.
     
     
    procedure TForm1.bPrintClick(Sender: TObject);
    var FromPg,ToPg,Cpy: Integer;
          ind: Integer;
          St : String; 
          Collap : Boolean; 
    begin
      // Charge l'état
      St:=ExtractFilePath(ParamStr(0));
      frReport1.LoadFromFile(St+'rap1.frf');

       // Relève l'imprimante par défaut 
      ind := Printer.PrinterIndex;
      // Prépare l'état, sortir si la préparation n'a pas fonctionné
      If Not frReport1.PrepareReport then Exit;

      // Initialise la boite de dialogue pour paramètrer l'édition
      with PrintDialog1 do
      begin
        Options:=[poPageNums]; // Autorise la sélection de pages
        Copies := 1;        // Un seul  exemplaire
        Collate := True;     // Copies triées
        FromPage := 1;     // Page de début
        ToPage := frReport1.EMFPages.Count;   // Dernière page, par défaut la totalité
        MaxPage := frReport1.EMFPages.Count; // Nombre de pages maxi, par défaut la totalité
        if Execute then    // Exécution de la boite de dialogue
        begin
          if Printer.PrinterIndex <> ind then  // il y a eu un changement d'imprimante ?
            if frReport1.CanRebuild then    // doit on regénérer l'état ?
              if frReport1.ChangePrinter(ind,Printer.PrinterIndex) then // Changement d'imprimante
                frReport1.PrepareReport
              else exit; // le changement d'imprimante s'est mal passé

          if PrintDialog1.PrintRange = prPageNums then // on a fait une sélection de pages
          begin
            FromPg := PrintDialog1.FromPage; // première page
            ToPg := PrintDialog1.ToPage;       // dernière page
          end;

          Cpy:=PrintDialog1.Copies;    //Nombre de copies
          Collap:=PrintDialog1.Collate;  // Exemplaires triés

          // Lance l'édition de la page "FromPg" à "ToPg" , "Cpy" exmplaires triés (Collap))
          frReport1.PrintPreparedReport(FromPg,ToPg,Cpy,Collap);
        end;
      end;
    end;

    C'est un peu long mais rien ne vous empèche de créer une classe héritant de TFrReport avec une méthode Print ou encore plus simplement, créer une procédure "PrintReport(letat : string)" qui charge l'état et l'édite.
     
    25.2 - Les options possibles :
      25.21 - Options de page

          Vous obtenez ces options avec le menu de l'éditeur : "Fichier" puis "Options de page ..." . Vous obtenez ceci :
       

      • Pour règler le format du papier
      • Pour règler les marges
      • Pour les options diverses


                  Ici, vous précisez le nombre de colonnes ainsi que l'espace entre les colonnes.
       

      25.22 Options sur l'état

      Avec le menu principal de l'éditeur, sélectionnez "Fichier" puis "Options de l'état..." pour faire apparaître la boite de dialogue suivante :

         
      Ici, vous précisez l'imprimante qu'il faut sélectionner lors du chargement de l'état et si la préparation se fait en deux passes.
       
       
      Attention si vous souhaitez numéroter vos pages avec "Page courante' sur "Nombre de page total" , vous devez obligatoirement cocher l'option "Etat en deux passes"


        Page précedente                     Page suivante                  Table des matières