Page 1 of 1

PARA ANTONIO LINARES SOBRE CLASE TRBTN

PostPosted: 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

PostPosted: Thu Sep 20, 2012 3:16 pm
by mantonio_08
..

Re: PARA ANTONIO LINARES SOBRE CLASE TRBTN

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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! :-)