FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Clase Printer, texto sobre negro
Posts: 885
Joined: Tue Oct 11, 2005 11:57 AM

Clase Printer, texto sobre negro

Posted: Mon May 25, 2026 03:03 PM

Hola fivewinners

Consulta. Hace tiempo no usaba la clase tPrinter, mis salidas eran standard, pero ahora requiero usar lo siguiente

oPrn:cmSay(5.2 ,3.0, "Texto", ofont1)

Pero Letra blanca sobre fondo negro, y no veo esos parametros en la funcion CMSAY, como lo solucionan uds?

Saludos desde Chile

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 8559
Joined: Tue Dec 20, 2005 07:36 PM

Re: Clase Printer, texto sobre negro

Posted: Mon May 25, 2026 04:36 PM

Algo asi?

// C:\FWH2603\SAMPLES\IMPNEGRO.PRG 

#Include "FiveWin.ch"

// Pruebe con otras en colores.ch
#define METRO_BTNSHADOW  RGB( 160,160,160 )
#define METRO_GRAYTEXT   RGB( 109,109,109 )
#define METRO_3DDHSHADOW RGB( 105,105,105 )

#define PAD_LEFT         0
#define PAD_RIGHT        1
#define PAD_CENTER       2

FUNCTION ImprimirTexto()

   LOCAL oPrn, oFont, oPen
   LOCAL nRow := 120 // Coordenada Y en pixels
   LOCAL nCol := 120 // Coordenada X en pixels

   PRINT oPrn PREVIEW MODAL NAME "Texto Blanco sobre Fondo Negro"

  // DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 0, -22 OF oPrn
  DEFINE FONT oFont NAME "Arial" SIZE 0, -24 BOLD OF oPrn
  DEFINE PEN oPen WIDTH  2                        OF oPrn

  oPrn:SetPage(9)    // A4
  oPrn:SetPortrait() //Vertical

  PAGE

     // 1. Dibuja el fondo negro (Rectangle)
     // Parámetros: filaIni, colIni, filaFin, colFin, oPen, lFilled, nColor
     // oPrn:Box( nRow, nCol, nRow + 250, nCol + 3300, NIL, .T., CLR_BLACK )
     oPrn:Box( nRow, nCol, nRow + 250, nCol + 3150, oPen, .T., CLR_BLACK )

     // 2. Imprime el texto en blanco encima
     // Parámetros: fila, columna, texto, oFont, nColor, nBkColor, nAlign
     // oPrn:Say( nRow + 10, nCol + 10, "Texto blanco sobre fondo negro.", oFont, CLR_WHITE, METRO_3DDHSHADOW )
                        // a gusto: +10, +15, etc.
     oPrn:Say( nRow + 10, nCol + 30, "Texto blanco sobre fondo negro", oFont, CLR_WHITE, CLR_BLACK )

     //  oPrn:Say( 120, 120, "Texto blanco sobre fondo negro", oFont, ,  nRGB(255, 255, 255), , PAD_LEFT )
     //  oPrn:Say( nRow + 10, nCol + 10, "Texto blanco sobre fondo negro", oFont, ,  nRGB(255, 255, 255), , PAD_LEFT )
     oPrn:Say( 120, 120, "Texto blanco sobre fondo negro", oFont, ,  nRGB(255, 255, 255), , PAD_LEFT )

  ENDPAGE

   ENDPRINT

   oFont:End()
   oPen:End()

RETURN NIL

// FIN / END - kapiabafwh@gmail.com

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8559
Joined: Tue Dec 20, 2005 07:36 PM

Re: Clase Printer, texto sobre negro

Posted: Mon May 25, 2026 04:59 PM
// C:\FWH2603\SAMPLES\BOXROUND.PRG -> 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 MODAL

  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

  oPrn:SetPage(9)    // A4
  oPrn:SetPortrait() //Vertical

  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,                    ;
       + "DESCRIPCIÓN DEL DOCUMENTO", oFont2,, CLR_WHITE,, PAD_CENTER )

    nLinha := nLinha + .80

    oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                    ;
       + "FiveWin is invincible.", oFont,, CLR_WHITE,, PAD_CENTER )

  ENDPAGE

   ENDPRINT

   oBrush:End()
   oFondo:End()

   oFont:End()
   oFont2:End()
   oFont3:End()

   oPen:Release()
   oPen1:Release()
   oPen2:Release()
   oPen3: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

// FIN / END - kapiabafwh@gmail.com

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8559
Joined: Tue Dec 20, 2005 07:36 PM

Re: Clase Printer, texto sobre negro

Posted: Mon May 25, 2026 06:29 PM
// C:\FWH2603\SAMPLES\BOXBORDO.PRG

#include "FiveWin.ch"

#Define METRO_TURQUE     RGB( 0, 128, 128 )
#Define METRO_BTNSHADOW  RGB( 160,160,160 )
#Define METRO_3DDHSHADOW RGB( 105,105,105 )

