Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________
Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________
Hernan una pregunta, cual es el problema de cambiar el bucle por el read events?. Yo siempre utilizo este último.
Sí, vuelve al principio, pero no ejecuta el CLEAR ALL como mencionas; ejecuta la línea sgte a donde va, y va en "do MyMenu".
>>> Si llamas al MAIN, al principio tienes un CLEAR ALL, que si mal no recuerdo, borra todo y cierra todo.
Sí, pero el CLEAR ALL sólo se ejcuta la primera vez que se ejecuta, no luego de regresar de un RETURN TO MASTER.
El error se produce luego de un error (???????), pero dentro de "do MyMenu", y al regresar pasa a la línea sgte que es "if M.lSalir" y sgtes.
>>> Pero no importa si vuelvo o lo llamo; el tema es que el RETURN vuelve al MAIN (si no es al principio, donde?).
>>> Y porque reajustar el menú; agregas o quitas opciones?
Sí. Pero éso es otro tema.
>>> Y si el programa da un error (por índice roto), al volver el MAIN, se soluciona algo?Por favor, amigo, no se soluciona. Nadie ha dicho éso. ¿Por qué insistes en ello?
Yo nunca he dicho que se soluciona. Eres tú (y otros) que lo expresan como si yo lo hubiera dicho... o no sé qué.....
>>> Y si no tienes READ EVENTS, ¿son formularios modales? o ¿tienes algún READ por ahí?
No te sé contestar, pero lo intentaré.Para mis formularios debí ejecutarlos (los ejecuto) con .Show(1) o con "WindowType=1", pues de otra forma no se "veían".
((este respuesta te la doy porque veo en las ayudas que WindowType=1 se refiere a forms "modales")).
>>> ... es evidente que si no se activa ningún formulario (supongo que modales) el bucle no se detiene.
¿Sabes dónde hay info al respecto?A mí me parece que sí se detiene, en el menú, a esperar que escoja alguna opción ((pero sólo me parece ---porque así lo veo---)).
>>> Según M$, el return to master es aplicable a vfp 3 (tres) y anteriores ver http://support.microsoft.com/kb/119900/es
Lamento contradecirte, colega: No veo en esta URL que se menciona sobre la limitación de VFP3. Por el contrario: es aplicable HASTA la v6 (pero por que esta info apareción en la época de VFP6, no que no se pueda utilizar en superiores).
Será porque falta el READ EVENTS :-)
Acabdo de modificar tu archivo main.prg
Cambialo por este código que te paso :
** Programa principal del Ejemplo de Uso de la FoxRibbon
* MAIN.prg
* Nov-2013
#define _CR chr(13)
#include MessBox.H
on error do errHandler WITH ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO()
on shutdown do Terminar
SET MULT Off
SET SYSM OFF
set esca off
set safe off
set dele on
set cons off
set conf off
set talk off
set devi to scre
set prin off
set prin to
SET STRICTDATE TO 0
set date YMD && aaaa.mm.dd
set cent on
set excl Off && por defecto red
*SET ANSI OFF
*SET EXACT Off
set deve on && ¨.exe?
set noti on
**
**
set default to JustPath(fullpath(sys(16)))
clear
do GenRibbon with "RIBBON_MENU.DBF",.T.
_Screen.AddProperty([lSalir],.f.)
_Screen.TitleBar = 0 && Off
do RIBBON_MENU.PRG
read events
PROCEDURE errHandler
lPARAMETER merror, mess, mess1, mprog, mlineno
CLEAR
local M.xCad
M.xCad =;
'Error number : ' + transform(M.merror)+_CR;
+'Error message: ' + M.mess+_CR;
+'Line of code with error: ' + M.mess1+_CR;
+'Line number of error: ' + transform(M.mlineno)+_CR;
+'Program with error : ' + M.mprog+_CR
**MB_RETRYCANCEL 5 && Retry and Cancel buttons
local M.nResp
M.nResp = MessageBox(M.xCad,MB_RETRYCANCEL,"---Manejador simple de errores---")
do case
case M.nResp = IDRETRY && 4 && Retry button pressed
retry
case M.nResp = IDCANCEL && 2 && Cancel button pressed
close databases
** hay otros comandos para CleanUp
set sysm to defa
set debu on
set step on
CLEAR EVENTS
*return to master
&& con estas dos instrucciones la app se bloquea en la instrucción READ EVENTS
&& y si suprimo 'return to master' dejando sólo CLEAR EVENTS, regresa a la línea sigte a la que produjo el error.....
endcase
ENDPROC
**
- También habilitas la generación de la ribbon con "do GenRibbon with "RIBBON_MENU.DBF",.T." que tabién había deshabilitado para simplificar el ambiente.Gracias, Miguel.- Veo que habilitaste varias instrucciones que yo tenía deshabilitadas precisamente para simplificar el ambiente: las que están desde "SET MULT Off" hasta "set noti on".
Cámbialo ahora por este, estoy cambiando tu procedure de error :
** Programa principal del Ejemplo de Uso de la FoxRibbon
* MAIN.prg
* Nov-2013
#define _CR chr(13)
#include MessBox.H
DOEVENTS
ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), MESSAGE(1), SYS(16), LINENO( ), PROGRAM()
SET MULT Off
SET SYSM OFF
set esca off
set safe off
set dele on
set cons off
set conf off
set talk off
set devi to scre
set prin off
set prin to
SET STRICTDATE TO 0
set date YMD && aaaa.mm.dd
set cent on
set excl Off && por defecto red
set default to JustPath(fullpath(sys(16)))
do GenRibbon with "RIBBON_MENU.DBF",.T.
_Screen.AddProperty([lSalir],.f.)
_Screen.TitleBar = 0 && Off
do RIBBON_MENU.PRG
read events
FUNCTION errhand
PARAMETER merror, mess, mess1, mprog, mlineno, prowram
msgexit = "Número de error : "+LTRIM(STR(merror))+CHR(13)+"Mensaje de error : "+ALLTRIM(mess)+CHR(13)+"Línea de código con error : "+mess1+CHR(13)+"Número de línea del error : "+LTRIM(STR(mlineno))+CHR(13)+"Programa con error : "+mprog+CHR(13)+prowram
lnanswer = MESSAGEBOX(msgexit, 050, "El Error ya fue Registrado, en Breve se Comunicarán con Ud.")
CREATE CURSOR v_error (nro_er C (6), msg_er C (80), licod_er C (6), nroli_er C (6), prg_er C (80), dia D)
IF FILE("Errores.txt")
SELECT v_error
APPEND FROM ("Errores.txt") TYPE SDF
ENDIF
INSERT INTO v_error (nro_er, msg_er, licod_er, nroli_er, prg_er, dia) VALUES (ALLTRIM(STR(merror)), mess, mess1, ALLTRIM(STR(mlineno)), mprog, DATE())
COPY TO ("Errores.txt") TYPE SDF
USE IN v_error
DO CASE
CASE lnanswer=3
CANCEL
CASE lnanswer=4
RETRY
CASE lnanswer=5
RETURN .T.
ENDCASE
ENDFUNC
Cámbialo ahora por este, estoy cambiando tu procedure de error :
DO CASE
Ningun sistema este excento de errores…Windows es uno de ellos. Cuando te sale un mensaje de error te muestra 3 opciones, si CANCELAR, REINTENTAR o IGNORAR…yo trabajo con sistemas que solo te dan la opción de cancelar…nada de intentar o ignorar.. y si al usuario le sale un error hace un print screen y nos lo envían para revisarlo. No te hagas bolas…..el usuario sabe que si cancela se cierra, si reintenta volverá a ejecutarlo, si ignora no hace nada….
MK
De: HernanCano
[mailto:jherna...@gmail.com]
Enviado el: lunes, 16 de diciembre de 2013 03:50 p.m.
Para: publice...@googlegroups.com
CC: HernanCano; Miguel Canchas
Asunto: Re: [vfp] Re: Sobre rendimiento y uso de procesador por app VFP
Miguel:
Tan dificil es usar el FoxRibbon?... no tiene manual?SaludosJorge Florez
“Y como también el alcance que muestro no admite el uso de las teclas Tab ni Enter sobre los botones de la ribbon, informan que todo está ligado.”
Que manera de complicarse la vida, en estos tiempos ya no se usa como antes que era con las flechas de direccion, en tiempos modernos se usa el mouse...
Acaso vez que en el office permite desplazarse por el menu con las teclas de direccion ?? No pues, no lo hace...
MK
De:
publice...@googlegroups.com [mailto:publice...@googlegroups.com] En
nombre de Hernan Cano
Enviado el: lunes, 16 de diciembre de 2013 04:59 p.m.
Para: publice...@googlegroups.com
Asunto: Re: [vfp] Re: Sobre rendimiento y uso de procesador por app VFP
El ejemplo que muestro facilita el uso de Foxribbon, ya que como está en el portal, sólo puede ser usado de forma "visual".