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.html

    An 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...


Anmelden zum Antworten