Thema: Delphi Drucken in Delphi 2005

Einzelnen Beitrag anzeigen

Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 

Re: Drucken in Delphi 2005

  Alt 16. Jun 2005, 08:57
Hier noch ein einfaches Beispiel für die Direktausgabe auf einen Drucker, wobei der Inhalt eines Richedit gedruckt wird

Delphi-Quellcode:
unit UDruck;

interface
procedure printText(name:string);

implementation

uses Printers, Dialogs, Sysutils, Graphics, Windows, Unit1;

Var
  Breite,Hoehe: Word;
  y: Integer=0;

Const
  oRand=10;
  uRand=10;
  lRand=15;
  dz=4;

Procedure printTitle(name:string);
Var
  m:Word;
begin
with Printer.Canvas do
begin
  Font.Height:=3*10;
  Font.Style:=[fsbold];
  m:=(breite*10-Textwidth(name)) div 2;
  TextOut(m,y*10,name);
  Font.Height:=3*10;
  Font.Style:=[];

end;
Dec(y,10);
end;

procedure ausgabeZeile( s: string);
Begin

  SetTextAlign(Printer.Handle,TA_LEFT+TA_TOP);
  Printer.Canvas.TextOut(lRand*10,y*10,s);
  Dec(y,dz);
end;

procedure PrintText(name:string);
Var
  i:Word;

procedure SeitenNr;
Begin
  y:= -(hoehe-15);
  SetTextAlign(Printer.Handle,TA_RIGHT+TA_TOP);
  Printer.Canvas.TextOut(lRand*10+(Breite-55)*10,
  y*10,'Seite '+IntToStr(Printer.PageNumber));
end;


begin
  with Printer do
  begin
    Orientation:=poPortrait;
    BeginDoc;
    SetMapMode(Handle,MM_LOMETRIC);
    breite:=GetDeviceCaps(Handle,HorzSize);
    hoehe:=GetDeviceCaps(Handle,VertSize);
    y:= -oRand;
    printTitle(name);
    For i:=1 To Form1.Richedit1.Lines.count Do
    Begin
      ausgabeZeile(Form1.Richedit1.Lines[i]);
      If y< -(hoehe-uRand) then
      Begin
       // break;
        SeitenNr;
        NewPage;
        y:= -oRand;
        SetMapMode(Handle,MM_LOMETRIC);
        printTitle(name);
      end;
    end;
    SeitenNr;
    EndDoc;
  end;
end;
end.

setze auf eine Form ein Richedit und einen Button und einen Printdialog
Delphi-Quellcode:
uses udruck;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
  Richedit1.Width := 600;
  if Printdialog1.Execute then
  begin
      printText('Ausdruck Text');
  end;
end;

vieleicht kanst Du ja was damit machen

mfg

BrunoT
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat