EXCESS RELEASE OF FONT

EXCESS RELEASE OF FONT

Postby Verhoven » Mon Dec 08, 2014 9:52 pm

Con la actualización a FWH32 14.11 y xHarbour 1.2.3 Noviembre 2014 el programa me genera por su cuenta un archivo log (que yo no le he programado para que lo haga) que contiene lo siguiente que no se lo que significa:

Code: Select all  Expand view  RUN
    ------------------------------------------------------------   
08-12-14 17:37:42: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -1 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 18:52:04: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : 0 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 18:53:07: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -1 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 19:04:35: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -2 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 19:08:51: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -3 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 19:17:10: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -4 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 19:25:00: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -5 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 19:42:31: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -6 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 19:43:02: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -7 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 19:54:28: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -8 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 19:55:33: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -9 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
08-12-14 19:57:03: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -10 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
 
Verhoven
 
Posts: 521
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Postby cnavarro » Mon Dec 08, 2014 9:57 pm

Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: EXCESS RELEASE OF FONT

Postby Verhoven » Tue Dec 09, 2014 10:42 am

No tengo ni idea si tiene algo que ver. Es que no eswtiendo el error o el log porque, en principio, el programa no se cuelga.
Verhoven
 
Posts: 521
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Postby karinha » Tue Dec 09, 2014 11:47 am

que usas para compilar?

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: EXCESS RELEASE OF FONT

Postby Verhoven » Wed Dec 10, 2014 7:46 pm

Utilizo:

xHarbour 1.2.3
FWH32 14.09
BCC32 582
Verhoven
 
Posts: 521
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Postby Verhoven » Wed Dec 10, 2014 8:09 pm

El exe sigue generando y aumentando el tamaño del fichero con su mismo nombre y la extensión log.
NO ENCUENTRO LA MANERA DE ELIMINAR ESTE EFECTO INDESEADO. Con la compilación de la versión anterior que usábamos de xHarbour y FW no pasaba.
Verhoven
 
Posts: 521
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Postby carlos vargas » Wed Dec 10, 2014 10:05 pm

veamos, hasta no hace mucho yo usaba esta forma

define font oFont1 ...
define font oFont2 ...

define window oWnd ... font oFont1 ..
...
define dialog oDlg ... font oFont2
...
oFont1:end()
oFont2:end()

ahora, ya no es necesario eliminar la fuente con :end(), si esta fuente es usada en un dialogo o ventana. osea se comenta
//oFont1:end()
//oFont2:end()

otra cosa es que no es adecuado asignar fuentes de esta forma:

oWnd:oFont := oFont1

se tiene que usar:

oWnd:SetFont( oFont1 )

o usarlo directamente en las definicion de comandos, ej: REDEFINE SAY ... FONT oFont1

esto es necesario para poder incrementar el contador de usos de las fuentes, para que cuando internamente clase como windows, dialogs, etc. eliminen las fuentes referenciadas en ellas el contador sea decrementado.
es necesario en clases algo viejas verificar como están asignando las fuentes, para adecuarse a esta forma. desde la version 14.5 creo que se empezo a mejorar el uso de los fonts.

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: EXCESS RELEASE OF FONT

Postby Verhoven » Sat Dec 13, 2014 7:26 pm

Gracias por la respuesta Carlos.
Pero aunque he revisado todas las clases y programas me sigue dando el error.
En concreto cuando hago uso de los Font en un objeto oPRN.

Comento el esquema de trabajo que venía usando hasta ahora sin problemas:

1.- Defino antes de Function Main() como static 4 variables para uso de cuatro tipos de letras para toda la aplicación:
Code: Select all  Expand view  RUN
// Variables de Tipos de Letra
static oFont      
static oFontDoble  
static oFontDobleN
static oFontGigant


2.- Ya dentro de main() hago:
Code: Select all  Expand view  RUN
DEFINE FONT oFont       NAME "MS Sans Serif" SIZE 0,-14
DEFINE FONT oFontDoble  NAME "MS Sans Serif" SIZE 0,-16
DEFINE FONT oFontDobleN NAME "MS Sans Serif" SIZE 0,-16 BOLD
DEFINE FONT oFontGigant NAME "Arial" SIZE 0,-36 BOLD


3.- Después según el tipo de diálogo o SAY o GET etc les asigno alguno de esos tipos de letra con un código como sigue:
Code: Select all  Expand view  RUN
   DEFINE DIALOG oDlg RESOURCE 'Carga' OF oPadre;
           TITLE 'Operación de carga';
           FROM 1,10 TO 15,80;
           FONT oFont

En la que como verán el Diálogo tiene como fuente elegida una de las declaradas static. En concreto la que se llama oFont.

4.- En las versiones de FW y xHarbour usadas hasta ahora, cuando terminaba con ese Dialogo, como el objeto oFont era de uso para toda la aplicación, NO le hacía un oFont:end()

5.- Pero según el post de Carlos, ahora es el propio Dialog el que elimina el oFont que se le asigna, por lo que no se si el esquema de trabajo comentado se puede utilizar.

Les ruego su colaboración para solucionar este comportamiento.
Saludos.
Verhoven
 
Posts: 521
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Postby horacio » Sun Dec 14, 2014 12:46 am

Estoy usando la version FWH1411, elimino los fonts cuando cierra el dialogo. Supongo que si la clase dialog elimina las font tendria que dar error, ya que el objeto esta cerrado y no es asi.

Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: EXCESS RELEASE OF FONT

Postby Antonio Linares » Sun Dec 14, 2014 5:19 am

Paz,

Este sería un ejemplo típico de uso de fonts. Aqui este código funciona bien.

Puedes comprobar si tu lo usas de la misma forma ? gracias

Code: Select all  Expand view  RUN
#include "FiveWin.ch"

function Main()

   local oDlg, oFont

   DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -14

   DEFINE DIALOG oDlg FONT oFont

   @ 1, 1 SAY "Hello world" FONT oFont

   ACTIVATE DIALOG oDlg CENTERED

   oFont:End()

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: EXCESS RELEASE OF FONT

Postby Verhoven » Sun Dec 14, 2014 9:45 am

Antonio, ese que pones era el esquema que venía empleando sin problemas.

Cuando los objetos Font eran públicos y usaba alguno en un diálogo, al acabar de usar ese diálogo, no hacía oFont:end() para ellos al objeto de poderlos usar en otra parte del programa.

Pero si ahora es la terminación del diálogo la que acaba con los objetos oFont automáticamente cuando se termina el uso del Dialog, no se cómo proceder. Salvo cambiar todo el programa para el tema de los Font y en vez de crear unos de caracter público al principio en main(), ir creándolos uno por uno para cada diálogo en que se vayan a usar.

Además, es cierto que hay un efecto extraño con los Font públicos, a saber:
Al entrar por primera vez en un dialogo que los usa pinta el tipo correcto de letra que se le asignó a la variable pública.
Pero cuando se vuelve a entrar en ese diálogo otra vez cambia el tipo de letra, que ya no es la que se había asignado inicialmente.
Lo cual es más enrevesado todavía, porque lo que parece es que más que destruir el objeto Font lo que hace es cambiar el tipo de letra que tenía asignado, pues si lo destruyera e hiciéramos referencia a una variable ya inexistente el programa se colgaría pero no es así.

Comentar también que el programa en su ejecución va grabando un log con este error EXCESS RELEASE OF FONT, pero el programa no se bloquea ni se para salvo con el tipo de letra distinto del que debería, aunque el fichero log no deja de crecer.

No se ya que más pruebas hacer.
Verhoven
 
Posts: 521
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Postby Antonio Linares » Sun Dec 14, 2014 10:41 am

Según dices, este sería el código que representa tu situación. Aqui funciona bien:

Puedes modificar este ejemplo para que aparezca el error ?

Code: Select all  Expand view  RUN
#include "FiveWin.ch"

static oFont

function Main()

   DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -14

   Test()
   Test()
   
   oFont:End()

return nil

function Test()

   local oDlg

   DEFINE DIALOG oDlg

   @ 1, 1 SAY "Hello world" FONT oFont

   ACTIVATE DIALOG oDlg CENTERED

