Hola,
Sigo tratando de "Iniciarme" con la clase TDatabase.
Tengo un problema y es que no logro cerrar los alias abiertos cuando cierro el/los dialogs. Como habitualmente hago con los dialogs NOWAIT, intenté cerrar el alias en el valid, pero no resulta y dá un error.
Adjunto el código del PRG de prueba que es una reforma al PRG de los Salmples:
#include "FiveWin.ch"
static oWnd
//----------------------------------------------------------------------------//
function Main()
set resources to 'dbfpla.dll'
DEFINE WINDOW oWnd FROM 2, 2 TO 20, 70 ;
TITLE "Testing DataBase Objects" ;
MENU BuildMenu()
SET MESSAGE OF oWnd ;
TO "FiveWin - Object Oriented DataBase Management" CENTERED
ACTIVATE WINDOW oWnd MAXIMIZED ;
VALID MsgYesNo( "Do you really want to end ?" )
return nil
//----------------------------------------------------------------------------//
function BuildMenu()
local oMenu
MENU oMenu
MENUITEM "&Clients"
MENU
MENUITEM "&Hojear..." ACTION ClientsBrowse() ;
MESSAGE "Clients browse management dialog"
SEPARATOR
MENUITEM "&Exit Test..." ACTION oWnd:End() ;
MESSAGE "End doing this tutorial"
ENDMENU
ENDMENU
return oMenu
//----------------------------------------------------------------------------//
Function ClientsBrowse()
local oBrw , oLbx , lSalir:=.f. , oDbf
local cClientes:=cGetNewAlias('clientes')
static oDlg
use CLIENTES shared new alias (cClientes)
DATABASE oDbf
define dialog oDlg resource "XBROWSETEST"
REDEFINE LISTBOX oLbx ;
FIELDS oDbf:NOMBRE ,;
oDbf:DIRECCION ;
HEADERS "Nombre", "Dirección" ;
SIZES 250, 300 ;
ID 101 OF oDlg
oLbx:bSkip = { | nRecs | oDbf:Skipper( nRecs ) }
ACTIVATE DIALOG oDlg CENTERED nowait valid ( oDbf:close() , .t.)
return nil
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
procedure AppSys // XBase++ requirement
return
//----------------------------------------------------------------------------//
Funciona bién pero al cerrar el dialog me dá este error:
Application
===========
Path and name: D:\VERCE\BIN\Dbf03.Exe (32 bits)
Size: 1,596,416 bytes
Time from start: 0 hours 0 mins 8 secs
Error occurred at: 07/02/09, 19:24:06
Error description: Error BASE/1004 Message not found: TDATABASE:NOMBRE
Stack Calls
===========
Called from: HARBOUR.PRG => _CLSSETERROR(0)
Called from: DATABASE.PRG => TDATABASE:NOMBRE(410)
Called from: dbf03.prg => (b)CLIENTSBROWSE(64)
Called from: WBROWSE.PRG => TWBROWSE:DRAWSELECT(0)
Called from: WBROWSE.PRG => (b)TWBROWSE:TWBROWSE(0)
Called from: => TWBROWSE:LOSTFOCUS(0)
Called from: CONTROL.PRG => TWBROWSE:KILLFOCUS(0)
Called from: CONTROL.PRG => TWBROWSE:HANDLEEVENT(0)
Called from: WINDOW.PRG => _FWH(0)
Called from: => DESTROYWINDOW(0)
Called from: DIALOG.PRG => TDIALOG:CLOSE(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: DIALOG.PRG => TDIALOG:HANDLEEVENT(0)
Called from: WINDOW.PRG => _FWH(0)
Called from: => SYSREFRESH(0)
Called from: DIALOG.PRG => TDIALOG:END(0)
Called from: WINDOW.PRG => TWINDOW:SYSCOMMAND(0)
Called from: DIALOG.PRG => TDIALOG:SYSCOMMAND(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: DIALOG.PRG => TDIALOG:HANDLEEVENT(0)
Called from: WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: WINDOW.PRG => TWINDOW:ACTIVATE(0)
Called from: dbf03.prg => MAIN(21)
Quedo a la espera de una ayuda. Gracias.
Rolando
