Gracias hmpaquito y Cristobal por vuestra contestación. La solución para imprimir un campo MEMO, tanto con la clase tReport como con la clase tPinter, la tengo implementada desde hace tiempo con un MEMOLINE, al igual que hace Rafa Carmona en su clase tImprime.
Pero si leeis la contestación en el inicio de este hilo del maestro Antonio Linares, el da una solución distinta con la función de Windows DrawText(). Sobre esto iba mi pregunta. Es decir, sobre imprimir un campo MEMO, sin la antigua funcion MEMOLINE.
He conseguido que la función DrawText() me devuelva el número de lineas del campo memo, pero no sé despues como hacer para que se imprima el contenido del campo memo de esta nueva manera.
Ayuda -imprimir factura con columna texto tipo memo
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Re: Ayuda -imprimir factura con columna texto tipo memo
Un saludo
Manuel
Manuel
Re: Ayuda -imprimir factura con columna texto tipo memo
Prueba asi.
cTxt:="Décimo Noveno: El Trabajador no podrá ingresar al trabajo en estado de ebriedad, ni podrá consumir " +;
"bebidas alcohólicas ni sustancias prohibidas en su lugar de trabajo. Ni se permitirá el porte de armas " +;
"blancas ni de ninguna otra especie. "
Imp_Memo(cTxt,oPrn,16.6,2.0,18.0,oFnt1,0.4,)
FUNCTION Imp_Memo(cTxt,oPrn,nRow,nCol,nWid,oFont,nSkp,nClr)
LOCAL cLin, lCont:=.T., nP:=0, lNext, cC, nW
DEFAULT nSkp:=0.4, nClr:=0
cTxt:=Alltrim(cTxt)
nW:=nWid-0.2
nRow-=nSkp
oPrn:Cmtr2Pix(0,@nWid)
DO WHILE lCont // un desmadre para separar
cLin:=cC:="" // y justificar los memos!!
lNext:=.T.
DO WHILE oPrn:GetTextWidth(cLin,oFont)<nWid ;
.AND. nP<=Len(cTxt) .AND. lNext
nP++
cC:=Substr(cTxt,nP,1)
IF Asc(cC)<>13
cLin+=cC
ELSE
nP++
lNext:=.F.
ENDIF
ENDDO
IF Asc(cC)<>13 .AND. Asc(cC)<>0
cC:=Substr(cTxt,nP+1,1)
IF " "$cLin .AND. cC<>" "
DO WHILE cC<>" " .AND. Len(cLin)>0
cLin:=Substr(cLin,1,Len(cLin)-1)
cC:=Right(cLin,1)
nP--
ENDDO
ELSE
cLin:=Substr(cLin,1,Len(cLin)-2)+"-"
cC:=Right(cLin,1)
nP-=2
ENDIF
oPrn:CmSay(nRow+=nSkp,nCol,Alltrim(cLin),oFont,nW,nClr,,3)
ELSE
oPrn:CmSay(nRow+=nSkp,nCol,Alltrim(cLin),oFont,,nClr)
ENDIF
IF nP>=Len(cTxt)
lCont:=.F.
ENDIF
ENDDO
RETURN (Nil)
saludos
cTxt:="Décimo Noveno: El Trabajador no podrá ingresar al trabajo en estado de ebriedad, ni podrá consumir " +;
"bebidas alcohólicas ni sustancias prohibidas en su lugar de trabajo. Ni se permitirá el porte de armas " +;
"blancas ni de ninguna otra especie. "
Imp_Memo(cTxt,oPrn,16.6,2.0,18.0,oFnt1,0.4,)
FUNCTION Imp_Memo(cTxt,oPrn,nRow,nCol,nWid,oFont,nSkp,nClr)
LOCAL cLin, lCont:=.T., nP:=0, lNext, cC, nW
DEFAULT nSkp:=0.4, nClr:=0
cTxt:=Alltrim(cTxt)
nW:=nWid-0.2
nRow-=nSkp
oPrn:Cmtr2Pix(0,@nWid)
DO WHILE lCont // un desmadre para separar
cLin:=cC:="" // y justificar los memos!!
lNext:=.T.
DO WHILE oPrn:GetTextWidth(cLin,oFont)<nWid ;
.AND. nP<=Len(cTxt) .AND. lNext
nP++
cC:=Substr(cTxt,nP,1)
IF Asc(cC)<>13
cLin+=cC
ELSE
nP++
lNext:=.F.
ENDIF
ENDDO
IF Asc(cC)<>13 .AND. Asc(cC)<>0
cC:=Substr(cTxt,nP+1,1)
IF " "$cLin .AND. cC<>" "
DO WHILE cC<>" " .AND. Len(cLin)>0
cLin:=Substr(cLin,1,Len(cLin)-1)
cC:=Right(cLin,1)
nP--
ENDDO
ELSE
cLin:=Substr(cLin,1,Len(cLin)-2)+"-"
cC:=Right(cLin,1)
nP-=2
ENDIF
oPrn:CmSay(nRow+=nSkp,nCol,Alltrim(cLin),oFont,nW,nClr,,3)
ELSE
oPrn:CmSay(nRow+=nSkp,nCol,Alltrim(cLin),oFont,,nClr)
ENDIF
IF nP>=Len(cTxt)
lCont:=.F.
ENDIF
ENDDO
RETURN (Nil)
saludos
Re: Ayuda -imprimir factura con columna texto tipo memo
Ahora si entiendo lo que intentas
Has probado directamente con:
Has probado directamente con:
Code: Select all
DrawText( oPrn:hdc, mcomer->NOTAS, { nFilReg + 0.5, 4.5, nFilReg + 10, 2500 }, DT_WORDBREAK )
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Re: Ayuda -imprimir factura con columna texto tipo memo
Esa función te devuelve el número de lineas a imprimir, según el ancho que le pongas. Pero no imprime nada.cnavarro wrote:Ahora si entiendo lo que intentas
Has probado directamente con:Code: Select all
DrawText( oPrn:hdc, mcomer->NOTAS, { nFilReg + 0.5, 4.5, nFilReg + 10, 2500 }, DT_WORDBREAK )
Un saludo
Manuel
Manuel
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
Re: Ayuda -imprimir factura con columna texto tipo memo
Allá por el 2002 hice _ a TPrinter y los vengo usando desde entonces sin problema. Publique ejemplos, ya no los tengo pero he aquí _.
http://www.despachoarteaga.com.mx/descargas/Printer.zip
http://www.despachoarteaga.com.mx/descargas/Printer.zip