Tengo una aplicacion, bastante viejita. En la misma tomo datos de la Dbf y contruyo un Tree de 2 niveles.
Ahora, con el tiempo, a uno de mis clientes le pasa que su Dbf creció, aunque no tanto, aunque al intentar agregar o quitar un Item la PC, bajo Win98SE, se queda sin recursos luego de re construir el Tree (la imagen se vuelve tipo 16 colores)
El código lo plantee así:
- Code: Select all Expand view RUN
// Construir arbol
bArbol:= {|| if( Empty(oTree),, oTree:= nil ), ;
CursorWait() , ;
oTree:= TreeBegin(,) , ;
dbEval({|| cClaEnt:= Cuentas->Cla_Bn, ;
_TreeItem( " "+Cuentas->Nombre,,,oVP:cDirBmp+"\Entidad.bmp",oVP:cDirBmp+"\AbrirEnt.bmp",.F.), ;
aArrCtas:= Cuentas->ArrCtas, ;
TreeBegin(,) , ;
aEval( aArrCtas, {|a| _TreeItem( " ["+cClaEnt+"] "+a[xNomSbCta] ;
,,,oVP:cDirBmp+"\AbrirCta.bmp",,.F.) } ), ;
TreeEnd() } ), ;
SysRefresh(), ;
TreeEnd() , ;
CursorArrow() }
MsgRun ("Construyendo Arbol de Entidades...", "Aguarde...", bArbol)
REDEFINE LISTBOX oLbxTree FIELDS ;
ID BRW_CTAS OF oDlg ;
FONT oFnt1 UPDATE ;
COLOR CLR_BLACK, CLR_WHITE ;
HEADER "",""," E n t i d a d e s ¬ C u e n t a s" ;
oLbxTree:SetTree( oTree )
oLbxTree:nClrForeFocus:= CLR_WHITE
oLbxTree:nClrBackFocus:= CLR_TREEFRED
bDblkCta:= {|nRow, nCol| if( oLbxTree:Cargo:nLevel == NIVEL_ENT, ;
( oLbxTree:SetFocus() , ;
oLbxTree:Cargo:Toggle(), ;
oLbxTree:GoDown() , ;
oLbxTree:SetFocus() , ;
oLbxTree:Refresh() ) , ;
( oWnd:Minimize() , ;
byr_PLAN( oLbxTree, oWnd ) ) ) }
oLbxTree:blDblClick:= bDblkCta
oLbxTree:bRClicked:= {|nRow, nCol| fMenuPop( nRow,nCol ) }
oWnd:bGotFocus:= {|| if( Used(), aoDbf[dbCTA]:SetFocus(), fAbreDbf(dbCTA, TRUE, FALSE) ), ;
aoDbf[dbCTA]:SetOrder("CTA_NOMBRE"), ;
oWnd:Restore(), oLbxTree:SetFocus() }
Esto está en un Dlg. Luego cuando Agrego o Borro un item (Entidad o Cuenta), hago lo siguiente:
- Code: Select all Expand view RUN
bRebuild:= {|| MsgRun ("Reconstruyendo Arbol de Entidades...", "Aguarde...", bArbol), ;
oLbxTree:SetTree( oTree ), ;
oLbxTree:SetFocus(), ;
oLbxTree:Refresh(), ;
oLbxTree:blDblClick:= bDblKCta }
Y aquí es donde se queda sin recursos. Sin dudas que siempre existió el error, que no fue notorio porque procesaba pocos registros o bien porque la App se corre en una PC con XP.
Alguna idea de como solucionarlo?
muchas gracias, saludos
[/code]