return nil


Ayer detectamos un bug que se ha introducido en FWH 14.06 y que afecta directamente al tamaño de los fonts en los diálogos.

Ya tenemos un ejemplo que reproduce el error y estamos trabajando para publicar la solución lo antes posible.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: EXCESS RELEASE OF FONT

Postby Verhoven » Sun Dec 14, 2014 2:49 pm

Buenas tardes Antonio,
Te copio el fichero de prueba. Disculpa si ha quedado un poco largo.
Necesito también remitirte el RC del WorkShop que no se cómo adjuntarlo.

El error lo da con los dos métodos, es decir, tanto usando para los Fonts variables públicas como haciéndolo con variables locales.

Código que genera el error:

Code: Select all  Expand view  RUN
//  PRUEBAS CON FONTS
//    FWH32 VERSION 14.11 + xHarbour Dic.2014
//  Fecha: 14-12-2014

/*  EL ERROR QUE DA ES QUE AL PULSAR POR TERCERA VEZ CUALQUIERA DE LOS BOTONES
      EL TIPO DE LETRA DEL DIALOGO SE REDUCE DE TAMAÑO Y SE QUITA EL NEGRILLA.
    ASÍ MISMO SE GENERA UN EL FICHERO FONTTEST.LOG CON EL CONTENIDO SIGUIENTE:
    14-12-14 15:45:30: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : 0 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0)
     <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOX(0)
     <-TDIALOG:ACTIVATE(286)
*/


#include 'inkey.ch'
#include 'set.ch'
#include 'report.ch'
#include 'fivewin.ch'
#include 'rddsys.ch'      
#include "common.ch"
#include "DLL.ch"
#include 'ord.ch'                                    //Para CDX
#include 'Image.ch'
#include "fileio.ch"
#include "Struct.ch"

// Valores para la funcion cGetDir
#define BIF_NONEWFOLDERBUTTON 0x200
#define BIF_RETURNONLYFSDIRS  0x0001
#define BIF_DONTGOBELOWDOMAIN  0x0002
#define BIF_STATUSTEXT  0x0004
#define BIF_RETURNFSANCESTORS  0x0008
#define BIF_EDITBOX  0x0010
#define BIF_VALIDATE  0x0020
#define BIF_NEWDIALOGSTYLE  0x0040
#define BIF_USENEWUI  (BIF_NEWDIALOGSTYLE|BIF_EDITBOX)
#define BIF_BROWSEINCLUDEURLS  0x0080
#define BIF_BROWSEFORCOMPUTER  0x1000
#define BIF_BROWSEFORPRINTER  0x2000
#define BIF_BROWSEINCLUDEFILES 0x4000
#define BIF_SHAREABLE  0x8000


external dbfcdx, ordkeyno, ordkeycount, ordkeygoto   //Para CDX

static oWnd

// Variables de Tipos de Letra PUBLICAS PARA TODA LA APLICACION
static oFont      
static oFontDoble  
static oFontDobleN
static oFontGigant

#command EJECT =>

function main()
local oBtn1
local oBtn2

public oSayUltDoc   , cUltDoc:= "DOCUMENTO 1"
public oSayUltHora  , CuLThORA:=dtoc(date())
public oSayUltImporte, cUltImporte:=125
public oSayUltCli   , cUltCli:="Teodosio"

public oSayDiaHora    , cSayDiaHora    :=space(40)
public oSayLineaAvisos, cSayLineaAvisos:=space(40)

public oSayGigante, cSayGigante:='Pruebas'

public nSizeCond:= 8
public nSizeNorm:=10
public oBru

