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