Drucker auswählen
-
Hi,
wenn ich einen PrintDialog öffne, kann ich ja den Drucker auswählen. Wie drucke ich denn jetzt auf dem ausgewälten Drucker?
-
Das mußt du selber ausprogrammieren, schau dir dazu die Klasse 'TPrinter' sowie die globale Funktion 'Printer()' mal in der Hilfe an.
Hier mal ein paar andere Beiträge dazu:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-49351.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-174900.htmlAn dem Code siehst du mal den generellen Aufbau des Druckens...
-
hier etwas Code:
void __fastcall TFrm_HauptFenster::MI_Print_TableClick(TObject *Sender) { PrintDialog1->Options.Clear(); if (PrintDialog1->Execute()) { TPrinter * drucker = Printer(); TCanvas * printcanvas = drucker->Canvas; drucker->Title = "BlaBlub"; drucker->BeginDoc(); printcanvas->Font->Size = 10; printcanvas->Font->Color = clBlack; printcanvas->Font->Name = "Arial"; int textheight = printcanvas->TextHeight("Ay"); int seite=1; int lr = 350;//linker rand int za = 30;//zeilenabstand int x = lr; //startposition int y = 100;//startposition printcanvas->TextOut(x, y, "BlaBlub"); y = y + za + textheight;//nächste Zeile printcanvas->TextOut(x, y, "Text"); printcanvas->TextOut(x + 900, y,"Text weiter rechts, gleiche Zeile"); y = y + za + textheight;//nächste Zeile printcanvas->TextOut(x, y, "Text"); //neue Seite drucker->NewPage(); y = 100;//startposition printcanvas->TextOut(x, y, "noch mehr Text"); y = y + za + textheight; printcanvas->TextOut(x, y, "nächste Zeile"); drucker->EndDoc(); } }
-
Ok, ich hab mich falsch ausgedrückt: wie ich etwas auf einen Drucker bekomme, habe ich schon herausgefunden, eben über Printer(). Aber wie sage ich Printer, aus welchem Drucker mein Papier kommen soll? Beim PrintDialog habe ich keine entsprechende Eigenschaft gefunden und in den ganzen Beispielen auch nicht...
-
Heimelchen schrieb:
Ok, ich hab mich falsch ausgedrückt: wie ich etwas auf einen Drucker bekomme, habe ich schon herausgefunden, eben über Printer(). Aber wie sage ich Printer, aus welchem Drucker mein Papier kommen soll? Beim PrintDialog habe ich keine entsprechende Eigenschaft gefunden und in den ganzen Beispielen auch nicht...
Ob das jetzt klarer ist wage ich zu bezweifeln. Ich vermute mal, an deinem PC sind mehrere Drucker angeschlossen und du möchtest in deinem Programm festlegen, auf welchem Drucker der Ausdruck augegeben werden soll? Dazu hat gibt es TPrinter::Printers, in denen installierten Drucker gelistet sind. Über TPrinter::PrinterIndex kannst du auswählen, welchen Drucker das aktuelle Printer Objekt ansprechen soll. Über die Methode TPrinter::GetPrinter kannst du den Druckernamen, Treiber, Port und DEVMODE des jeweiligen Druckers bestimmen.
-
Die Eigenschaft PrinterIndex gibt an welcher Drucker im PrintDialog ausgewählt wurde. Dann gibt es noch Printers wo die einzelnen Drucker des Systems drin stehen und wo man dann mit Hilfe des PrinterIndex den Namen des gewählten Druckers bekommt.
Die Methoden GetPrinter und SetPrinter sind in der BCB-Hilfe beschrieben.
Alle aufgezählten Eigenschaften und Methien gehöhren zu TPrinter
-
Ah, scheinbar hab ich mich jetzt besser ausgedrückt, genau das ist mein Problem.
Die Eigenschaften Printers und PrinterIndex hat mein PrintDialog nicht!
-
Hallo
Wie Linnea schon schrieb, gehören die genannten Methoden und Eigenschaften nicht zu TPrinterDialog.
bis bald
akari
-
Mir fehlte die Verbindung, dass der ausgewählte Drucker im PrintDialog direkt einfluss auf Printer()->Printers hat. Jetzt weiß ich's...