by Manuel Aranda » Mon Mar 02, 2009 6:09 pm
Nunca antes hasta ahora había tenido necesidad de usar un timer, por lo que probablemente esté haciendo algo mal. La cuestión es la siguiente: En un ambiente de red local necesito refrescar un oSay contenido en un diálogo (Función Colas() ) con el contenido de un campo de un fichero dbf que cambia de valor por acción dada desde cualquier terminal.(Función Siguiente() ) El hecho es que si lo hago desde el mismo terminal en que abro el diálogo el oSay1 se refresca convenientemente; sin embargo si el cambio se realiza desde cualquier otro terminal no se mueve. He comprobado que el dato se graba en el fichero. Este es el código usado:
- Code: Select all Expand view
*********************************
STATIC FUNCTION COLAS()
********************************
Local oDlg
Local oSay1
Local cNumero:=STR(FRECU3->ANTERIOR,2)
//
DEFINE DIALOG oDlg RESOURCE "COLAS"
REDEFINE SAY oSay1 PROMPT cNumero ID 201 OF oDlg
//
ACTIVATE DIALOG oDlg CENTER ON INIT MiTimerOn(oSay1,oDlg) NOMODAL
//
RETURN NIL
**********************************************************
STATIC FUNCTION MiTimerOn(oSay1,oDlg)
**********************************************************
DEFINE TIMER oTimer OF oDlg INTERVAL 1000 ACTION TimerAction(oSay1)
ACTIVATE TIMER oTimer
RETURN NIL
**********************************************
STATIC FUNCTION TimerAction(oSay1)
**********************************************
Local cAnterior:= STR(FRECU3->ANTERIOR,2)
Local cNumero := STR(FRECU3->NUMERO,2)
//
IF cNumero <> cAnterior
//
oSay1:SetText(cNumero)
//
IF FRECU3->(!RecLock(5))
TONE(400,2)
TONE(200,2)
//
MsgInfo("No es posible la modificación;inténtelo más tarde, por favor.")
//
ELSE
REPLACE FRECU3->Anterior WITH FRECU3->Numero
FRECU3->(DbRunLock())
FRECU3->(DbCommit())
ENDIF
//
ENDIF
//
RETURN NIL
**************************************
STATIC FUNCTION SIGUIENTE()
**************************************
Local nNumero := FRECU3->Numero
nNumero = nNumero+1
//
IF FRECU3->(!RecLock(5))
TONE(400,2)
TONE(200,2)
//
MsgInfo("No es posible la modificación;inténtelo más tarde, por favor.")
//
ELSE
REPLACE FRECU3->Numero WITH nNumero
FRECU3->(DbRunLock())
FRECU3->(DbCommit())
ENDIF
//
//ENDIF
//
RETURN NIL
Un saludo,
Manuel
xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC