Einzelnen Beitrag anzeigen

Ralf Meyer

Registriert seit: 24. Mär 2008
36 Beiträge
 
#11

Re: Leere Seite bei Ausdruck auf Brother MFC 7440n über TPri

  Alt 19. Nov 2009, 18:52
Hallo Frank,

nein habe ich nicht. Hier nachfolgend mal der wirklich simple Test-Code der schon nicht funktioniert.
(bzw. nur auf dem Modell nicht.)
Ich habe auch den Aufruf auch schon in die Prozedur zum Ausschalten der Fließkommaberechnung (siehe oben) gesetzt - ohne Erfolg.


Delphi-Quellcode:
Uses
  Printers;
procedure TForm2.cbPrinterChange(Sender: TObject); // Ereignis wenn die Druckerauswahl geändert wird.
Begin
  // Die Druckerauswahl ist nur nötig, wenn nicht der Standarddrucker verwendet wird.
// Printer.PrinterIndex := printer.Printers.IndexOf( cbPrinter.text ) ; // alte Variante
  Printer.SetPrinter(PChar(cbPrinter.text),PChar('WINSPOOL'),PChar(''),0); // neue Variante
end;

procedure TForm2.DruckeKreuze;
var
  x1,y1,x2,y2 : Integer ;
  mm : Integer ;
begin
  PrinterDPI := GetDeviceCaps(Printer.Handle, LOGPIXELSx) ;
  SeitenBreite := Printer.PageWidth ;
  Seitenhoehe := Printer.PageHeight ;

  mm := round ( PrinterDPI / 25.4 ) ;
  Printer.BeginDoc ;
  try
    Printer.Canvas.TextOut( 10 * mm, 10 * mm, 'Drucker: ' ) ;
    Printer.Canvas.TextOut( 30 * mm, 10 * mm, cbPrinter.text ) ;

    Printer.Canvas.TextOut( 10 * mm, 15 * mm, 'DPI: ' ) ;
    Printer.Canvas.TextOut( 30 * mm, 15 * mm, IntToStr( PrinterDPI ) ) ;

    Printer.Canvas.TextOut( 10 * mm, 20 * mm, 'Seitenbreite: ' ) ;
    Printer.Canvas.TextOut( 30 * mm, 20 * mm, IntToStr( Seitenbreite ) ) ;

    Printer.Canvas.TextOut( 10 * mm, 25 * mm, 'Seitenhöhe: ');
    Printer.Canvas.TextOut( 30 * mm, 25 * mm, IntToStr( Seitenhoehe ) ) ;

    x1 := ( SeitenBreite div 2 ) - ( 2 * PrinterDPI ) ;
    x2 := ( SeitenBreite div 2 ) + ( 2 * PrinterDPI ) ;
    y1 := ( SeitenHoehe div 2 ) - ( 2 * PrinterDPI ) ;
    y2 := ( SeitenHoehe div 2 ) + ( 2 * PrinterDPI ) ;



    Printer.canvas.moveto( x1, SeitenHoehe Div 2 ) ;
    Printer.canvas.LineTo( x2, SeitenHoehe Div 2 ) ;

    Printer.canvas.moveto( SeitenBreite Div 2, y1 ) ;
    Printer.canvas.LineTo( SeitenBreite Div 2, y2 ) ;

  finally
    Printer.EndDoc ;
  end;
end;
Gruß Ralf
  Mit Zitat antworten Zitat