Rolo,
Modificando tu PRG de ejemplo de esta forma, solo queda un bitmap por localizar y liberar, usando FWH 12.03:
rolo.prg
Code: Select all
// Test para ver los recursos consumidos
#include "FIVEWIN.Ch"
#include "richedit.ch"
#include "xbrowse.ch"
#include "Selector.ch"
#include "ORD.CH"
Function Primera()
local aAG:={} , cPartFecha:="/04/2012"
// set resources to "TestRecursos.dll"
set date british
set epoch to 1960
set century on
set key VK_F10 to CheckRes()
set deleted on /// No se ven los registros borrados
SetResDebug( .T. )
REQUEST HB_LANG_ES
RddSetDefault("DBFCDX")
REQUEST DBFCDX, DBFFPT
REQUEST ordkeyno, ordkeycount, ordkeygoto
if file("AG.DBF")
Ferase("AG.DBF")
endif
if file("AG.FPT")
Ferase("AG.FPT")
endif
if file("AG.CDX")
Ferase("AG.CDX")
endif
aAG := {{ "FECHA" , "D" , 8 , 0} , ;
{ "NOTA" , "M" , 10 , 0}}
DbCreate( "AG.DBF", aAG, "DbfCdx" )
USE "AG" Excl New Via "DbfCdx"
For f = 10 to 25
dbappend()
replace AG->FECHA with ctod(str(f)+cPartFecha)
replace AG->NOTA with ("Test de recursos "+str(f))
next
dbclosearea()
Define window oWnd ;
from 100,100 to 600,800 pixel;
menu Buildmenu();
title "Test de Recursos"
Activate window oWnd on init msginfo("Usar F10 para hojear recursos utilizados"+chr(13)+"y ver los fallos al cerrar")
set resources to
CheckRes()
Return nil
Function Buildmenu()
local oMenu , oPrueba , oSalir , oHelp
menu oMenu 2007
menuitem "Pruebas" message 'Pruebas de borrado de recursos'
menu
menuitem oPrueba prompt '&Cargo Diálogo' action AgenDiaria() ; // action (oListarVAP:disable() , ListarVAP(oListarVAP)) ;
message 'Cargar dialogo en ventana para aumentar recursos'
menuitem oHelp prompt '&Ayuda' action msginfo("Usar F10 para hojear recursos utilizados y ver los fallos al cerrar") ;
message 'Ayuda'
menuitem oSalir prompt '&Salir' action oWnd:end() ;
message 'Salir'
endmenu
endmenu
Return (oMenu)
//----------------------------------------------------------------------------//
Function AgenDiaria() // con xBrowse
local oBrw , oDbf , oDlg , nAregi , oCol , oRichAgDiaria , cRichAgDiaria , oBrush , oFonte , oBrush2
local cAgenDiaria:=cGetNewAlias('AgenDi') , oCur1
use "AG" shared new alias (cAgenDiaria)
DATABASE oDbf
oDbf:SetOrder( 1, ".\DBF's\AGDIARIA.CDX" )
define font oFonte NAME "Arial" SIZE 6,16
define cursor oCur1 resource 222
define brush oBrush resource "BEIGE2"
define brush oBrush2 resource "IRON"
Define dialog oDlg resource "AGENDIARIA" of oWnd brush oBrush icon "CALENDARIO"
oDlg:lHelpIcon := .f. // saca el "?" de ayuda del dialog *** ATENCION, SOLO FUNCIONA, SI EN EL DLL >>> "AYUDA CONTEXTUAL = NO "
redefine richedit oRichAgDiaria var cRichAgDiaria id 4002 of oDlg
oBrw := TXBrowse():New( oDlg )
nAregi:=oDbf:reccount()
oBrw:nHeaderLines := 1
oBrw:lFastEdit := .T.
oBrw:SetoDbf( oDbf )
oBrw:setfont(oFonte)
oBrw:SetBackGround(oBrush2)
oBrw:lContrastClr := .f. // para evitar que _ salgan aleatoriamente con otra tinta
oCol := oBrw:AddCol()
oCol:cHeader := "FECHA"
oCol:bStrData := { || dtoc(oDbf:FECHA) } //{ || oDbf:FECHA}
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_LEFT
oCol:nWidth := 99
oBrw:oCursor:=oCur1
oBrw:aCols[ 1 ]:AddResource( "CALENDARIO" )
oBrw:aCols[ 1 ]:nBtnBmp := 1
oBrw:aCols[ 1 ]:nEditType := EDIT_GET_BUTTON
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW
oBrw:lHScroll:=.f.
oBrw:SetRDD()
oBrw:CreateFromResource( 4001 )
oBrw:bSkip = { | nRecs | oDbf:Skipper( nRecs ) }
oBrw:bChange = {|| cTexto:=oDbf:NOTA , oRichAgDiaria:loadasrtf(cTexto) , ;
oRichAgDiaria:settext(cTexto) , oRichAgDiaria:refresh() }
oRichAgDiaria:bgotfocus:={||oRichAgDiaria:SetBkGndColor(nRgb(223,228,255)) }
oRichAgDiaria:blostfocus:={||oRichAgDiaria:SetBkGndColor(nRgb(255,255,255)) } // , ;
Activate dialog oDlg centered nowait ;
on init ( cTexto:=oDbf:NOTA , oRichAgDiaria:loadasrtf(cTexto) , ;
oRichAgDiaria:settext(cTexto) , oRichAgDiaria:refresh()) ;
valid ( CloseoDbfxBro(oBrw,oDbf) , ;
oBrush:end(), oBrush2:End(),;
oCur1:end(),;
oCur1:end(),;
oFonte:End(), oFonte:End(), oRichAgDiaria:oFont:End(),;
oBrw:aCols[ 1 ]:oBtnList:End(), oBrw:aCols[ 1 ]:oBtnElip:End(),;
DeleteObject( oBrw:aCols[ 1 ]:aBitmaps[ 1, 1 ] ), .T. )
// release all
return nil
//----------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------------------------------------------
Function CloseoDbfxBro(oBrw,oDbf) // para que no de error cerrando la aplicación si al cerrar
// el dialog si el kinetic se está moviendo
oBrw:bKeyCount := { || 0 }
oBrw:bKeyNo := { || 0 }
// oDbf:close()
oBrw:cAlias = ""
Return nil
//-----------------------------------------------------------------------------------------------------------------------
checkres.txt
Code: Select all
16/04/2012 22:10:10: BMP,-1979378897,TXBRWCOLUMN:ADJUST(8707)->TXBROWSE:ADJUST(984)->TXBROWSE:INITIATE(882)->__OBJSENDMSG(0)->OSEND(210)->ASEND(178)->TDIALOG:INITIATE(630)->TDIALOG:ACTIVATE(298)->AGENDIARIA(164)->(b)BUILDMENU(76)->TMENU:COMMAND(461)->TWINDOW:COMMAND(1033)->TWINDOW:HANDLEEVENT(0)->_FWH(3159)->WINRUN(0)->TWINDOW:ACTIVATE(980)->PRIMERA(57)
16/04/2012 22:10:10: ====================================================================================================