Daniel,
Veo que no soy el único que utilizo "a mi manera" la impresión de informes, facturas, listados...
Yo utilizo la clase TPrinter. En un .ini tengo las coordenadas, texto, fuente, tamaño... las guardo/recupero para utilizarlas cuando las necesito
Texto, Valores, imágenes, líneas, cuadros, memos...
algo así...
Code: Select all
ini...
Text1=70.0,635.0,"A L B A R À","Arial",18,0,800,0,0
Text2=100.0,710.0,"Número","Arial",9,0,400,0,0
Text3=300.0,710.0,"Data","Arial",9,0,400,0,0
Text4=575.0,710.0,"C/Client","Arial",9,0,400,0,0
Text5=800.0,710.0,"Pàg.","Arial",9,0,400,0,0
Text6=1200.0,795.0,"N.I.F.:","Arial",9,0,400,0,0
Nom=1200,430,800,35,1,"Arial",10,0,800,0
Adreca=1200,500,800,50,1,"Arial",10,0,400,0
Poblacio=1200,550,800,50,1,"Arial",10,0,400,0
prg...
//Texte normal
For n:=1 to Len( aText )
If !(aText[n,1] = 0 .and. aText[n,2] = 0)
Printer:oCanvas:oFont := TFont():Create( aText[n,4], aText[n,5], aText[n,6], aText[n,7] )
If Len( aText[n] ) >= 9
Printer:oCanvas:oFont:nOrientation := aText[n,9]
EndIf
Printer:oCanvas:TextOut( aText[n,1], aText[n,2], aText[n,3],, aText[n,8] )
Printer:oCanvas:oFont := Nil
EndIf
Next
...
aNom := { &(oIni:GetEntry( cTipus, "Nom", "0,0" )) }
aAdreca := { &(oIni:GetEntry( cTipus, "Adreca", "0,0" )) }
aPoblacio := { &(oIni:GetEntry( cTipus, "Poblacio", "0,0" )) }
...
If !(aNom[1] = 0 .and. aNom[2] = 0)
Printer:oCanvas:oFont := TFont():Create( aNom[6], aNom[7], aNom[8], aNom[9] )
PrinterDrawText( aClient[2], { aNom[1]/10, aNom[2]/10, (aNom[1]+aNom[3])/10, (aNom[2]+aNom[4])/10 }, xAlignment( aNom[5] ), aNom[10] )
Printer:oCanvas:oFont := Nil
EndIf
If !(aAdreca[1] = 0 .and. aAdreca[2] = 0)
Printer:oCanvas:oFont := TFont():Create( aAdreca[6], aAdreca[7], aAdreca[8], aAdreca[9] )
PrinterDrawText( aClient[5], { aAdreca[1]/10, aAdreca[2]/10, (aAdreca[1]+aAdreca[3])/10, (aAdreca[2]+aAdreca[4])/10 }, xAlignment( aAdreca[5] ), aAdreca[10] )
Printer:oCanvas:oFont := Nil
EndIf
If !(aPoblacio[1] = 0 .and. aPoblacio[2] = 0)
Printer:oCanvas:oFont := TFont():Create( aPoblacio[6], aPoblacio[7], aPoblacio[8], aPoblacio[9] )
PrinterDrawText( aClient[13], { aPoblacio[1]/10, aPoblacio[2]/10, (aPoblacio[1]+aPoblacio[3])/10, (aPoblacio[2]+aPoblacio[4])/10 }, xAlignment( aPoblacio[5] ), aPoblacio[10] )
Printer:oCanvas:oFont := Nil
EndIf
De esta manera, lo estoy utilizando, y no me interfiere la base de datos que esten guardados ya sea DBFs o MariaDB