Buenas a todos.
Soy nuevo en el foro, y aunque os leo mucho, hasta ahora no habia porteado nada.
He hecho algunas aplicaciones en clipper a nivel personal, y hasta ahora, no me habia animado a adentrarme en fivewin.
El hecho de postear, es porque soy incapar de lograr que cuando pico en una LISTBOX despues de haberse actualizado con un timer no me de fallo de apertura de base de datos.
Os dajunto el codigo por si me podeis ayudar. Gracias mil anticipadas.
#include "FiveWin.ch"
static oWnd, oLbx, oTimer, Z
//----------------------------------------------------------------------------//
function Main()
DEFINE dialog oWnd FROM 0, 0 TO 50, 120 ;
TITLE "PASO DE ATLETAS EN TIEMPO REAL . . ." COLOR CLR_WHITE STYLE DS_MODALFRAME
USE datos new shared
index on datos->puesto to pue
use datos shared index pue
count to z for datos->puesto >= 1
if !file("datos2.dbf")
copy to datos2
use datos2 shared
endif
ACTIVATE DIALOG oWnd ON INIT oWnd:SetMenu( BuildMenu()) CENTERED
return nil
//----------------------------------------------------------------------------//
function BuildMenu()
local oMenu
MENU oMenu
MENUITEM "&Tiempo real"
MENU
MENUITEM "&Activar" ACTION Timer1()
SEPARATOR
MENUITEM "&Salir" ACTION oWnd:End()
ENDMENU
ENDMENU
return oMenu
//-------------------------------------------------------------------------
function Timer1()
DEFINE TIMER oTimer interval 1000 ACTION lahora() ;
ACTIVATE TIMER oTimer
return nil
//----------------------------------------------------------------------------
func lahora()
local oLbx, x
use datos shared
count to x for datos->puesto >= 1
if x > z
index on datos->puesto to pue
set index to pue
set filter to datos->puesto >= 1
copy to datos2
use datos2 shared
@ 0, 0 LISTBOX oLbx FIELDS str(datos2->puesto,4),;
oemtoansi(datos2->nombreyape),;
datos2->club,;
datos2->local,;
datos2->licencia,;
datos2->minusvalid ;
HEADERS "PUESTO", "NOMBRE","CLUB", "LOC.","FED.", "MIN." ;
FIELDSIZES 50, 210, 150, 40, 40, 40 ;
SIZE 1000, 700 OF oWnd
oLbx:nClrText = { || iif(datos2->_="HOMBRE",SColor( 0), sColor(1)) }
oLbx:refresh()
go lastrec()-46
z=x
endif
return nil
//----------------------------------------------------------------------------//
static function SColor( nNivel )
local nColor := CLR_BLACK
do case
case nNivel == 1
nColor = CLR_HRED
case nNivel == 2
nColor = CLR_WHITE
case nNivel == 3
nColor = CLR_HBLUE
case nNivel == 4
nColor = CLR_RED
case nNivel == 5
nColor = CLR_GREEN
case nNivel == 6
nColor = CLR_BLUE
case nNivel == 7
nColor = CLR_BLACK
case nNivel == 8
nColor = CLR_YELLOW
endcase
return nColor