impressão delphi

Delphi

29/07/2010

estou desenvolvendo um sistema para lanchonete, mas estou tendo dificuldade na impressão, estou tentando com o quikreport, mas o alinhamento está dando errado e está saltando muito papel na hora da impressão, a impressora e bematech   esperando resposta desde ja obrigado.
Wagner

Wagner

Curtidas 0

Respostas

Carlos Bernardo

Carlos Bernardo

29/07/2010

 Boa noite...   Eu uso write e writeln ... abaixo um exemplo     TRY
    AssignFile(impressora,saidaLpt); //impressora(variavel TextFile) , saidalpt (LPT1) \\servidor\impressora
    Rewrite(Impressora);
    write(impressora,modoimp); // modoimp //variavel com caracteres especiais de varios modelos de impressora
    tamtexto := length(cRazao); // cRazao (Nome Fantasia)
    tamtexto := (iColuna - tamtexto) div 2; //iColuna (numero de colunas a serem impressas)
    col := inttostr(tamtexto);
    write(Impressora,Format('%'+col+'s',['']) ); //imprimi espacos em branco para centralizar
    writeln(Impressora,cRazao); //imprimi o o nome fantasia centralizado.
    tamtexto := length(cEndereco);
    tamtexto := (iColuna - tamtexto) div 2;
    col := inttostr(tamTexto);
    write(Impressora,Format('%'+col+'s',['']) );
    writeln(Impressora,cEndereco);
    If not empty(cFone) then
      begin
        tamtexto := length(cFone);
        tamtexto := (iColuna - tamtexto) div 2;
        col := inttostr(tamTexto);
        write(Impressora,Format('%'+col+'s',['']) );
        writeln(Impressora,cFone);
      end;
    cSeparador := replicate('-',iColuna);
    writeln(Impressora,cSeparador);
  Finally
    CloseFile(Impressora);
  end;   function Replicate( Caracter:String; Quant:Integer ): String;
{Repete o mesmo caractere várias vezes}
var I : Integer;
begin
Result := '';
  for I := 1 to Quant do
  Result := Result + Caracter;
end;

usando esse metodo, nao esqueça de criar uma impressora no gerenciador de impressoras, assim evita travamento da maquina...    
GOSTEI 0
Wagner

Wagner

29/07/2010

blz carlos, queria saber quais são os tipo de das variaveis mostradas no codigo impressora, modoimp e as demais. pois esse variavel modoimp é a q eu preciso entender pois ela indica onde sera impressão desde já obrigado.  
GOSTEI 0
Carlos Bernardo

Carlos Bernardo

29/07/2010

Opa... Utilizo dessa maneira: Criei constantes com os comandos das impressoras q eu trabalho, se amanha aperecer mais alguma, e so eu adicionar ela na constante e gravar no modoimp, assim nao preciso criar uma procedure para cada impressora, pois os comandos sao diferentes...   Bema = Bematech Epson = EpsonLx 300 Lx300P = EpsonLx 300 Plus   const
cBema_ATComp =  #27#77;   //Ativa compactacao
cEpson_ATComp = #15;
cLX300P_ATComp = #27#80#15 ;
cBema_DSComp =  #27#87;   //Desativa compactacao
cEpson_DSComp = #18;
cLX300P_DSComp = #27#80#18 ;
  Var impressora : TextFile; modoimp :string;       If dm.sqlParams.FieldByname('ModImp').asstring = 'epsonLx'  then
    modoimp := cEpson_AtComp
  else
  If dm.sqlParams.FieldByname('ModImp').asstring = 'LxPlus'  then
    modoimp := cLx300P_AtComp
  else
    modoimp := cBema_AtComp;     Espero ter colaborado...
GOSTEI 0
Wagner

Wagner

29/07/2010

vlw pela ajuda Carlos ajuda muito
GOSTEI 0
POSTAR