// Establece los sets de la forma de trabajo.
 set DELETED ON
 set SOFTSEEK OFF
 set DATE ITALIAN //set DATE FORMAT TO "DD/MM/YYYY"
 set EPOCH TO 2000
 set SCOREBOARD OFF
 set WRAP ON

 DEFINE BRUSH oBru COLOR nrgb(0,0,30)

 DEFINE FONT oFont       NAME "MS Sans Serif" SIZE 0,-14  
 DEFINE FONT oFontDoble  NAME "MS Sans Serif" SIZE 0,-16
 DEFINE FONT oFontDobleN NAME "MS Sans Serif" SIZE 0,-16 BOLD
 DEFINE FONT oFontGigant NAME "Arial" SIZE 0,-36 BOLD

  //* Ventana principal
        DEFINE WINDOW oWnd TITLE 'PRUEBAFONT' BRUSH oBru MENU MenuPpal()

        CreaLineasMensajes_oWnd()
       
        @  14  ,4 SAY oSayUltDoc VAR cUltDoc FONT oFontDoble;
                     COLOR nrgb(0,0,170),nrgb(220,220,220);
                     SIZE 250, 24 ;
                     OF oWnd
        @  15.6,4 SAY oSayUltHora VAR cUltHora FONT oFont;
                     COLOR nrgb(0,0,170),nrgb(240,240,240);
                     SIZE 250, 24 ;
                     OF oWnd
        @  17.2,4 SAY oSayUltImporte VAR cUltImporte FONT oFontDobleN;
                     COLOR nrgb(50,250,50),nrgb(0,0,0);
                     SIZE 250, 24 ;
                     OF oWnd
        @  18.9,4 SAY oSayUltCli VAR cUltCli FONT oFont;
                    COLOR nrgb(0,0,170),nrgb(240,240,240);
                    SIZE 250, 24 ;
                    OF oWnd

        // Botón para hacer una nueva venta.
        @ 18,10 BUTTON oBtn1 PROMPT 'Fonts Publicas' OF oWnd;
                       ACTION DialogoPublic(oWnd);
                       SIZE 150,40; // Ancho, Alto                                
                       UPDATE

        // Botón para hacer una nueva venta.
        @ 18,50 BUTTON oBtn2 PROMPT 'Fonts Locales' OF oWnd;
                       ACTION DialogoLocal(oWnd);
                       SIZE 150,40; // Ancho, Alto                                
                       UPDATE
                                     
        DEFINE BUTTONBAR oBar SIZE 33,33 3D TOP OF oWnd

        set MESSAGE OF oWnd TO CurDir() CLOCK DATE KEYBOARD
 
        ACTIVATE WINDOW oWnd MAXIMIZED
           
return NIL


function CreaLineasMensajes_oWnd()
        @ 25,2 SAY oSayDiaHora VAR cSayDiaHora FONT oFont;
                   COLOR nrgb(240,240,240),rgb(0,50,50);
                   SIZE 250, 20 OF oWnd

        @ 25,40 SAY oSayLineaAvisos VAR cSayLineaAvisos FONT oFont;
                   COLOR nrgb(240,240,240),rgb(0,50,50);
                   SIZE 250, 20 OF oWnd
             
        //Tipo de letra Gigante
        @ 8,52 SAY oSayGigante VAR cSayGigante FONT oFontGigant;
                   COLOR nrgb(240,240,240),nrgb(0,0,30);
                   SIZE 500,40 OF oWnd
return

// Función para pruebas usando las variables PUBLICAS en el diálogo.
static function DialogoPublic(oPadre)
 local Coloract:=SetColor()
 local oDlg

 local oTbr
 local oBtn1, oBtn2, oBtn3, oBtnSalir
 local oSayTotal, nSayTotal:=0, oSayTot, cSayTot:='MS Sans Serif (Dbl)- NEGRITA'

 local oSayDia, cFecha:=dtoc(date())
 
 local aRolloCalc:={1,2,3,4,5,6,7,8,9}
 

   DEFINE FONT oFont1 NAME "Arial" SIZE 0,-20
   
   DEFINE DIALOG oDlg RESOURCE 'DIALOGO' OF oPadre;
           TITLE 'Dialogo con Fonts Publicas';
           FROM 1,10 TO 15,80;
           FONT oFont

    REDEFINE SAY oSayTot   VAR cSayTot   ID 100 OF oDlg FONT oFontDobleN COLOR nrgb(0,0,200) UPDATE
    REDEFINE SAY oSayTotal VAR nSayTotal ID 101 OF oDlg FONT oFont COLOR nrgb(50,250,50),nrgb(0,0,0) UPDATE
    REDEFINE SAY oSayDia   VAR cFecha    ID 103 OF oDlg FONT oFontDobleN COLOR nrgb(0,0,200) UPDATE
                   
    REDEFINE BUTTON oBtn1    ID 401 OF oDlg MESSAGE 'Hace una Factura Simplificada de contado';
                 ACTION ( iif(Opcion(1,nSayTotal,oDlg),(lCierraDlg:=.t., oDlg:End()),) )
                 

    REDEFINE BUTTON oBtn2    ID 402 OF oDlg MESSAGE 'Hace un Albarán de crédito';
                 ACTION ( iif(Opcion(2,nSayTotal,oDlg),(lCierraDlg:=.t., oDlg:End()),) )
                 
   
    REDEFINE BUTTON oBtn3    ID 403 OF oDlg MESSAGE 'Hace una Factura Completa de contado';
                 ACTION ( iif(Opcion(3,nSayTotal,oDlg),(lCierraDlg:=.t., oDlg:End()),) )
               

    REDEFINE BUTTON oBtnSalir ID 404 OF oDlg MESSAGE 'Hace una devolución a tienda';
                 ACTION ( (lCierraDlg:=.t., oDlg:End()) )
                 

    REDEFINE LISTBOX oTbr FIELDS ;
                     aRolloCalc;
             HEAD 'valor';
             ID 212 OF oDlg FONT oFontDobleN COLOR  nrgb(0,0,0),nrgb(255,255,200) ;
             UPDATE

          oTbr:nLineStyle = 2
          oTbr:aJustify:={.t.,.f.,.t.,.t.,.t.}
          oTbr:nClrLine:=nrgb(200,200,200)
          oTbr:aColSizes:=aMatrizTc({7,32,12,11,12},oFontDobleN)
          // Pinta líneas de colores distintas si son pares o impares.
          oTbr:nClrPane:={|| iif((oTbr:cAlias)->(ordkeyno())%2==0,ClrFlbxPar,ClrFlbxImp) }

     oDlg:lHelpIcon:=.f.

    ACTIVATE DIALOG oDlg

return nil


// Función para pruebas con variables locales en el diálogo.
static function DialogoLocal(oPadre)
 local Coloract:=SetColor()
 local oDlg

 local oTbr
 local oBtn1, oBtn2, oBtn3, oBtnSalir
 local oSayTotal, nSayTotal:=0, oSayTot, cSayTot:='MS Sans Serif (Dbl)- NEGRITA'

 local oSayDia, cFecha:=dtoc(date())
 
 local oFontDlg:=oFont, oFontSayDblN:=oFontDobleN
 
 local aRolloCalc:={1,2,3,4,5,6,7,8,9}
 

   DEFINE FONT oFont1 NAME "Arial" SIZE 0,-20
   
   DEFINE DIALOG oDlg RESOURCE 'DIALOGO' OF oPadre;
           TITLE 'Dialogo con Fonts Locales';
           FROM 1,10 TO 15,80;
           FONT oFontDlg

    REDEFINE SAY oSayTot   VAR cSayTot   ID 100 OF oDlg FONT oFontSayDblN COLOR nrgb(0,0,200) UPDATE
    REDEFINE SAY oSayTotal VAR nSayTotal ID 101 OF oDlg FONT oFontDlg COLOR nrgb(50,250,50),nrgb(0,0,0) UPDATE
    REDEFINE SAY oSayDia   VAR cFecha    ID 103 OF oDlg FONT oFontSayDblN COLOR nrgb(0,0,200) UPDATE
                   
    REDEFINE BUTTON oBtn1    ID 401 OF oDlg MESSAGE 'Hace una Factura Simplificada de contado';
                 ACTION ( iif(Opcion(1,nSayTotal,oDlg),(lCierraDlg:=.t., oDlg:End()),) )
                 

    REDEFINE BUTTON oBtn2    ID 402 OF oDlg MESSAGE 'Hace un Albarán de crédito';
                 ACTION ( iif(Opcion(2,nSayTotal,oDlg),(lCierraDlg:=.t., oDlg:End()),) )
                 
   
    REDEFINE BUTTON oBtn3    ID 403 OF oDlg MESSAGE 'Hace una Factura Completa de contado';
                 ACTION ( iif(Opcion(3,nSayTotal,oDlg),(lCierraDlg:=.t., oDlg:End()),) )
               

    REDEFINE BUTTON oBtnSalir ID 404 OF oDlg MESSAGE 'Hace una devolución a tienda';
                 ACTION ( (lCierraDlg:=.t., oDlg:End()) )
                 

    REDEFINE LISTBOX oTbr FIELDS ;
                     aRolloCalc;
             HEAD 'valor';
             ID 212 OF oDlg FONT oFontSayDblN COLOR  nrgb(0,0,0),nrgb(255,255,200) ;
             UPDATE

          oTbr:nLineStyle = 2
          oTbr:aJustify:={.t.,.f.,.t.,.t.,.t.}
          oTbr:nClrLine:=nrgb(200,200,200)
          oTbr:aColSizes:=aMatrizTc({7,32,12,11,12},oFontSayDblN)
          // Pinta líneas de colores distintas si son pares o impares.
          oTbr:nClrPane:={|| iif((oTbr:cAlias)->(ordkeyno())%2==0,ClrFlbxPar,ClrFlbxImp) }

     oDlg:lHelpIcon:=.f.
    ACTIVATE DIALOG oDlg

 //oFontDlg:end()
 //oFontSayDblN:end()

return nil

function Opcion(nOpcion,nTotal,oPadre)
return .t.

/****
   TC devuelve el tamaño de un campo en funcion del tipo de letra
      El cálculo es empírico.
****/

static function tc(lenCampo, oFuente)
  local valor:=1
  if oFuente<>NIL
    valor := GetFontInfo(oFuente)[2] * 1.25 * lenCampo
   else
    valor := 8.5 * lenCampo
  endif
return valor

static function aMatriztc(atc,oFuente)
 local aMatriz:={}, i:=0
 for i=1 TO len(atc)
   aadd( aMatriz,tc(atc[i],oFuente) )
 next i
return aMatriz

static function MenuPpal()
local oMenu

 MENU oMenu
  MENUITEM '&Publicas' ACTION DialogoPublic(oWnd) MESSAGE 'Opción con variables publicas'
  MENUITEM '&Locales' ACTION DialogoLocal(oWnd) MESSAGE 'Opción con variables locales'

  MENUITEM '&Salida' ACTION Cerrar() MESSAGE 'Salida del Programa'

 ENDMENU
return oMenu

function Cerrar()
  oWnd:end()  // Es obligatorio poner esto porque llama a la funcion KillApp() que
               //  contiene acciones para la salida del programa.
return NIL
 
Verhoven
 
Posts: 521
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Postby Verhoven » Sun Dec 14, 2014 2:52 pm

Copio el diálogo del RC para WorkShop:

Code: Select all  Expand view  RUN
DIALOGO DIALOG -1, -4, 376, 190
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "PRUEBA DE FONTS"
{
 PUSHBUTTON "Opcion &1", 401, 333, 16, 39, 20
 PUSHBUTTON "Opcion &2", 402, 333, 41, 39, 20
 PUSHBUTTON "Opcion &3", 403, 333, 66, 39, 20
 PUSHBUTTON "&Salir", 404, 333, 110, 39, 20
 CONTROL "", 212, "TWBrowse", 0 | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP, 6, 36, 324, 128
 RTEXT "Text", 102, 63, 16, 134, 15
 CTEXT "Text", 100, 194, 169, 134, 15
 CTEXT "Text", 101, 11, 171, 134, 15
 RTEXT "Text", 104, 63, 2, 134, 15
 CTEXT "Text", 103, 6, 4, 50, 15
}
 
Verhoven
 
Posts: 521
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Postby Antonio Linares » Sun Dec 14, 2014 2:57 pm

No puedes modificar el ejemplo que yo he publicado ?

Lo idóneo es tener un ejemplo pequeño que reproduzca el error
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 43 guests