drucken, print des gerade angewähltem PageControl Fensters



  • Hallo Leute,

    kleines Verständniss Prob.

    void __fastcall TForm1::SB_DruckenClick(TObject *Sender)
    {
       // öffnet des PrintDialog1"
       if(Form1->PrintDialog1->Execute())
       {
          // zähle die Pages
          for(int i=0; i<Form1->PageControl1->PageCount; i++)
          {
             // ist eine oder die Page Active
             if(Form1->PageControl1->ActivePage);
             {
                Printer()->BeginDoc();
                Form1->PageControl1->Pages[i];
                Printer()->EndDoc();
             }
          }
       }
    }
    

    ich denke man kann so ungfähr sehen was ich vor habe, komme aber leider nett weiter, kann da jemand helfen, danke.

    mfg
    gil



  • Hallo,

    Geh mal in die Hilfe zu TPrinter BeginDoc. Dort gibt es ein Beispiel, welches du direkt verwenden kannst (sogar mit PageControl).



  • Hallo Braunstein,

    erstmal danke für den Tipp, wurde fündig und es funzt soweit.
    Hier den Code dazu.

    void __fastcall TForm1::SB_DruckenClick(TObject *Sender)
    {
       // Aktion des "Dialog Drucken", PrintDialog wird geöffnet
       if(Form1->PrintDialog1->Execute())
       {
          Printer()->BeginDoc();
          PageControl1->Pages[PageControl1->ActivePage->PageIndex]->
                        PaintTo(Printer()->Handle, 150, 400);
          if(PageControl1->ActivePage->PageIndex);
             Printer()->NewPage();
          Printer()->EndDoc();
       }
    }
    

    Eine Frage noch. Wie bekomme ich den Ausdruck in die Mitte und etwas Grösser hin, momentan brauche ich fast ein Vergrösserungsglas?

    mfg

    gil



  • Informiere Dich über

    Printer->Canvas->StretchDraw(...)
    

    Oder auch auf meiner Seite unter BCB->Drucken



  • Das wird sicherlich so funktionieren. Ich bevorzuge zur Zwischenspeicherung allerdings ein TMetafile (bzw. TMetafileCanvas). Dies kann zu einer besseren Ausgabequalität führen (insbesondere bei starken Vergrösserungen), da hier wenn möglich intern die Vektordarstellung verwendet wird.



  • Hallo,

    ne ich bekomme es nicht gebacken.

    mfg

    gil



  • Was genau ist dein Problem ?
    Zeig doch einfach mal was du bereits gemacht hast und was da nicht funktioniert.



  • hallo,

    void __fastcall TForm1::SB_DruckenClick(TObject *Sender)
    {
       // Aktion des "Dialog Drucken", PrintDialog wird geöffnet
       if(Form1->PrintDialog1->Execute())
       {
    
          Printer()->BeginDoc();
          int ind = PageControl1->ActivePage->PageIndex;
          TMetafile* pPic = new TMetafile();
    
          PageControl1->Canvas->Draw(150, 350, pPic);
    
          if(PageControl1->ActivePage->PageIndex);
             Printer()->NewPage();
          Printer()->EndDoc();
          */
       }
    }
    

    Drucken möchte ich den aktuellen PageIndex der ein Grafik ist (Metafile). Ohne neues Objekt, also nur mit PaintTo funzt das zwar, aber halt nur etwa 5 x 6 cm gross, was noch nicht einmal der Bildschirmgrösse entspricht. Nun habe ich es mit Canavs probiert da tut sich nix bzw. habe da wohl schon Probs mit übergeben oder so.

    mfg

    gil


Anmelden zum Antworten