FUNCTION PrnBox()

   LOCAL oPrn, oFont, oFont2, oBrush, nRow, nCol, nHei, nWid

   PRINT oPrn PREVIEW

  DEFINE FONT oFont  NAME "VERDANA" SIZE 0,-30 OF oPrn BOLD
  DEFINE FONT oFont2 NAME "TAHOMA" SIZE 0, -20 OF oPrn BOLD
  // DEFINE BRUSH oBrush FILE "c:\fwh2603\bitmaps\backgrnd\granite.bmp"
  // DEFINE BRUSH oBrush COLOR METRO_TURQUE  // Very good. // CLR_HGRAY
  // DEFINE BRUSH oBrush COLOR METRO_BTNSHADOW //CLR_HGRAY
  DEFINE BRUSH oBrush COLOR METRO_3DDHSHADOW

  PAGE

     nRow := 7.50        // Linha
     nCol := 3           // Coluna
     nHei := nRow + 1.50 // altura
     nWid := 17.0        // largura

     oPrn:Box(nRow, nCol, nHei, nWid, { CLR_BLACK, 1 }, CLR_HGRAY, ;
        { SPACE(01) + "TIPO DE DOCUMENTO", oFont, CLR_WHITE, "TL" }, "CM" ) // T/TL

     nRow := nRow -2.50
     nCol := nCol -1.75

     @ nRow, nCol PRINT TO oPrn TEXT "TIPO DE DOCUMENTO" SIZE 3.3, 0.4 ;
        INCHES ALIGN "T" FONT oFont2 COLOR CLR_WHITE, oBrush

  ENDPAGE

   ENDPRINT

   RELEASE FONT oFont
   RELEASE FONT oFont2
   RELEASE BRUSH oBrush

RETURN NIL

// FIN / END - kapiabafwh@gmail.com

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 885
Joined: Tue Oct 11, 2005 11:57 AM

Re: Clase Printer, texto sobre negro

Posted: Tue May 26, 2026 12:58 PM

Gracias.

Tengo todo con CMSAY :-(
Modificare entonces los que necesito

Saludos

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 8559
Joined: Tue Dec 20, 2005 07:36 PM

Re: Clase Printer, texto sobre negro

Posted: Tue May 26, 2026 03:45 PM
Adolfo wrote:

Gracias.

Tengo todo con CMSAY :-(
Modificare entonces los que necesito

Saludos

// C:\FWH2603\SAMPLES\IMPNEGR2.PRG

#include "FiveWin.ch"

#define PAD_LEFT         0
#define PAD_RIGHT        1
#define PAD_CENTER       2

#define METRO_3DDHSHADOW RGB( 105,105,105 )

FUNCTION ImprimirTextoNegro()

   LOCAL oPrn, oFont, oPen
   LOCAL nRow := 120 // Coordenada Y en pixels
   LOCAL nCol := 120 // Coordenada X en pixels
   

   PRINTER oPrn NAME "Texto sobre negro" PREVIEW
   

   DEFINE FONT oFont NAME "Arial" SIZE 0, -26 OF oPrn
   DEFINE PEN oPen WIDTH  30                  OF oPrn

   oPrn:SetPage(9)    // A4
   oPrn:SetPortrait() //Vertical
   

   PAGE

  // Imprime un rectángulo negro
  oPrn:Box( nRow, nCol, nRow + 250, nCol + 3150, oPen, .T., CLR_BLACK )

  // Imprime el texto en blanco sobre el rectángulo negro
  oPrn:CmSay( 0.60, 0.80, "Texto sobre fondo negro", oFont, CLR_WHITE, METRO_3DDHSHADOW )

  oPrn:CmSay( 0.60, 0.80, "Texto blanco sobre fondo negro", oFont, ,  nRGB(255, 255, 255), , PAD_LEFT )

   ENDPAGE
   

   ENDPRINTER
   

   oFont:End()
   oPen:End()

RETURN NIL

// FIN / END - kapiabafwh@gmail.com

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8559
Joined: Tue Dec 20, 2005 07:36 PM

Re: Clase Printer, texto sobre negro

Posted: Tue May 26, 2026 04:39 PM

Centralizando...

// C:\FWH2603\SAMPLES\IMPNEGR2.PRG

#Include "FiveWin.ch"

#Define PAD_LEFT         0
#Define PAD_RIGHT        1
#Define PAD_CENTER       2

#Define METRO_3DDHSHADOW RGB( 105,105,105 )
#Define METRO_TURQUE     RGB( 0, 128, 128 )

FUNCTION ImprimirTextoNegro()

   LOCAL oPrn, oFont, oPen
   LOCAL nRow := 140 // Coordenada Y en pixels
   LOCAL nCol := 850 // Coordenada X en pixels
   

   PRINTER oPrn NAME "Texto sobre negro" PREVIEW
   

  DEFINE FONT oFont NAME "Arial" SIZE 0, -26 OF oPrn
  DEFINE PEN oPen WIDTH  30                  OF oPrn

  oPrn:SetPage(9)    // A4
  oPrn:SetPortrait() //Vertical
   
  PAGE

     // Imprime un rectángulo negro
     oPrn:Box( nRow, nCol, nRow + 250, nCol + 3150, oPen, .T., CLR_BLACK )

     // Imprime el texto en blanco sobre el rectángulo negro
     oPrn:CmSay( 0.60, 3.75, "Texto sobre fondo negro", oFont, CLR_WHITE, METRO_3DDHSHADOW )

     oPrn:CmSay( 0.60, 3.75, "Texto blanco sobre fondo negro", oFont, , nRGB(255, 255, 255), , PAD_LEFT )

     // continua...
     oPrn:cmSay( 3.00, 10.00, "Continua Texto blanco sobre fondo negro", oFont,, METRO_TURQUE,, PAD_CENTER )

  ENDPAGE
   
   ENDPRINTER
   

   oFont:End()
   oPen:End()

RETURN NIL

// FIN / END - kapiabafwh@gmail.com

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion