Printer class question - RESOLVED
Re: Printer class question
João Santos - São Paulo - Brasil
Re: Printer class question
Code: Select all
// Using: GDIPLUS.
#include "FiveWin.ch"
#define PAD_LEFT 0
#define PAD_RIGHT 1
#define PAD_CENTER 2
FUNCTION BoxRed() // CAIXA REDONDA - BOXROUND.
LOCAL oPrn, oFont, oFont2, oFont3, oPen, oPen1, oPen2, oPen3
LOCAL oBrush, oFondo
LOCAL ResLinha, ResColuna, nLinha, nColuna
LOCAL nLinBox, nColBox, nAltBox, nTamBox, lBorEsq, lBorDir
PRINT oPrn NAME "Ejemplo de caja redondeada" PREVIEW
DEFINE BRUSH oBrush COLOR nRGB(250,213,174) // Bello
DEFINE BRUSH oFondo COLOR CLR_GRAY // HGRAY
// DEFINE PEN oPen WIDTH 2 OF oPrn
DEFINE PEN oPen WIDTH 2 COLOR CLR_CYAN OF oPrn
Define Pen oPen1 Width 25 COLOR nRgb( 192, 192, 192 ) OF oPrn
DEFINE PEN oPen2 WIDTH 2 COLOR CLR_BROWN OF oPrn
DEFINE PEN oPen3 WIDTH 50 COLOR nRgb( 192, 192, 192 ) OF oPrn
DEFINE FONT oFont NAME "Arial" SIZE 0, - 6 BOLD OF oPrn
DEFINE FONT oFont2 NAME "Arial" SIZE 0, - 12 BOLD Underline OF oPrn
DEFINE FONT oFont3 NAME "Arial" SIZE 0, - 18 BOLD OF oPrn
ResLinha := oPrn:nLogPixely() / 2.54
ResColuna := oPrn:nLogPixelx() / 2.54
PAGE
nLinha := 2.25
nColuna := 9.50
nLinBox := 1.60 // Linha que Inicia o Box
nColBox := 5.50 // Coluna que inicia o Box
nAltBox := 3.50 // Altura do Box
nTamBox := 13.60 // Tamanho(Largura) do Box horizontal
lBorEsq := 90 // Bordas arredondadas esquerda.
lBorDir := 90 // Bordas arrendondadas direita.
Box_Round( nLinBox , nColBox , nAltBox, nTamBox, oPrn, lBorEsq, lBorDir, oPen, oFondo )
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
+ "DESCRIZIONE DOCUMENTO", oFont2,, CLR_BLACK,, PAD_CENTER )
nLinha := nLinha + .80
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
+ "FiveWin is invincible.", oFont,, CLR_BLACK,, PAD_CENTER )
ENDPAGE
ENDPRINT
oBrush:End()
oFondo:End()
oPen:End()
oPen:release()
RETURN nil
FUNCTION Box_Round( nArriba, nIzq, nAbajo, nDerecha, oPrn, a, b, oPen, oBrush )
LOCAL hOldPen, xCor := {} , yCor := {}
LOCAL hOldBrush
// Pasamos coordenadas de cms a pixel
xCor := oPrn:Cmtr2Pix(nArriba,nIzq)
yCor := oPrn:Cmtr2Pix(nAbajo,nDerecha)
// Guardamos el Lapiz y la brocha que teniamos
hOldPen := SelectObject( oPrn:hDcOut, oPen:hPen )
hOldBrush := SelectObject( oPrn:hDcOut, oBrush:hBrush )
//Dibujamos el rectangulo redondeado
roundrect(oPrn:hdcOut,xCor[2],xCor[1],yCor[2],yCor[1],a,b)
// y seleccionamos el que habiamos guardado
selectObject( oPrn:hDcOut, hOldPen )
selectObject( oPrn:hDcOut, hOldBrush )
RETURN NIL
#IFDEF __HARBOUR__
DLL FUNCTION RoundRect( hDC AS LONG, ;
iLeft AS _INT , iTop AS _INT, ;
iRight AS _INT, iBottom AS _INT, ;
iWidth AS _INT, iHeight AS _INT ) AS BOOL PASCAL LIB "GDI32.DLL"
#ELSE
DLL FUNCTION RoundRect( hDC AS WORD, ;
iLeft AS _INT , iTop AS _INT, ;
iRight AS _INT, iBottom AS _INT, ;
iWidth AS _INT, iHeight AS _INT ) AS BOOL PASCAL LIB "GDI.EXE"
#ENDIF
João Santos - São Paulo - Brasil
- Silvio.Falconi
- Posts: 4956
- Joined: Thu Oct 18, 2012 7:17 pm
Re: Printer class question
No. sorry
I would like to create a system where I can store the print form on a file
not just a single box that was just an example
I would like to create a system where I can store the print form on a file
not just a single box that was just an example
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
Re: Printer class question
Silvio,
I am sorry to be confused. All of my printouts are stored in .prg files. The content is all variables which are filled from the data. For example, an Invoice has a company name at the top ( either in text or a bitmap ), then two boxes for invoice data, side by side, multi line, and two more boxes for customer and vehicle data. These are grey boxes with borders. Then it lists parts in the next section, all properly formatted, and then labor, and then recommendations. Totals come next in a box that is has a white background, and finally the "fine print" plus any advertising info. These can be black and white, or color.
The whole invoice is a .prg file. It is the "template". Some labels are printed every time, but all data is stored at variables. Those variables are set before the print commences, or drawn fromt the .dbf fields as the printing progresses.
It might be like the report capability in FWH except it is all customized using the printer class, and far more can be done with decision trees to control the actual content and output.
I think this is pretty standard using the class. With that in mind, I'm afraid I don't really understand how this differs from what you want. In my example, the user inputs all the data into a workorder which he interacts with on the screen. To print an invoice ( or other document ) he simply presses a single button and the system selects the data from the current files which match that workorder, applies the proper formatting, and prints the invoice ( all with a single press ), or displays it in preview mode if preferred.
Tim
I am sorry to be confused. All of my printouts are stored in .prg files. The content is all variables which are filled from the data. For example, an Invoice has a company name at the top ( either in text or a bitmap ), then two boxes for invoice data, side by side, multi line, and two more boxes for customer and vehicle data. These are grey boxes with borders. Then it lists parts in the next section, all properly formatted, and then labor, and then recommendations. Totals come next in a box that is has a white background, and finally the "fine print" plus any advertising info. These can be black and white, or color.
The whole invoice is a .prg file. It is the "template". Some labels are printed every time, but all data is stored at variables. Those variables are set before the print commences, or drawn fromt the .dbf fields as the printing progresses.
It might be like the report capability in FWH except it is all customized using the printer class, and far more can be done with decision trees to control the actual content and output.
I think this is pretty standard using the class. With that in mind, I'm afraid I don't really understand how this differs from what you want. In my example, the user inputs all the data into a workorder which he interacts with on the screen. To print an invoice ( or other document ) he simply presses a single button and the system selects the data from the current files which match that workorder, applies the proper formatting, and prints the invoice ( all with a single press ), or displays it in preview mode if preferred.
Tim
Tim Stone
http://www.MasterLinkSoftware.com
timstone@masterlinksoftware.com
Using: FWH 19.06 with Harbour 3.2.0 / Microsoft Visual Studio Community 2019
http://www.MasterLinkSoftware.com
timstone@masterlinksoftware.com
Using: FWH 19.06 with Harbour 3.2.0 / Microsoft Visual Studio Community 2019
Re: Printer class question
OK. When you manage to do this, please post to all FiveWin users, it will be super interesting. Waiting. Thank you.
João Santos - São Paulo - Brasil
- Silvio.Falconi
- Posts: 4956
- Joined: Thu Oct 18, 2012 7:17 pm
Re: Printer class question
Timm is all right but you see I have to do a pile of documents every time, in Italy for the prints there are many types and every time I have to do many of them sometimes I use the same prints sometimes I can't use them and so if they do a store where to store the format, the fields would be easierTimStone wrote:Silvio,
I am sorry to be confused. All of my printouts are stored in .prg files. The content is all variables which are filled from the data. For example, an Invoice has a company name at the top ( either in text or a bitmap ), then two boxes for invoice data, side by side, multi line, and two more boxes for customer and vehicle data. These are grey boxes with borders. Then it lists parts in the next section, all properly formatted, and then labor, and then recommendations. Totals come next in a box that is has a white background, and finally the "fine print" plus any advertising info. These can be black and white, or color.
The whole invoice is a .prg file. It is the "template". Some labels are printed every time, but all data is stored at variables. Those variables are set before the print commences, or drawn fromt the .dbf fields as the printing progresses.
It might be like the report capability in FWH except it is all customized using the printer class, and far more can be done with decision trees to control the actual content and output.
I think this is pretty standard using the class. With that in mind, I'm afraid I don't really understand how this differs from what you want. In my example, the user inputs all the data into a workorder which he interacts with on the screen. To print an invoice ( or other document ) he simply presses a single button and the system selects the data from the current files which match that workorder, applies the proper formatting, and prints the invoice ( all with a single press ), or displays it in preview mode if preferred.
Tim
I was hoping for a good report designer program but there is nothing to do, they tell you it uses ER but ER has a lot of problems and honestly wasting time on ER I don't really want to, we always have to do the nistri trained in Italy you have to do about twenty all different in addition to the other prints (lists) that I use the simple treport cche also there are the problems like the famous ncounter then solved in a topic in the forum, we have the invoice but we do not have a single document there there are many types of invoices:
accompanying invoice,
deferred invoice,
proforma invoice,
immediate invoice,
deferred invoice,
advance invoice
down payment invoice
invoice for gifts
Credit and debit note
and these are for invoices only then there are many other documents
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
Re: Printer class question
Silvio,
I likely have about 60 printouts, and they can be quite different. Each has it's own .prg.
For example, on any workorder, there are 3 options: Estimate, Invoice, and Worksheet. So in one .prg, as it goes through the process I mentioned earlier, it may print different data or formats. How does it know ? You can use IF ... ENDIF statements or the the good DO CASE option. You set an array of flags to .f., and then before printing you select the option you want for the format. That changes the value of the proper flag to .t., and the printout outputs those options.
If you requier multiple reports, you could first show a checklist. Then, you call a single Function that will print each report that is checked. You will need a key for the data to use ( in my case it is the workorder number ), but your reports can all draw the proper data based on that key.
To put it simply, each type of form has it's own .prg.
You start with a selection / options screen that allows you to decide which form(s) to print
The data for that specific job is then applied to each form and it outputs them.
Each form can have a unique design based on the needs and requirements of the client, or even the government.
Tim
I likely have about 60 printouts, and they can be quite different. Each has it's own .prg.
For example, on any workorder, there are 3 options: Estimate, Invoice, and Worksheet. So in one .prg, as it goes through the process I mentioned earlier, it may print different data or formats. How does it know ? You can use IF ... ENDIF statements or the the good DO CASE option. You set an array of flags to .f., and then before printing you select the option you want for the format. That changes the value of the proper flag to .t., and the printout outputs those options.
If you requier multiple reports, you could first show a checklist. Then, you call a single Function that will print each report that is checked. You will need a key for the data to use ( in my case it is the workorder number ), but your reports can all draw the proper data based on that key.
To put it simply, each type of form has it's own .prg.
You start with a selection / options screen that allows you to decide which form(s) to print
The data for that specific job is then applied to each form and it outputs them.
Each form can have a unique design based on the needs and requirements of the client, or even the government.
Tim
Tim Stone
http://www.MasterLinkSoftware.com
timstone@masterlinksoftware.com
Using: FWH 19.06 with Harbour 3.2.0 / Microsoft Visual Studio Community 2019
http://www.MasterLinkSoftware.com
timstone@masterlinksoftware.com
Using: FWH 19.06 with Harbour 3.2.0 / Microsoft Visual Studio Community 2019
- Silvio.Falconi
- Posts: 4956
- Joined: Thu Oct 18, 2012 7:17 pm
Re: Printer class question
Nages,
Method box ...parametri atext
I can set text font color
How se can add Also the align ?
Method box ...parametri atext
I can set text font color
How se can add Also the align ?
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
- Silvio.Falconi
- Posts: 4956
- Joined: Thu Oct 18, 2012 7:17 pm
Re: Printer class question
Nages,nageswaragunupudi wrote:Code: Select all
function PrnBox() local oPrn, oFont, oBrush DEFINE BRUSH oBrush FILE "c:\fwh\bitmaps\backgrnd\pebbles.bmp" PRINT oPrn PREVIEW DEFINE FONT oFont NAME "VERDANA" SIZE 0,-30 OF oPrn BOLD PAGE oPrn:RoundBox( 1, 1, 5, 5, .5, .5, { CLR_HRED, 3 }, oBrush, ; { "FIRST" + CRLF + "SECOND", oFont, CLR_WHITE, "B" }, ; "INCHES" ) @ 1,1 PRINT TO oPrn TEXT "HOLLOW TEXT" SIZE 4, 4 INCHES FONT oFont ; COLOR CLR_YELLOW OUTLINE CLR_HRED SIZE 3 ALIGN "T" ENDPAGE ENDPRINT RELEASE FONT oFont RELEASE BRUSH oBrush return nil
this test run ok BUT I tried
DEFINE FONT oFont NAME "VERDANA" SIZE 0,-6 OF oPrn BOLD
oPrn:Box( 1, 5.5,1.5,0.8, { CLR_BLACK, 1 }, CLR_HGRAY, ;
{ "TIPO DOCUMENTO", oFont, CLR_WHITE, "TL" }, ;
"CM" )
and not run ok
and this small test not run
I wish recreate this
I tried with
Code: Select all
#include"fivewin.ch"
function PrnBox()
local oPrn, oFont, oFont2
local aDat
PRINT oPrn PREVIEW
DEFINE FONT oFont NAME "VERDANA" SIZE 0,-6 OF oPrn BOLD
DEFINE FONT oFont2 NAME "VERDANA" SIZE 0,-12 OF oPrn BOLD
PAGE
// x , y, nWidth,nHeight
aDat:= {;
{1,5.5,4.5,0.8,"Tipo Documento" },;
{5.5,5.5,2.5,0.8,"Numero Documento" },;
{8,5.5,2.5,0.8,"Data Documento" },;
}
For n= 1 to 3
X:= aDat[n][1]
Y:= aDat[n][2]
nWid:= aDat[n][3]
nHei:= aDat[n][4]
oPrn:Box( x, y,nHei,nWid, { CLR_BLACK, 1 }, CLR_HGRAY, ;
{ aDat[n][5], oFont, CLR_WHITE, "TL" }, ;
"CM" )
next
ENDPAGE
ENDPRINT
RELEASE FONT oFont
RELEASE FONT oFont2
return nil
the measures are on cm
but the result is this
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
- Silvio.Falconi
- Posts: 4956
- Joined: Thu Oct 18, 2012 7:17 pm
Re: Printer class question
Now perhaps I understood but the text are not showded
I tried with
and this is the result
the coordinates are all bad
and the text smaller of method box are not showed
I tried with
Code: Select all
function PrnBox()
local oPrn, oFont, oFont2
PRINT oPrn PREVIEW
DEFINE FONT oFont NAME "VERDANA" SIZE 0,-6 OF oPrn BOLD
DEFINE FONT oFont2 NAME "VERDANA" SIZE 0,-10 OF oPrn BOLD
PAGE
oPrn:Box(7.50,1,6.6,7.5, { CLR_BLACK, 1 }, CLR_HGRAY, ;
{ "TIPO DOCUMENTO", oFont, CLR_WHITE, "TL" }, ;
"CM" )
oPrn:Box(7.50,7.6,6.6,10.5, { CLR_BLACK, 1 }, CLR_HGRAY, ;
{ "NUMERO DOCUMENTO", oFont, CLR_WHITE, "TR" }, ;
"CM" )
oPrn:Box(7.50,10.6,6.6,14.5, { CLR_BLACK, 1 }, CLR_HGRAY, ;
{ "DATA DOCUMENTO", oFont, CLR_WHITE, "B" }, ;
"CM" )
//FIELD
@ 3.50,1 PRINT TO oPrn TEXT "DESCRIZIONE DOCUMENTO" SIZE 6, 4 CM FONT oFont2 ;
COLOR CLR_BLACK ALIGN "BR"
@ 3.50,5.8 PRINT TO oPrn TEXT "NUMERO" SIZE 4, 4 CM FONT oFont2 ;
COLOR CLR_BLACK ALIGN "BR"
@ 3.50,9.8 PRINT TO oPrn TEXT "DATA" SIZE 4, 4 CM FONT oFont2 ;
COLOR CLR_BLACK ALIGN "BR"
ENDPAGE
ENDPRINT
RELEASE FONT oFont
RELEASE FONT oFont2
return nil
the coordinates are all bad
and the text smaller of method box are not showed
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
- Silvio.Falconi
- Posts: 4956
- Joined: Thu Oct 18, 2012 7:17 pm
Re: Printer class question
Perhaps we found the solution
now I see all text
Note ( the values inserted are in cm)
if the boxes start at line 7.50, the writings with the "PRINT TO oPrn" command start at line 4.30
and this is difficult to program, that is, it is not clear why this text must begin 3.20 cm less
now I see all text
Code: Select all
#include"fivewin.ch"
function PrnBox()
local oPrn, oFont, oFont2
local aDat
local nRow,nCol,nHei,nWid
PRINT oPrn PREVIEW
DEFINE FONT oFont NAME "VERDANA" SIZE 0,-6 OF oPrn BOLD
DEFINE FONT oFont2 NAME "VERDANA" SIZE 0,-10 OF oPrn BOLD
PAGE
nRow:= 7.50
nCol:= 1
nHei:= nRow+0.8
nWid:= 7.5
oPrn:Box(nRow,nCol,nHei,nWid, { CLR_BLACK, 1 }, CLR_HGRAY, ;
{ "TIPO DOCUMENTO", oFont, CLR_WHITE, "TL" }, ;
"CM" )
nRow:= 7.50
nCol:= 7.7
nHei:= nRow+0.8
nWid:= 11.5
oPrn:Box(nRow,nCol,nHei,nWid, { CLR_BLACK, 1 }, CLR_HGRAY, ;
{ "NUMERO DOCUMENTO", oFont, CLR_WHITE, "TL" }, ;
"CM" )
nRow:= 7.50
nCol:= 11.7
nHei:= nRow+0.8
nWid:= 15.5
oPrn:Box(nRow,nCol,nHei,nWid, { CLR_BLACK, 1 }, CLR_HGRAY, ;
{ "DATA DOCUMENTO", oFont, CLR_WHITE, "TL" }, ;
"CM" )
nRow:= 4.30
//FIELD
@ nRow,1 PRINT TO oPrn TEXT "DESCRIZIONE DOCUMENTO" SIZE 6, 4 CM FONT oFont2 ;
COLOR CLR_BLACK ALIGN "BR"
@ nRow,5.8 PRINT TO oPrn TEXT "NUMERO" SIZE 4, 4 CM FONT oFont2 ;
COLOR CLR_BLACK ALIGN "BR"
@ nRow,9.8 PRINT TO oPrn TEXT "DATA" SIZE 4, 4 CM FONT oFont2 ;
COLOR CLR_BLACK ALIGN "BR"
ENDPAGE
ENDPRINT
RELEASE FONT oFont
RELEASE FONT oFont2
return nil
Note ( the values inserted are in cm)
if the boxes start at line 7.50, the writings with the "PRINT TO oPrn" command start at line 4.30
and this is difficult to program, that is, it is not clear why this text must begin 3.20 cm less
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
Re: Printer class question
Hello Silvio,
You can try with EasyReport.
Best regards,
Otto
You can try with EasyReport.
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************
- Silvio.Falconi
- Posts: 4956
- Joined: Thu Oct 18, 2012 7:17 pm
Re: Printer class question
Otto wrote:Hello Silvio,
You can try with EasyReport.
Best regards,
Otto
As I told ER not run well!!!!!!!!!!!!!!
I can't waste time making prints
Unfortunately you don't live in Italy (even if you are 15 KM from the border)
In Italy there are many special documents to do
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
- Silvio.Falconi
- Posts: 4956
- Joined: Thu Oct 18, 2012 7:17 pm
Re: Printer class question
with the help of Nageswarao I was able to create something equal
this is the original
and this is what I created this afternoon, studying the technique
tomorrow I will think how to create something automatically and print the forms from a print format archive
Nages,
the thickness of the lines is not good, yet I have put 1 as a value, you can have a choice like:
Very fine, fine, Medium, Thick, very thick
this is the original
and this is what I created this afternoon, studying the technique
tomorrow I will think how to create something automatically and print the forms from a print format archive
Nages,
the thickness of the lines is not good, yet I have put 1 as a value, you can have a choice like:
Very fine, fine, Medium, Thick, very thick
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
- Silvio.Falconi
- Posts: 4956
- Joined: Thu Oct 18, 2012 7:17 pm
Re: Printer class question
resolved
{ CLR_BLACK, 0.5 }
{ CLR_BLACK, 0.5 }
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC