¿Puede funcionar en dialogos?
Estoy generando los controles sin recursos, por puro código
Group me funciona en ventanas pero no en dialogos
- creswinman
- Posts: 33
- Joined: Thu Aug 24, 2006 3:14 am
- Location: mexico
- Contact:
Re: Group me funciona en ventanas pero no en dialogos
Antonio :creswinman wrote:¿Puede funcionar en dialogos?
Estoy generando los controles sin recursos, por puro código
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 :
Code: Select all
#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
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
Code: Select all
/*
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
*/
ASend( ::aControls, "INITIATE()", ::hWnd )
Me manda otro mensaje de error de la clase que se esta iniciando.
Alguna sugerencia de por donde van _ ?
Vikthor
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Vikthor,
Hazlo así:
Hazlo así:
Code: Select all
#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.Antonio Linares wrote:Vikthor,
Hazlo así:Code: Select all
#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
Code: Select all
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
Vikthor
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: