Definitivamente hay problemas con DIALOGS y SAYS

Definitivamente hay problemas con DIALOGS y SAYS

Postby Cgallegoa » 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
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby karinha » Thu Sep 11, 2008 1:21 pm

Carlos, prueba ahora...

Code: Select all  Expand view  RUN
#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
User avatar
karinha
 
Posts: 7860
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Patricio Avalos Aguirre » Thu Sep 11, 2008 1:25 pm

Hola

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

Image
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
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Postby Antonio Linares » Thu Sep 11, 2008 2: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:
Code: Select all  Expand view  RUN
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
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Cgallegoa » Thu Sep 11, 2008 4: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
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby Antonio Linares » Thu Sep 11, 2008 4: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Cgallegoa » Thu Sep 11, 2008 4: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í:

Code: Select all  Expand view  RUN
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

Code: Select all  Expand view  RUN
   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
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby Cgallegoa » Thu Sep 11, 2008 4:41 pm

En qué afectaría si se quita

Code: Select all  Expand view  RUN
if ! lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), nOr( SS_RIGHT, SS_CENTER ) )
      ::nWidth := GetTextWidth( 0, ::cCaption, If( ::oFont != nil, ::oFont:hFont,) )
   endif   

Saludos,

Carlos Gallego
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby Antonio Linares » Thu Sep 11, 2008 4: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Cgallegoa » Thu Sep 11, 2008 5:56 pm

Perfecto Maestro.

Muchas gracias.

Saludos,

Carlos Gallego
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby Patricio Avalos Aguirre » Thu Sep 11, 2008 7:50 pm

Antonio

Que pasa cuando el Say tiene Border, este desaparece

Image
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
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Postby karinha » Thu Sep 11, 2008 8:01 pm

Patricio Avalos Aguirre wrote:Antonio

Que pasa cuando el Say tiene Border, este desaparece

Image


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
User avatar
karinha
 
Posts: 7860
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Patricio Avalos Aguirre » Thu Sep 11, 2008 9:10 pm

Code: Select all  Expand view  RUN
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
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Postby Antonio Linares » Thu Sep 11, 2008 9:26 pm

Patricio,

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

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

Postby Patricio Avalos Aguirre » Thu Sep 11, 2008 10:02 pm

antonio es de un recurso..

Es de un recurso

Image
Last edited by Patricio Avalos Aguirre on Thu Sep 11, 2008 10:14 pm, edited 1 time in total.
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
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 69 guests