comment imprimer avec C++ Builder

comment imprimer avec C++ Builder - Programmation

Marsh Posté le 19-07-2001 à 17:46:02    

J'utilise C++ Builder pour développer une appli, mais je ne réussit pas à faire une impression correcte :
 
je voudrait imprimer le contenu d'un objet de type TPageControl alors j'ai fait un joli copier-coller de l'exemple donné dans l'aide (cf ci-dessous) mais les impressions ne mesure gère plus de 5 cm x 5 cm alors que la taille du contrôle est de l'ordre de 600 x 600. Conclusion mon impression est illisible.
 
Si vous avez la solution, n'hésitez pas ==> grosminet@mageos.com   Merci.
 
voici l'exemple de l'aide de C++ Builder :
 
Cet exemple utilise une fiche contenant un bouton, un contrôle pages et une boîte de dialogue d'impression. Lorsque l'utilisateur clique sur le bouton, la boîte de dialogue d'impression est affichée. L'utilisateur peut sélectionner n'importe quel sous-ensemble de pages dans le contrôle de pages pour l'impression. Les pages sélectionnées sont alors imprimées.
Pour exécuter cet ensemble, vous devez inclure <Printers.hpp> dans votre fichier unité.
 
// ----------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
 
{
  PrintDialog1->Options.Clear();
  PrintDialog1->Options << poPageNums << poSelection;
  PrintDialog1->FromPage = 1;
  PrintDialog1->MinPage = 1;
  PrintDialog1->ToPage = PageControl1->PageCount;
  PrintDialog1->MaxPage = PageControl1->PageCount;
  if (PrintDialog1->Execute())
  {
    int Start, Stop;
    // détermine l'intervalle souhaité pour l'impression
    switch (PrintDialog1->PrintRange)
    {
      case prSelection:
 
        Start = PageControl1->ActivePage->PageIndex;
        Stop = Start;
        break;
      case prPageNums:
        Start = PrintDialog1->FromPage - 1;
        Stop =  PrintDialog1->ToPage - 1;
        break;
      default:  // prAllPages
        Start = PrintDialog1->MinPage - 1;
        Stop = PrintDialog1->MaxPage - 1;
        break;
    }
    // imprime les pages  
    Printer()->BeginDoc();
    for (int i = Start; i <= Stop; i++)
 
    {
      PageControl1->Pages[i]->PaintTo(Printer()->Handle, 10, 10);
      if (i != Stop)
        Printer()->NewPage();
    }
    Printer()->EndDoc();
  }
}
// ----------------------------------------------------------------

 

[edtdd]--Message édité par grrosminet--[/edtdd]

Reply

Marsh Posté le 19-07-2001 à 17:46:02   

Reply

Marsh Posté le 19-07-2001 à 18:03:52    

C'est normal, si tu imprime en 300 dpi ( 300 point par pouce) qui est ne général la résolution de l'imprimante, ton dessin en de 600 point fait 2 pouces ~= 5cm
Utilise la fonction TCustomForm::Print()


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
Reply

Marsh Posté le 20-07-2001 à 22:37:22    

Et y'aurrait pas moyen d'utiliser un QuickReport (sans pour autant utiliser un BDD) ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed