Distinto comportamiento

Distinto comportamiento

Postby cnavarro » Thu Sep 26, 2013 4:23 pm

Hola
El comportamiento de la clase Dialog y Window es distinto en el uso del bInit
Como ejemplo:
TWindow
Code: Select all  Expand view

// Dlg02.prg
#include "fivewin.ch"

Function Main()
Local oWnd
Local nWidth  := 400
Local nHeight := 600
Local oBrush
Local bIni
Local oMnu    

   MENU oMnu
   ENDMENU

   DEFINE BRUSH oBrush COLOR CLR_WHITE

   DEFINE WINDOW oWnd MENU oMnu ;
          STYLE WS_POPUP ; // SIZE nWidth, nHeight ; //          OF oParent ;
          BRUSH oBrush ;  
          PIXEL

   oWnd:nTop    := 120
   oWnd:nLeft   := 120
   oWnd:nWidth  := nWidth
   oWnd:nHeight := nHeight

  @ 30, 30 BUTTON " &CANCELAR " SIZE 60, 20 PIXEL OF oWnd ;
      ACTION ( oWnd:End() )  CANCEL


   //bIni    := { || MiInit( oWnd ) }

   oWnd:bInit := { || MiInit( oWnd ) }   //bIni

   oWnd:Activate( "NORMAL" , , , , , , , ;
                    , , , , , , , , , , , )
   oBrush:End()
   oBrush := Nil
Return nil

Function MiInit( oDlg )

Msginfo( oDlg )

Return nil
 


La ventana ejecuta binit correctamente, aunque después no me permite usar el raton para seleccionar el boton
He de pulsar TAB y después INTRO para poder ejecutar la accion del Boton

TDialog
Code: Select all  Expand view

// Dlg01.prg
#include "fivewin.ch"

Function Main()
Local oWnd
Local nWidth  := 400
Local nHeight := 600
Local oBrush
Local bIni    

   DEFINE BRUSH oBrush COLOR CLR_WHITE

   DEFINE DIALOG oWnd ; // MENU oMnu //;
          STYLE WS_POPUP ;
          SIZE nWidth, nHeight ;
          BRUSH oBrush ;  //          OF oParent ;
          PIXEL

   oWnd:nTop    := 120
   oWnd:nLeft   := 120

  @ 30, 30 BUTTON " &CANCELAR " SIZE 60, 20 PIXEL OF oWnd ;
      ACTION ( oWnd:End() ) CANCEL


   bIni    := { || MiInit( oWnd ) }

   oWnd:bInit := { || MiInit( oWnd ) }   //bIni

   //oWnd:Activate( , , , .F., , .T., bIni, , , , .T.)
   oWnd:Activate( , , , .F., , .T., , , , , .T.)
 
Return nil

Function MiInit( oDlg )

Msginfo( oDlg )

Return nil
 


Si defino bInit igual que con TWindow, no lo ejecuta.
He de definirlo en el Activate para que lo ejecute.
Code: Select all  Expand view

//oWnd:Activate( , , , .F., , .T., bIni, , , , .T.)
 

Aqui el boton funciona correctamente.

Mi idea era usar el mismo dialogo con distinto comportamiento cambiando el codeblock usado en el bInit.

Además el aspecto del boton en la ventana y en el Dialogo es distinto.
Puede probar alguien los ejemplos y decirme si ocurre lo mismo en las versiones actuales? Yo aun tengo FWH 12.03
¿No se puede definir el bInit del dialogo independiente del Activate?
Gracias
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: 6547
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Distinto comportamiento

Postby cnavarro » Thu Sep 26, 2013 7:35 pm

Siguiendo con el mismo tema:
Como se puede comprobar en la imagen, la colocacion y tamaños de los mismos controles colocados en el bINIT (en el activate) y dentro del DEFINE DIALOG ....ACTIVATE es distinto, es algo normal ?, que estoy haciendo mal?

Image

Adjunto el codigo ejemplo:
Code: Select all  Expand view

#include "fivewin.ch"
#include "colores.ch"
#include "tselex.ch"

Function Main()
Local oWnd
Local nWidth  := 600
Local nHeight := 600
Local oBrush
Local bIni    
Local nFI     := 120
Local nCI     := 150
Local oSel1
Local nOpt1   := 1
Local oSay1

   DEFINE BRUSH oBrush COLOR METRO_GRIS3

   DEFINE DIALOG oWnd ; // MENU oMnu //;
          STYLE WS_POPUP ;
          SIZE nWidth, nHeight ;
          BRUSH oBrush ;  //          OF oParent ;
          PIXEL

   oWnd:nTop    := 120
   oWnd:nLeft   := 120

   @ nFI, nCI SAY oSay1 PROMPT "En Dialog " SIZE 50, 12 PIXEL oF oWnd ;
     COLOR METRO_WINDOW, METRO_GRIS2 //FONT oFont

   @ nFI+20, nCI SELEX oSel1 VAR nOpt1 OF oWnd SIZE 60, 40 PIXEL ;
             ACTION ( MsgInfo("Si") ) ;
             ITEMS " ",  " " ;
             COLOR THUMB METRO_GRIS2 ;
             GRADIENT INTRACK  {{ 1, METRO_GRIS1, METRO_GRIS1 },{ 0, METRO_GRIS1, METRO_GRIS1 }}  ;
             GRADIENT OUTTRACK {{ 1, METRO_WINDOW, METRO_WINDOW },{ 0, METRO_WINDOW, METRO_WINDOW }} ;
             LINECOLORS METRO_WINDOW, METRO_WINDOW ;
             ROUNDSIZE 0 ;
             THUMBSIZE 30, 30  //;



  @ 200, nCI BUTTON "CANCELAR" SIZE 40, 20 PIXEL OF oWnd ;
      ACTION ( oWnd:End() ) CANCEL


   bIni    := { || MiInit( oWnd ) }

   //oWnd:bInit := { || MiInit( oWnd ) }   //bIni

   oWnd:Activate( , , , .F., , .T., bIni, , , , .T.)
   //oWnd:Activate( , , , .F., , .T., , , , , .T.)
 
Return nil

Function MiInit( oWnd )
Local nFI     := 120
Local nCI     := 150
Local oSel1
Local nOpt1   := 1
Local oSay1

   @ nFI, nCI SAY oSay1 PROMPT "En bINIT" SIZE 50, 12 PIXEL oF oWnd ;
     COLOR METRO_WINDOW, METRO_GRIS2 //FONT oFont

   @ nFI+20, nCI SELEX oSel1 VAR nOpt1 OF oWnd SIZE 60, 40 PIXEL ;
             ACTION ( MsgInfo("Si") ) ;
             ITEMS " ",  " " ;
             COLOR THUMB METRO_GRIS2 ;
             GRADIENT INTRACK  {{ 1, METRO_GRIS1, METRO_GRIS1 },{ 0, METRO_GRIS1, METRO_GRIS1 }}  ;
             GRADIENT OUTTRACK {{ 1, METRO_WINDOW, METRO_WINDOW },{ 0, METRO_WINDOW, METRO_WINDOW }} ;
             LINECOLORS METRO_WINDOW, METRO_WINDOW ;
             ROUNDSIZE 0 ;
             THUMBSIZE 30, 30  //;

  @ 200, nCI BUTTON "CANCELAR" SIZE 40, 20 PIXEL OF oWnd ;
      ACTION ( oWnd:End() ) CANCEL


Return nil

 
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: 6547
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Distinto comportamiento

Postby Daniel Garcia-Gil » Thu Sep 26, 2013 8:27 pm

Hola

si es el comportamiento esperado, aqui tienes la respuesta de Antonio a un post reciente de Biel

Antonio Linares wrote:Cuando se crean los controles, justo despues del DEFINE DIALOG y antes del ACTIVATE DIALOG, estamos usando "dialogs units" y no pixeles.

http://forums.fivetechsupport.com/posting.php?mode=quote&f=6&p=151592
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Distinto comportamiento

Postby cnavarro » Thu Sep 26, 2013 8:48 pm

Daniel,
Gracias por responder, y, efectivamente ahora recuerdo haber leido ese post y el articulo de Microsoft y otros relacionados con la diferencia entre las coordenadas de Window y Dialog pero no recordaba que se referia justo a este tema del bInit.

Y, en relacion al primer post sobre el bInit y su diferencia entre TWindows y TDialog, que opinas?
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: 6547
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Distinto comportamiento

Postby Antonio Linares » Fri Sep 27, 2013 11:53 pm

Cristobal,

En tu primer ejemplo prueba a hacer:

oWnd:bGotFocus = { || oBtn:SetFocus() }

Asi deberias recibir bien el foco. En FWH 13.08 recupera el foco correctamente, lo acabo de probar.

El que no se pueda asignar bInit previo al Activate() se debe a que en el Metodo Activate() se asigna la DATA sin comprobar si previamente tenia un valor. Podemos modificarlo :-)
regards, saludos

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

Re: Distinto comportamiento

Postby cnavarro » Sat Sep 28, 2013 12:21 am

Antonio
El que no se pueda asignar bInit previo al Activate() se debe a que en el Metodo Activate() se asigna la DATA sin comprobar si previamente tenia un valor. Podemos modificarlo


Correcto, eso es lo que yo estaba haciendo, pero el mismo problema puede existir con el resto de codeblocks que se pueden asignar en el ACTIVATE

Code: Select all  Expand view

   ::bLClicked   = bLClicked
   ::bRClicked   = bRClicked
   ::bWhen       = bWhen
   ::bValid        = bValid
   if !empty( bInit )     // Por ejemplo - hacer la misma comprobacion con el resto de codeblocks
   ::bInit       = bInit
   endif
   ::bPainted    = bPainted
   ::bMoved      = bMoved
 


Como siempre, muy agradecido por tu dedicacion y servicio.
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: 6547
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Distinto comportamiento

Postby cnavarro » Sat Sep 28, 2013 12:31 am

Antonio

En tu primer ejemplo prueba a hacer:

oWnd:bGotFocus = { || oBtn:SetFocus() }

Asi deberias recibir bien el foco. En FWH 13.08 recupera el foco correctamente, lo acabo de probar.


En mi versión tampoco se soluciona asi, lo solucioné en el bInit
Code: Select all  Expand view

oWnd:bInit := { || MiInit( oWnd ), oBtn:SetFocus() }
 

A ver si puedo actualizarme ya.
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: 6547
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 47 guests