PARA ANTONIO LINARES SOBRE CLASE TRBTN
Posted:
Thu Sep 20, 2012 2:02 am
by mantonio_08
En este método de la clase trbtn
deleteobject (::hBack) solo se aplica cuando se botón creado esta contenido en una trbgroup, y si no es así.. PQ no se usa..
debería destruirse o no
METHOD Destroy() CLASS TRBtn
DeleteObject( ::hArrow )
if ::oWnd:IsKindOf( "TRBGROUP" )
if ::hBack != ::oWnd:hBack
DeleteObject( ::hBack )
endif
endif
Re: PARA ANTONIO LINARES SOBRE CLASE TRBTN
Posted:
Thu Sep 20, 2012 8:27 pm
by Antonio Linares
Si, tienes razón, debería eliminarse siempre sino es el mismo que el de su contenedor:
- Code: Select all Expand view
// if ::oWnd:IsKindOf( "TRBGROUP" )
if ::hBack != ::oWnd:hBack
DeleteObject( ::hBack )
endif
// endif
gracias!
Re: PARA ANTONIO LINARES SOBRE CLASE TRBTN
Posted:
Mon Sep 24, 2012 12:48 pm
by Patricio Avalos Aguirre
Hola
hice el cambio y me arrojo error
Error occurred at: 24/09/2012, 09:44:58
Error description: Warning BASE/1004 Message not found: TRIBBONBAR:HBACK
Stack Calls
===========
Called from: source\rtl\tobject.prg => TRIBBONBAR:ERROR( 0 )
Called from: source\rtl\tobject.prg => TRIBBONBAR:MSGNOTFOUND( 0 )
Called from: source\rtl\tobject.prg => TRIBBONBAR:HBACK( 0 )
Called from: c:\fwh\source\classes\TRBTN.prg => TRBTN:DESTROY( 876 )
Called from: => TWINDOW:HANDLEEVENT( 0 )
Called from: c:\fwh\source\classes\CONTROL.prg => TCONTROL:HANDLEEVENT( 1701 )
Called from: c:\fwh\source\classes\TRBTN.prg => TRBTN:HANDLEEVENT( 1526 )
Called from: c:\fwh\source\classes\WINDOW.prg => _FWH( 3152 )
Called from: => WINRUN( 0 )
Called from: c:\fwh\source\classes\WINDOW.prg => TWINDOW:ACTIVATE( 978 )
Called from: .\Wcta.PRG => MAIN( 31 )
Re: PARA ANTONIO LINARES SOBRE CLASE TRBTN
Posted:
Mon Sep 24, 2012 1:20 pm
by Antonio Linares
Cierto, solo un rbgroup tiene la data hBack...
lo dejamos asi:
- Code: Select all Expand view
if ::oWnd:IsKindOf( "TRBGROUP" ) .and. ::hBack != ::oWnd:hBack
DeleteObject( ::hBack )
endif
Re: PARA ANTONIO LINARES SOBRE CLASE TRBTN
Posted:
Tue Sep 25, 2012 3:33 am
by mantonio_08
MASTER ANTONIO Y PATRICIO
Esto:
if ::oWnd:IsKindOf( "TRBGROUP" ) .and. ::hBack != ::oWnd:hBack
DeleteObject( ::hBack )
endif
es lo mismo que decir:
if ::oWnd:IsKindOf( "TRBGROUP" )
if ::hBack != ::oWnd:hBack
DeleteObject( ::hBack )
endif
endif
de la clase original de TRBTN, ahora hBack como data la posee la clase trbgroup y tambien la clase trbtn es cosa de leer..
en este metodo destroy ( ojo de la clase TRBTN ) que preguntamos:
1.- si es ::oWnd de la clase TRBGROUP , y esto para que, simple para poder comparar si el hBack del TRBTN no es igual al de su contenedor y asi poder eliminarlo
lo que no cuadra es cuando el TRBTN no esta contenido en un RBGROUP, que se hace :::???
SIMPLE
eliminar el objeto de frenton quedando el codigo asi
if ::oWnd:IsKindOf( "TRBGROUP" )
if ::hBack != ::oWnd:hBack
DeleteObject( ::hBack )
endif
Else
DeleteObject( ::hBack )
endif
Que opinas MASTER
atento a tus comentarios.
Pdt. se me olvidaba master,, porque hay que comparar los dos hBack,, el del TRBtn y el del TRBGROUP.. ??
Re: PARA ANTONIO LINARES SOBRE CLASE TRBTN
Posted:
Tue Sep 25, 2012 8:10 am
by Antonio Linares
Se comparan porque puede ser el mismo que el de su contenedor, en cuyo caso no hay que destruirlo.
gracias!