Ver Mensaje Individual
  #3  
Antiguo 23-02-2012
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Reputación: 16
ethangio Va por buen camino
Newtron pero entonces como mando la secuencia de corte ??

He probado estos ejemplos de codigo y no me sale .. Tengo en el Form 1 listview y 1 memo

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var F : TextFile;
    i, j : integer;
    temp : string;
begin
     //AssignFile(F, 'COM3'); //corta localmente e imprime
     AssignPrn(F); //solo imprime 
     Rewrite(F);

     // Ponemos título de las columnas
     temp := 'Columna1 Columna2 Columna3 Columna4 Columna5';
     Writeln(F, temp);
     Writeln(F,'Hola linea 1');
     Writeln(F,#13+#10);
     Writeln(F,'Hola despues del enter linea 2');
     Writeln(F,#13+#10);
     Writeln(F,#13+#10);
     Writeln(F,#13+#10);
     Writeln(F,#13+#10); // secuencia de enter
     Writeln(F,#27+#109); //secuencia de corte
     CloseFile(F);
end;

procedure TForm1.Button2Click(Sender: TObject);
var y, i, j : integer;
    temp : string;
begin
     Printer.BeginDoc;
     With Printer.canvas do
      Begin
           Printer.Title := 'El titulo del documento que quiero';
           Font.Name := 'MS Sans Serif';
           Font.Color := ClBlack;
           Pen.Color := ClBlack;
           Font.Size := 12;
           Font.Name := 'Times New Roman';
           Font.Size := 12;

           // imprimimos ListView
           temp := 'Titulo que sale escrito en el papel';
           y := 100;
           TextOut(10, y, temp);
           for i := 0 to ListView1.Items.Count - 1 do
            begin
                 inc(y, 20);
                 temp := ListView1.Items[i].Caption;
                 for j := 0 to ListView1.Items[i].SubItems.Count - 1 do
                     temp := temp + ' ' + ListView1.Items[i].SubItems[j];
                 TextOut(10, y, temp);
            end;
                 inc(y, 20);
                 TextOut(10, y, #27+#109);
      end;
     Printer.EndDoc;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  r: TRect;
  i: Integer;
begin
  with Printer do
    begin
      r := Rect(200,200,(Pagewidth - 200),(PageHeight - 200));
      BeginDoc;
      Canvas.Brush.Style := bsClear;
      for i := 0 to Memo1.Lines.Count do
      begin
       Canvas.TextOut(200,200 + (i *
                   Canvas.TextHeight(Memo1.Lines.Strings[i])),
                   Memo1.Lines.Strings[i]);
      end;

       Canvas.TextOut(200,200 + (9 *
                   Canvas.TextHeight(Memo1.Lines.Strings[9])),
                   #27+#109);

      Canvas.Brush.Color := clBlack;
      Canvas.FrameRect(r);
      EndDoc;
    end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
s : string;
begin
if not OpenPrinter(PChar('\\ethan-PC\caja'), Handle, nil) then begin
ShowMessage('Printer «\\ethan-PC\caja» not found.');
Exit;
end;

with DocInfo1 do begin
pDocName := PChar('Document Name');
pOutputFile := nil;
pDataType := 'RAW';
end;

StartDocPrinter(Handle, 1, @DocInfo1);

s := 'First line of first page' + #13+#10;
WritePrinter(Handle, PChar(s), Length(s), N);
s := 'Second line of first page' + #13+#10;
WritePrinter(Handle, PChar(s), Length(s), N);
s := #27+#109;
WritePrinter(Handle, PChar(s), Length(s), N);

EndPagePrinter(Handle);

{s := 'First line of second page' + #13#10;
WritePrinter(Handle, PChar(s), Length(s), N);
s := 'Second line of second page' + #13#10;
WritePrinter(Handle, PChar(s), Length(s), N);
}
EndPagePrinter(Handle);

EndDocPrinter(Handle);

ClosePrinter(Handle);
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  PrinterHandle: THandle;
  DocInfo: TDocInfo1;
  i: Integer;
  B: Byte;
  Escritos: DWORD;
  Str : String;
begin
  Str:='linea 1 ,,, '+#13+#10+'linea 2...'+#27+#109;
  if OpenPrinter(PChar('\\ethan-PC\caja'), PrinterHandle, nil) then
  try
    FillChar(DocInfo,Sizeof(DocInfo),#0);
    with DocInfo do
    begin
      pDocName:= PChar('Printer Test');
      pOutputFile:= nil;
      pDataType:= 'RAW';
    end;
    if StartDocPrinter(PrinterHandle, 1, @DocInfo) <> 0 then
    try
      if StartPagePrinter(PrinterHandle) then
      try
        while Length(Str) > 0 do
        begin
          if Copy(Str, 1, 1) = '\' then
          begin
            if Uppercase(Copy(Str, 2, 1)) = 'X' then
              Str[2]:= '$';
            if not TryStrToInt(Copy(Str, 2, 3),i) then
              Exit;
            B:= Byte(i);
            Delete(Str, 1, 3);
          end else B:= Byte(Str[1]);
          Delete(Str,1,1);
          WritePrinter(PrinterHandle, @B, 1, Escritos);
        end;
      finally
        EndPagePrinter(PrinterHandle);
      end;
    finally
      EndDocPrinter(PrinterHandle);
    end;
  finally
    ClosePrinter(PrinterHandle);
  end;
end;

jeje son mis ejemplos para imprimir .. Saludos

Newtron hay forma de saber por medio del nombre de la impresora local en que puerto esta conectada ???
Responder Con Cita