Code: Select all
#include <hmg.ch>
#include "common.ch"
#include "minigui.ch"
#include "hbclass.ch"
/*
cAssunto := "SOLICITAÇÃO COMPRAS Num. " + cCod
oHTML := HB_THTML_CSS():New()
//oHTML:SetTitle( "Harbour Power Demonstration" )
oHTML:AddHead( "SOLICITAÇÃO COMPRAS Num. : " + cCod )
oHTML:AddPara( "Requisitante : " + cNome_Req, "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Setor : " + cSetor_Req, "right" , 200 , .T.,,,, 4 , 2 )
oHTML:AddPara( "Data da Solitação : " + cData1, "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Data de Aprovação : " + cData2, "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Data de Previsão : " + cData3, "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Data de Entrega : " + cData4, "right" , 200 , .T.,,,, 4)
oHTML:AddPara( "Ordem de Compra : ", "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Maquina : ", "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Observação : ", "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "por favor não responda este e-mail, ele serve apenas para comunicar a você e o solicitante de Manuteção.", "left" , 1000 , .T.,,,, 3.5 )
oHTML:AddPara( "[MasterServ Manutenção]", "left" , 200 , .T. ,,,, 3.5)
//oHTML:AddLink( "https://harbour.github.io", "Meet the Harbour power!" )
oHTML:Generate(3) //Generate(nLineheight) line spacing
//oHTML:ShowResult()
oHTML:SaveToFile( "body.html" )
//cCorpoMsg2 := oHTML:ShowResult()
*/
CREATE CLASS HB_THTML_CSS
VAR cTitle // Page Title
VAR cBody // HTML Body Handler
VAR cBGColor // Background Color
VAR cLinkColor // Link Color
VAR cvLinkColor // Visited Link Color
VAR cContent // Page Content Handler
METHOD New() // New Method
METHOD SetTitle( cTitle ) // Set Page Title
METHOD AddLink( cLinkTo, cLinkName ) // Add <H1> Header
METHOD AddHead( cDescr ) // Add Hyperlink
METHOD AddPara( cTag, cAlign ) // Add Paragraph
METHOD Generate() // Generate HTML
METHOD ShowResult() // Saves Content to File
METHOD SaveToFile( cFile ) // Show Result
END CLASS
METHOD New() CLASS HB_THTML_CSS
::cTitle := "Untitled"
::cBGColor := "#FFFFFF"
::cLinkColor := "#0000FF"
::cvLinkColor := "#FF0000"
::cContent := ""
::cBody := ""
RETURN Self
METHOD SetTitle( cTitle ) CLASS HB_THTML_CSS // title de pagina doc.html
::cTitle := txt2html(cTitle)
RETURN Self
METHOD AddLink( cLinkTo, cLinkName ) CLASS HB_THTML_CSS
::cBody += "<a href='" + cLinkTo + "'>" + cLinkName + "</a>"
RETURN Self
METHOD AddHead( cDescr ) CLASS HB_THTML_CSS // titulo de body(conteudo do texto)
// Why this doesn't work?
// ::cBody += ...
// ???
::cBody += "<h1>" + txt2html(cDescr) + "</h1>"
RETURN NIL
METHOD AddPara( cTag, cAlign, nWidth, lBold,lItalic,cColor,cFonte,nSize) CLASS HB_THTML_CSS
hb_default( @cAlign, "Left" )
hb_default( @nWidth, 300 )
hb_default( @lBold, .F. )
hb_default( @lItalic, .F. )
hb_default( @cColor, "black" )
hb_default(@cFonte, "Arial" )
**hb_default(@cFonte, "Helvetica" )
**hb_default(@cFonte,"Times New Roman")
hb_default( @nSize, 2.5 )
//"<p align='" + cAlign + "'>" + hb_eol() + ;
if lBold == .T. .and. lItalic == .F.
//msgdebug("bold")
cTexto := "<font color='"+ cColor + "' face='"+ cFonte +"' size='"+ Alltrim(STR(nSize)) +"'px'<b>"+txt2html(cTag) +"</span></b></font>" + hb_eol()
elseif lBold == .F. .and. lItalic == .T.
cTexto := "<font color='"+ cColor + "' face='"+ cFonte +"' size='"+ Alltrim(STR(nSize)) +"'px'<i>"+txt2html(cTag) +"</i></font>" + hb_eol()
elseif lBold == .T. .and. lItalic == .T.
cTexto := "<font color='"+ cColor + "' face='"+ cFonte +"' size='"+ Alltrim(STR(nSize)) +"'px'<b><i>"+txt2html(cTag) +"</i></b></font>" + hb_eol()
elseif lBold == .F. .and. lItalic == .F.
cTexto := txt2html(cTag) + hb_eol()
endif
//<span style = 'line-height: 0.5'>
::cBody += ;
"<p class ='line_height' align='" + cAlign + "' style='width:"+ alltrim(str(nWidth)) +"px'>" + hb_eol() + ;
cTexto +;
"</p>"
RETURN Self
//"+ Alltrim(str(nLine_height)) + "
/**
<div>
<div style="float: left;width: 300;text-align: right;">Valor 1:</div>
<div style="float: right;">Valor 2</div>
<div style="clear: both;"></div>
</div>
*/
METHOD Generate(nLineheight) CLASS HB_THTML_CSS
hb_default( @nLineheight, 0.7 )
//msgdebug(Alltrim(str(nLineheight)))
::cContent := ;
"<html><head><style>p.line_height {line-height:"+ Alltrim(str(nLineheight)) + "}</style>" + hb_eol() + ;
"<title>" + ::cTitle + "</title>" + hb_eol() + ;
"<body link='" + ::cLinkColor + "'" +;
"vlink='" + ::cvLinkColor + "'>" +hb_eol() + ;
::cBody + hb_eol() + ;
"</body></html>"
RETURN Self
METHOD ShowResult() CLASS HB_THTML_CSS
OutStd( ;
;// "HTTP/1.0 200 OK" + hb_eol() + ;
"CONTENT-TYPE: TEXT/HTML" + hb_eol() + hb_eol() + ;
::cContent )
RETURN Self
METHOD SaveToFile( cFile ) CLASS HB_THTML_CSS
LOCAL hFile := FCreate( cFile )
FWrite( hFile, ::cContent )
FClose( hFile )
RETURN Self
/**
cAssunto := "SOLICITAÇÃO COMPRAS Num. " + cCod
oHTML := THtml():New()
//oHTML:SetTitle( "Harbour Power Demonstration" )
oHTML:AddHead( "SOLICITAÇÃO COMPRAS Num. : " + cCod )
oHTML:AddPara( "Requisitante : " + cNome_Req, "right" , 200 , .T.,,,, 4, 0.8 )
oHTML:AddPara( "Setor : " + cSetor_Req, "right" , 200 , .T.,,,, 4 , 0.8 )
oHTML:AddPara( "Data da Solitação : " + cData1, "right" , 200 , .T.,,,, 4, 0.8)
oHTML:AddPara( "Data de Aprovação : " + cData2, "right" , 200 , .T.,,,, 4 , 0.8)
oHTML:AddPara( "Data de Previsão : " + cData3, "right" , 200 , .T.,,,, 4 , 0.8 )
oHTML:AddPara( "Data de Entrega : " + cData4, "right" , 200 , .T.,,,, 4 , 0.8)
oHTML:AddPara( "Ordem de Compra : ", "right" , 200 , .T.,,,, 4, 0.8)
oHTML:AddPara( "Maquina : ", "right" , 200 , .T.,,,, 4, 0.8 )
oHTML:AddPara( "Observação : ", "right" , 200 , .T.,,,, 4, 0.8 )
oHTML:AddPara( "por favor não responda este e-mail, ele serve apenas para comunicar a você e o solicitante de Manuteção.", "left" , 1000 , .T.,,,, 3.5, 0.8)
oHTML:AddPara( "[MasterServ Manutenção]", "left" , 200 , .T. ,,,, 3.5, 0.8)
//oHTML:AddLink( "https://harbour.github.io", "Meet the Harbour power!" )
oHTML:Generate() //Generate(nLineheight) line spacing
//oHTML:ShowResult()
oHTML:SaveToFile( "body.html" )
//cCorpoMsg2 := oHTML:ShowResult()
*/
*********************************
CREATE CLASS HB_THTML
************************************
VAR cTitle // Page Title
VAR cBody // HTML Body Handler
VAR cBGColor // Background Color
VAR cLinkColor // Link Color
VAR cvLinkColor // Visited Link Color
VAR cContent // Page Content Handler
METHOD New() // New Method
METHOD SetTitle( cTitle ) // Set Page Title
METHOD AddLink( cLinkTo, cLinkName ) // Add <H1> Header
METHOD AddHead( cDescr ) // Add Hyperlink
METHOD AddPara( cTag,cAlign_Col1,cTexto, cAlign_Col2, nWidth, lBold,lItalic,cColor,cFonte,nSize,nLineheight ) // Add Paragraph
METHOD Generate() // Generate HTML
METHOD ShowResult() // Saves Content to File
METHOD SaveToFile( cFile ) // Show Result
END CLASS
METHOD New() CLASS HB_THTML
::cTitle := "Untitled"
::cBGColor := "#FFFFFF"
::cLinkColor := "#0000FF"
::cvLinkColor := "#FF0000"
::cContent := ""
::cBody := ""
RETURN Self
METHOD SetTitle( cTitle ) CLASS HB_THTML // title de pagina doc.html
::cTitle := txt2html(cTitle)
RETURN Self
METHOD AddLink( cLinkTo, cLinkName ) CLASS HB_THTML
::cBody += "<a href='" + cLinkTo + "'>" + cLinkName + "</a>"
RETURN Self
METHOD AddHead( cDescr ) CLASS HB_THTML // titulo de body(conteudo do texto)
// Why this doesn't work?
// ::cBody += ...
// ???
::cBody += "<h1>" + txt2html(cDescr) + "</h1>"
RETURN NIL
METHOD AddPara( cTag,cAlign_Col1,cTexto, cAlign_Col2, nWidth, lBold,lItalic,cColor,cFonte,nSize,nLineheight) CLASS HB_THTML
hb_default( @cAlign_Col1, "right" )
hb_default( @cAlign_Col2, "Left" )
hb_default( @nWidth, 300 )
hb_default( @lBold, .F. )
hb_default( @lItalic, .F. )
hb_default( @cColor, "black" )
**hb_default(@cFonte, "Arial" )
hb_default(@cFonte, "Helvetica" )
**hb_default(@cFonte,"Times New Roman")
hb_default( @nSize, 5 )
hb_default( @nLineheight, 0.7 )
hb_default( @cTexto, "" )
//"<p align='" + cAlign + "'>" + hb_eol() + ;
if lBold == .T. .and. lItalic == .F.
cTag_Form := "<font color='"+ cColor + "' face='"+ cFonte +"' size='"+ Alltrim(STR(nSize)) +"'px'<b>"+txt2html(cTag) +"</b></font>" + hb_eol()
elseif lBold == .F. .and. lItalic == .T.
cTag_Form := "<font color='"+ cColor + "' face='"+ cFonte +"' size='"+ Alltrim(STR(nSize)) +"'px'<i>"+txt2html(cTag) +"</i></font>" + hb_eol()
elseif lBold == .T. .and. lItalic == .T.
cTag_Form := "<font color='"+ cColor + "' face='"+ cFonte +"' size='"+ Alltrim(STR(nSize)) +"'px'<b><i>"+txt2html(cTag) +"</i></b></font>" + hb_eol()
else
cFont_Form := txt2html(cTag) + hb_eol()
endif
::cBody += ; // atributos de style tudo dentro das ' ' = style= ' atributo1:valor1 ; atributo2:valor2 ' >
"<table>"+;
"<tr>"+;
"<td align='" + cAlign_Col1 + "' width='"+alltrim(str(nWidth)) +"px'>" + cTag_Form + "</td>" + hb_eol() + ;
"<td align='" + cAlign_Col2 + "' width='700px'>" + cTexto + "</td>" +;
"</tr>" +;
"</table>"
/**
"<p align='" + cAlign + "' style= 'width:"+ alltrim(str(nWidth))+"px ; line-height:"+ alltrim(STR(nLineheight)) + "'>" + hb_eol() + ;
cTag_Form + "<br> align='left' 'width:"+ alltrim(str(700))+"px'" + cTexto + ">" + ;
"</p>"
*/
RETURN Self
METHOD Generate() CLASS HB_THTML
::cContent := ;
"<html><head>" + hb_eol() + ;
"<title>" + ::cTitle + "</title>" + hb_eol() + ;
"<body link='" + ::cLinkColor + "'" +;
"vlink='" + ::cvLinkColor + "'>" + hb_eol() + ;
::cBody + hb_eol() + ;
"</body></html>"
RETURN Self
METHOD ShowResult() CLASS HB_THTML
OutStd( ;
;// "HTTP/1.0 200 OK" + hb_eol() + ;
"CONTENT-TYPE: TEXT/HTML" + hb_eol() + hb_eol() + ;
::cContent )
RETURN Self
METHOD SaveToFile( cFile ) CLASS HB_THTML
LOCAL hFile := FCreate( cFile )
FWrite( hFile, ::cContent )
FClose( hFile )
RETURN Self
function html2txt( cTexto )
cTexto := strTran( cTexto, "á" , "á" )
cTexto := strTran( cTexto, "â" , "â" )
cTexto := strTran( cTexto, "à" , "à" )
cTexto := strTran( cTexto, "ã" , "ã" )
cTexto := strTran( cTexto, "ç" , "ç" )
cTexto := strTran( cTexto, "é" , "é" )
cTexto := strTran( cTexto, "ê" , "ê" )
cTexto := strTran( cTexto, "í" , "í" )
cTexto := strTran( cTexto, "ó" , "ó" )
cTexto := strTran( cTexto, "ô" , "ô" )
cTexto := strTran( cTexto, "õ" , "õ" )
cTexto := strTran( cTexto, "ú" , "ú" )
cTexto := strTran( cTexto, "ü" , "ü" )
cTexto := strTran( cTexto, "Á" , "Á" )
cTexto := strTran( cTexto, "Â" , "Â" )
cTexto := strTran( cTexto, "À" , "À" )
cTexto := strTran( cTexto, "Ã" , "Ã" )
cTexto := strTran( cTexto, "Ç" , "Ç" )
cTexto := strTran( cTexto, "É" , "É" )
cTexto := strTran( cTexto, "Ê" , "Ê" )
cTexto := strTran( cTexto, "Í" , "Í" )
cTexto := strTran( cTexto, "Ó" , "Ó" )
cTexto := strTran( cTexto, "Ô" , "Ô" )
cTexto := strTran( cTexto, "Õ" , "Õ" )
cTexto := strTran( cTexto, "Ú" , "Ú" )
cTexto := strTran( cTexto, "Ü" , "Ü" )
return ( cTexto )
function txt2html( cTexto )
cTexto := strTran( cTexto, "á", "á" )
cTexto := strTran( cTexto, "â", "â" )
cTexto := strTran( cTexto, "à", "à" )
cTexto := strTran( cTexto, "ã", "ã" )
cTexto := strTran( cTexto, "ç", "ç" )
cTexto := strTran( cTexto, "é", "é" )
cTexto := strTran( cTexto, "ê", "ê" )
cTexto := strTran( cTexto, "í", "í" )
cTexto := strTran( cTexto, "ó", "ó" )
cTexto := strTran( cTexto, "ô", "ô" )
cTexto := strTran( cTexto, "õ", "õ" )
cTexto := strTran( cTexto, "ú", "ú" )
cTexto := strTran( cTexto, "ü", "ü" )
cTexto := strTran( cTexto, "Á", "Á" )
cTexto := strTran( cTexto, "Â", "Â" )
cTexto := strTran( cTexto, "À", "À" )
cTexto := strTran( cTexto, "Ã", "Ã" )
cTexto := strTran( cTexto, "Ç", "Ç" )
cTexto := strTran( cTexto, "É", "É" )
cTexto := strTran( cTexto, "Ê", "Ê" )
cTexto := strTran( cTexto, "Í", "Í" )
cTexto := strTran( cTexto, "Ó", "Ó" )
cTexto := strTran( cTexto, "Ô", "Ô" )
cTexto := strTran( cTexto, "Õ", "Õ" )
cTexto := strTran( cTexto, "Ú", "Ú" )
cTexto := strTran( cTexto, "Ü", "Ü" )
return ( cTexto )
Code: Select all
oHTML := HB_THTML_CSS():New()
//oHTML:SetTitle( "Harbour Power Demonstration" )
oHTML:AddHead( "SOLICITAÇÃO COMPRAS Num. : " + aStruc[12] )
oHTML:AddPara( "Prioridade : " + aStruc[10],"right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Status : " + aStruc[11],"right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Requisitante : " + aStruc[1], "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Grupo/Setor : " + aStruc[2], "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Data da Solitação : " + aStruc[3], "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Data de Aprovação : " + aStruc[4], "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Data de Previsão : " + aStruc[5], "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Data de Entrega : " + aStruc[6], "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Ordem de Compra : " + aStruc[7], "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Maquina : " + aStruc[8], "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "Observação : " + aStruc[9], "right" , 200 , .T.,,,, 4 )
oHTML:AddPara( "por favor não responda este e-mail, ele serve apenas para comunicar a você e o solicitante de Manuteção.", "left" , 1000 , .T.,,,, 3.5 )
oHTML:AddPara( "[MasterServ Manutenção]", "left" , 200 , .T. ,,,, 3.5)
//oHTML:AddLink( "https://harbour.github.io", "Meet the Harbour power!" )
oHTML:Generate(3) //Generate(nLineheight) line spacing
//oHTML:ShowResult()
oHTML:SaveToFile( "body.html" )
//cCorpoMsg2 := oHTML:ShowResult()