Memo /Groupbox ausdrucken

_Dome_

Mitglied
Ich melde mich mal wieder mit ner totalen Anfängerfrage - hab bestimmt 2h im Internet und hier gesucht aber nichts gefunden.

Ich möchte eine GroupBox und deren Inhalt ausdrucken, falls das nicht geht eine Memo.

Soweit bin ich schon:

if(PrintDialog1->Execute())
{
//Nur was kommt hier rein?

}

Danke schonmal.
 
Also ich habe hier auch mit einem Projekt zu tun, bei dem ich drucken muß, allerdings weiß ich nicht genau, was und wie genau du es brauchst.

Unter DOS habe ich noch die Standardausgabe einfach auf den Drucker gelegt und dann PRINTs verwendet, aber unter Windows geht das anscheinend nicht so ohne weiteres (habe mich da selber halb tot gegoogelt).
Meine Funde waren fast samt und sonders aus der Delphi-Welt, aber die VCL ist für Delphi und CBuilder ja ziemlich gleich, nur daß halt die entsprechenden Sources angepaßt werden müssen.

Hier erstmal ein Link, der das Drucken mittels Win API etwas näher beleuchtet, zumindest was die Koordinatensysteme, Einheiten etc. angeht:
Printer Demo for Delphi

Empfehlenswerter ist bei der Benutzung einer Borland IDE jedoch die Verwendung von Quick- oder Rave Reports, die das Ausdrucken deutlich erleichtern (und auch die Methode darstellen, mit der ich hier beim Projekt den Ausdruck realisiert habe):
Rave Reports Tips & Tricks
Rave Reports Demo und Handbücher

Schlußendlich habe ich hier noch ein Codeschnippsel aus einem Uralt-Projekt, mit dem du evtl. etwas anfangen kannst. Achtung! Ich weiß nicht, ob dieser Source auch so funktioniert, da ich ihn etwas zusammensuchen musste. Aber ich denke, wenn du ihn dir etwas näher anschaust und die IDE-Hilfe zu Rate ziehst, dann kann dir das immerhin helfen, mal den ersten Schritt hinzubekommen:
Code:
#include "vcl\Printers.hpp"                       // Include für Druckeranbindung
int zeile = 0;
Printer()->Orientation = poPortrait;
Printer()->BeginDoc();
for(int i = 0; i < Memo->Lines->Count; i++)
{
  Printer()->Canvas->TextOut(20, ((zeile + 1) * 20), Memo->Lines->Item[i];
}

Printer()->EndDoc();
 
Danke.
Ich werde es mal ausprobieren und mich hier wieder melden. Hab aber noch rausgefunden, dass man mit "Print()" die aktive Form komplett ausdrucken kann, also so:

Code:
if(PrintDialog1->Execute())
{
Print(); //So wird die ganze Form ausgedruckt.
}

Edit:

Hab nun deinen Code probiert und dieser druckt mir allerdings nur die erste Zeile aus.
Den Code hab ich wie wolgt umgeändert:
Code:
#include "vcl\Printers.hpp"                       // Include für Druckeranbindung
int zeile = 0;
Printer()->Orientation = poPortrait;
Printer()->BeginDoc();
for(int i = 0; i < Memo1->Lines->Count; i++)
{
  Printer()->Canvas->TextOut(20, ((zeile + 1) * 20), Memo->Lines->Strings[i];
}

Printer()->EndDoc();

Edit2:

Ich hab hier nun den Code der ein Memo wunderbar ausdruckt:

Code:
 TPrinter *Prntr = Printer(); 

    TRect r = Rect(200, 200, Prntr->PageWidth - 200, Prntr->PageHeight- 200);
    Prntr->BeginDoc();

    for(int i = 0; i < Memo1->Lines->Count; i++)
        Prntr->Canvas->TextOut(200, 200 + (i *
        Prntr->Canvas->TextHeight(Memo1->Lines->Strings[i])),
        Memo1->Lines->Strings[i]);
        Prntr->Canvas->Brush->Color = clBlack;
        Prntr->Canvas->FrameRect(r);
        Prntr->EndDoc();

Des Weiteren geht es noch viel einfacher wenn man ein RichEdit ausdruckt:
Code:
RichEdit1->Print(RichEdit1->Text);
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück