FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Definitivamente hay problemas con DIALOGS y SAYS
Posts: 514
Joined: Sun Oct 16, 2005 03:32 AM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 12:22 AM

Hola Antonio:

Definitivamente tengo problemas con los diiálogos y los says. No importa sin son por código o con recurso, si son Transparent o nó.

Mira este ejemplo:

include "FiveWin.ch"

Function Inicio()
LOCAL oDlg, oSay1, oTimer
LOCAL oFont1:=TFont():New("Ms Sans Serif",0,-8,.F.,.t.)
SET DATE FORMAT TO "dd-mm-yyyy"
DEFINE DIALOG oDlg FROM 1,1 TO 100,345 TITLE OemToAnsi("El viacrucis de las actualizaciones") PIXEL TRANSPARENT
@ 05,15 SAY oSay1 PROMPT OemToAnsi("Fecha y hora actuales") OF oDlg PIXEL FONT oFont1 SIZE 100,12
@ 05,80 SAY oSay2 PROMPT ": "+dtoc(Date())+" - "+Time() OF oDlg PIXEL SIZE 100,12 FONT oFont1
@ 30,30 BUTTON "&Salir" OF oDlg PIXEL ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED ON INIT (Timer(oDlg, oSay2))
Return(Nil)

function Timer( oDlg, oSay2 )
LOCAL oTimer
DEFINE TIMER oTimer INTERVAL 1000 OF oDlg ACTION;
(oSay2:VarPut(": "+dtoc(Date())+" - "+Time()),oSay2:Refresh())
ACTIVATE TIMER oTimer
return nil

Si el diálogo se pone sin TRANSPARENT, pinta en primera instancia bien tanto oSay1 como oSay2, pero al momento de repintar con el timer parte el texto de oSay2 en 2 líneas.

Si el diálogo se pone con TRANSPARENT desde el inicio pinta tanto oSay1 como oSay2 en 2 líneas,

Si el font se pone normal (NO BOLD), entonces funciona bien. El problema es la asignar oFont1 como BOLD

Recuerda, que también te reporté la misma novedad con un ejemplo usando recursos en post del 18-Agosto-2008

Hasta FWH 8.01 me funcionaba perfecto. Pero con FWH 8.07 tengo este inconveniente. El problema es que no puedo actualizar mis aplicaciones a FWH 8.07. Todos los diálogos en los que uso Fonts con BOLD me pasa lo mismo.

He jugado con FixSays y nada.
He probado en el INIT del Diálogo con oSay1:SetSize() y tampoco. Esta última opción debo descartarla, pues imagínate en diálogos en los que tenga 20 o más say, ponerme a darle oSaynn:SetSize() a cada uno. Locura.

Por favor ayudaaaaaaaaaaa.............

Saludos,

Carlos Gallego

Saludos,



Carlos Gallego



*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***

Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 01:21 PM
Carlos, prueba ahora...

#Include "FiveWin.ch"

STATIC oTimer

FUNCTION Inicio()

    LOCAL oDlg, oSay1, oSay2  //, oTimer
    LOCAL oFont1:=TFont():New("Ms Sans Serif",0,-8,.F.,.t.)

    SET DATE BRITISH
    SET EPOCH TO 1950
    SET CENTURY ON

    DEFINE DIALOG oDlg FROM 1,1 TO 100,345 ;
           TITLE OemToAnsi("El viacrucis de las actualizaciones") ;
           PIXEL TRANSPARENT

    oDlg:lHelpIcon := .F.

    @  05,15 SAY oSay1 PROMPT OemToAnsi("Fecha y hora actuales") OF oDlg ;
             PIXEL FONT oFont1 SIZE 100,12

    @  05,80 SAY oSay2 PROMPT ":   "+DTOC(DATE())+"  -  "+Time() OF oDlg ;
             PIXEL SIZE 100,12 FONT oFont1

    @  30,65 BUTTON "&Salir" OF oDlg PIXEL ACTION oDlg:End()

    ACTIVATE DIALOG oDlg CENTERED ON INIT ( Timer( oDlg, oSay2 ) )

    oFont1:End()
    oTimer:End()

    Release All

RETURN NIL

FUNCTION Timer( oDlg, oSay2 )

  DEFINE TIMER oTimer INTERVAL 1000 OF oDlg ;
         ACTION ( oSay2:VarPut( ":   " + DTOC(DATE())+"  -  " + ;
                  TIME() ), oSay2:Refresh() )

  ACTIVATE TIMER oTimer

RETURN NIL


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 01:25 PM
Hola

Revisando el codigo y de varias manera no encuentro el error, aun mas hasta con brush funciona

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 02:55 PM
Carlos,

Hay que hacer una modificación en la Clase TSay para que tu código funcione correctamente y sin cambiar nada en tus PRGs. Aqui, con estos cambios, está funcionando bien. Antes daba el error que comentas de dos líneas de texto:
METHOD SetText( cText ) CLASS TSay

   local hDC

   DEFAULT ::lTransparent := .f.

   ::cCaption := If( ::cPicture != nil, Transform( cText, ::cPicture ),;
                     cValToChar( cText ) )

   #ifndef __CLIPPER__
      if ::oWnd:oBrush != nil .and. Empty( ::oWnd:oBrush:hBitmap ) .and. ( IsAppThemed() .or. ::lTransparent )
         DrawPBack( ::hWnd, hDC := GetDC( ::hWnd ) )
         ReleaseDC( ::hWnd, hDC )
      endif   
   #endif

   if ! lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), nOr( SS_LEFT, SS_RIGHT, SS_CENTER ) )
      ::nWidth := GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) ) + 20
   endif   
   SetWindowText( ::hWnd, ::cCaption )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 514
Joined: Sun Oct 16, 2005 03:32 AM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 04:23 PM

Antonio, gracias Maestro.

Corregido.

Para tener claro, es un bug en la clase TSay ?. Hasta la versión FWH8.01 no tenía ese problema. Es el mismo código que he utilizado siempre.

Queda correrigido para las próximas versiones ?

Saludos.

Carlos Gallego

Saludos,



Carlos Gallego



*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 04:34 PM

Carlos,

Queda corregido en la librería para próximas versiones :-)

Se ha debido a una reciente modificación que nos sugirieron para mejorar el ancho de los SAYs automaticamente, pero quedaba justo al usar el font BOLD

gracias!

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 514
Joined: Sun Oct 16, 2005 03:32 AM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 04:39 PM
Maestro Antonio, corrijo:

Hasta la versión FWH 8.05 no tenía ese problema. En la clase TSay de esa versión el Method SetText estaba así:

METHOD SetText( cText ) CLASS TSay

   local hDC

   DEFAULT ::lTransparent := .f.

   ::cCaption := If( ::cPicture != nil, Transform( cText, ::cPicture ),;
                     cValToChar( cText ) )

   #ifndef __CLIPPER__
      if ::oWnd:oBrush != nil .and. Empty( ::oWnd:oBrush:hBitmap ) .and. ( IsAppThemed() .or. ::lTransparent )
         DrawPBack( ::hWnd, hDC := GetDC( ::hWnd ) )
         ReleaseDC( ::hWnd, hDC )
      endif   
   #endif

   SetWindowText( ::hWnd, ::cCaption )

return nil

Fué en la versión FWH 8.07 que le agregaste

   if ! lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), nOr( SS_RIGHT, SS_CENTER ) )
      ::nWidth := GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) )
   endif


lo que produce la falla en el pintado. Estoy en lo correcto ?

Saludos,

Carlos Gallego

Saludos,



Carlos Gallego



*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***

Posts: 514
Joined: Sun Oct 16, 2005 03:32 AM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 04:41 PM
En qué afectaría si se quita

if ! lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), nOr( SS_RIGHT, SS_CENTER ) ) 
      ::nWidth := GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) ) 
   endif

Saludos,

Carlos Gallego

Saludos,



Carlos Gallego



*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 04:44 PM

Carlos,

Ese código ajusta el ancho del SAY en los casos en que el ancho del control sea inferior al ancho del texto que contiene

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 514
Joined: Sun Oct 16, 2005 03:32 AM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 05:56 PM

Perfecto Maestro.

Muchas gracias.

Saludos,

Carlos Gallego

Saludos,



Carlos Gallego



*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***

Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 07:50 PM
Antonio

Que pasa cuando el Say tiene Border, este desaparece

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 08:01 PM
Patricio Avalos Aguirre wrote:Antonio

Que pasa cuando el Say tiene Border, este desaparece



Patricio,

Cual és el COMANDO NRGB que usas para obetner esta color en el DIALOGO? Ó és una BITMAP?

Gracias, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 09:10 PM
DEFINE DIALOG oDlg NAME "DLG_LISTA" TITLE cTitle COLOR nRgb(0,0,0),nRgb(238,221,187)
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 09:26 PM

Patricio,

Que estilo usas para el border del SAY en el recurso ? WS_BORDER ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM

Definitivamente hay problemas con DIALOGS y SAYS

Posted: Thu Sep 11, 2008 10:02 PM
antonio es de un recurso..

Es de un recurso

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl