FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Pocket PC Group me funciona en ventanas pero no en dialogos
Posts: 33
Joined: Thu Aug 24, 2006 03:14 AM
Group me funciona en ventanas pero no en dialogos
Posted: Fri Sep 15, 2006 07:06 PM

驴Puede funcionar en dialogos?
Estoy generando los controles sin recursos, por puro c贸digo

Posts: 298
Joined: Fri Oct 07, 2005 05:20 AM
Re: Group me funciona en ventanas pero no en dialogos
Posted: Wed Sep 20, 2006 03:51 AM
creswinman wrote:驴Puede funcionar en dialogos?
Estoy generando los controles sin recursos, por puro c贸digo


Antonio :

El Control TPanel si se puede incuir en un dialogo, el problema sucede cuando deseo integrar algun control dentro de el.

Mira este peque帽o c贸digo :
#include "FWCE.ch"

//----------------------------------------------------------------------------//

function Main()

   local oWnd, oPanel
   local cName := Space( 20 ), cAddress := Space( 30 )

 DEFINE DIALOG oDlg FROM 1,1 TO 180,180 TITLE "Scroll" PIXEL

   @  1 , 1 PANEL oPanel OF oDlg  SIZE oDlg:nWidth() - 26, oDlg:nHeight() - 48 PIXEL
   @  40, 1 SAY "Name:" OF oPanel SIZE 40, 15 PIXEL
   @  60, 1 GET cName OF oPanel SIZE 100, 18  PIXEL
   @  140, 1 SAY "Address:" OF oDlg SIZE 50, 15 PIXEL
   @  160, 1 GET cAddress OF oDlg SIZE 120, 18 PIXEL

   ACTIVATE DIALOG oDlg

return nil


Y el error que manda es este
Message not found
TPANEL:DEFCONTROL
stack calls:
__ERRRT_SBASE(0)
HBOBJECT:ERROR(179)
__EVAL(105)
HBOBJECT:MSGNOTFOUND(0)
TPANEL:DEFCONTROL(169)
TSAY:NEW(0)
MAIN(13)


Donde se hace un llamado al m茅todo DefControl , donde se supone que esa clase la tiene TDialog y lo esta tratando de llamar en TPanel , ademas de que TPanel herera de TControl

Ahora si yo hago esta modificaci贸n en la clase TPanel
/*
METHOD DefControl( oCtrl ) CLASS TPanel

   DEFAULT oCtrl:nId := oCtrl:GetNewId()
   if AScan( ::oWnd:aControls, { | o | o:nId == oCtrl:nId } ) > 0
      #define DUPLICATED_CONTROLID  2
      Eval( ErrorBlock(), _FWGenError( DUPLICATED_CONTROLID, ;
                          "No: " + Str( oCtrl:nId, 6 ) ) )
   else
      AAdd( ::oWnd:aControls, oCtrl )
      oCtrl:hWnd = 0
   endif

return nil
*/


Y ejecuto esta l铆nea

ASend( ::aControls, "INITIATE()", ::hWnd )

Me manda otro mensaje de error de la clase que se esta iniciando.


Alguna sugerencia de por donde van los cables ?
Vikthor
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Group me funciona en ventanas pero no en dialogos
Posted: Wed Sep 20, 2006 07:37 AM
Vikthor,

Hazlo as铆:
#include "FWCE.ch" 

//----------------------------------------------------------------------------// 

function Main() 

   local oWnd, oPanel 
   local cName := Space( 20 ), cAddress := Space( 30 ) 

   DEFINE DIALOG oDlg FROM 1,1 TO 180,180 TITLE "Scroll" PIXEL 

   @  1 , 1 PANEL oPanel OF oDlg  SIZE oDlg:nWidth() - 26, oDlg:nHeight() - 48 PIXEL 

   @  140, 1 SAY "Address:" OF oDlg SIZE 50, 15 PIXEL 
   @  160, 1 GET cAddress OF oDlg SIZE 120, 18 PIXEL 

   ACTIVATE DIALOG oDlg ;
      ON INIT PanelControls( oPanel )

return nil 

function PanelControls( oPanel )

   local cName := Space( 20 )

   @  40, 1 SAY "Name:" OF oPanel SIZE 40, 15 PIXEL 
   @  60, 1 GET cName OF oPanel SIZE 100, 18  PIXEL 

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 298
Joined: Fri Oct 07, 2005 05:20 AM
Group me funciona en ventanas pero no en dialogos
Posted: Thu Sep 21, 2006 01:29 PM
Antonio Linares wrote:Vikthor,

Hazlo as铆:
#include "FWCE.ch" 

//----------------------------------------------------------------------------// 

function Main() 

   local oWnd, oPanel 
   local cName := Space( 20 ), cAddress := Space( 30 ) 

   DEFINE DIALOG oDlg FROM 1,1 TO 180,180 TITLE "Scroll" PIXEL 

   @  1 , 1 PANEL oPanel OF oDlg  SIZE oDlg:nWidth() - 26, oDlg:nHeight() - 48 PIXEL 

   @  140, 1 SAY "Address:" OF oDlg SIZE 50, 15 PIXEL 
   @  160, 1 GET cAddress OF oDlg SIZE 120, 18 PIXEL 

   ACTIVATE DIALOG oDlg ;
      ON INIT PanelControls( oPanel )

return nil 

function PanelControls( oPanel )

   local cName := Space( 20 )

   @  40, 1 SAY "Name:" OF oPanel SIZE 40, 15 PIXEL 
   @  60, 1 GET cName OF oPanel SIZE 100, 18  PIXEL 

return nil


Antonio , gracias por tu pronta respuesta, haciendolo de esa forma la creaci贸n de los controles es correcta , solo tuve que hacer una peque帽a modificaci贸n en la clase TPanel en el m茅todo New() para que el scroll funcionara correctamente.
   if ! Empty( ::oWnd:hWnd )
      ::Create("")
      ::oWnd:AddControl( Self )
      DEFINE SCROLLBAR ::oVScroll VERTICAL OF Self
      ::oVScroll:SetRange( 0, 100 )
   else
      ::oWnd:DefControl( Self )
      DEFINE SCROLLBAR ::oVScroll VERTICAL OF Self
      ::oVScroll:SetRange( 0, 100 )
   endif


Me podr铆as explicar por debemos de hacerlo de esa forma, tambi茅n prob茅 la clase TGroup y se comporta exactamente igual.
Vikthor
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Group me funciona en ventanas pero no en dialogos
Posted: Thu Sep 21, 2006 04:19 PM

Vikthor,

Cuando se crea un di谩logo desde c贸digo fuente se construye un RC en memoria. En un RC no se pueden especificar controles hijos de controles. Es una limitaci贸n de los ficheros RC. S贸lo el dialogo principal y sus controles hijos.

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion