Menú contextual deshabilitado en RichText Editor. VFP

182 views
Skip to first unread message

adem adem

unread,
Oct 2, 2023, 12:16:32 PM10/2/23
to publice...@googlegroups.com

¡Hola a todos!

 He estado tratando de agregar un menú contextual a un editor RichText. Sin embargo, me he encontrado con un problema: todas las opciones del menú contextual están deshabilitadas, tal como se muestra en la foto, y no puedo interactuar con ellas.

He seguido los pasos habituales para crear un menú contextual y vincularlo al RichText Editor, pero parece que algo no funciona como debería. He revisado mi código varias veces y no puedo identificar el problema.

¿Alguien tiene alguna sugerencia, o una  idea de lo que podría estar causando que todas las opciones del menú contextual estén deshabilitadas? ¿Hay alguna configuración específica que deba tener en cuenta respecto al  Editor  para que el menú funcione correctamente?

Cualquier ayuda o sugerencia será muy apreciada. ¡Gracias de antemano!"

Richtext.jpg

integral

unread,
Oct 2, 2023, 1:29:17 PM10/2/23
to Comunidad de Visual Foxpro en Español
Buenos Días

Buscando cierta información te paso un link que encontré que en algo se relaciona a tu consulta...


Quizás te de una pista a tu consulta.

Saludos,

Integral

Zarlu

unread,
Oct 2, 2023, 3:42:53 PM10/2/23
to Comunidad de Visual Foxpro en Español
Buenas tardes 76xademx76 !

...ya realizaste alguna acción que haga que esas opciones de menú estén disponibles?

Suerte
zarlu
Chetumal, Quintana Roo, México

adem adem

unread,
Oct 2, 2023, 7:19:25 PM10/2/23
to publice...@googlegroups.com
Gracias Integral, Gracias Zarlu, por responder, 
Hay algo olvide de explicar, el editor dispone de un menú por defecto, pues en el init del form esta desactivado,
This.olertf.AutoVerbMenu=.F.
y se puede activarlo o desactivarlo desde el check AutoVerbmenu (que toma el valor 0 en el init), tal como aparece en la foto, con el siguiente código:
Thisform.olertf.AutoVerbMenu=Iif(This.Value=0,.F.,.T.)
y para hacer algo personalizado, he creado otro menú, usando un método "thisform.menu_contex_local" con el siguiente código:

LOCAL nValor
IF EMPTY(THISFORM.olertf.TextRTF)
   nValor = .T.
ELSE
   nValor = .F.
ENDIF
DEFINE POPUP edtshort SHORTCUT RELATIVE FROM MROW()+0.76,MCOL()-5 COLOR W/W*,N*/W*,,,,W+
DEFINE BAR _MED_CUT      OF edtshort PROMPT " Cor\<tar                  " KEY CTRL+X, "Ctrl+X"   PICTURE 'BMP\CUT.BMP'                  SKIP FOR nValor = .T.  
DEFINE BAR      2                  OF edtshort PROMPT "\-"
DEFINE BAR _MED_COPY   OF edtshort PROMPT " \<Copiar                  " KEY CTRL+C, "Ctrl+C"  PICTURE 'BMP\COPY.BMP'                SKIP FOR nValor = .T.
DEFINE BAR _MED_PASTE OF edtshort PROMPT " \<Pegar                   " KEY CTRL+V,  "Ctrl+V"   PICTURE 'BMP\PASTE.BMP'                        
DEFINE BAR _MED_CLEAR OF edtshort PROMPT " \<Eliminar               " KEY DEL,         "Delete"  PICTURE 'BMP\DELETE_IMG.BMP'   SKIP FOR nValor = .T.
DEFINE BAR _MED_UNDO  OF edtshort PROMPT " \<Deshacer             " KEY CTRL+Z,  "Ctrl+Z"   PICTURE 'BMP\REDO.BMP'               SKIP FOR nValor = .T.
DEFINE BAR _MED_REDO  OF edtshort PROMPT " \<Rehacer               " KEY CTRL+Y,  "Ctrl+Y"   PICTURE 'BMP\UNDO.BMP'               SKIP FOR nValor = .T.  
DEFINE BAR      8                 OF edtshort PROMPT "\-"
DEFINE BAR _MED_SLCTA OF edtshort PROMPT " \<Seleccionar todo  " KEY CTRL+A, "Ctrl+A"                                                                  SKIP FOR nValor = .T.  
ACTIVATE POPUP edtshort


Y en el evento MouseUp del editor coloque esto:

*** ActiveX Control Event ***
LPARAMETERS button, shift, x, y

IF button = 2 &&Si se presiono el boton derecho
   thisform.menu_contex_local
ENDIF
 
y resultado es la que mencioné  anteriormente, este último menú sale deshabilitado, realizando acciones o no, es lo mismo, esperó que he aclarado mejor.
agradezco mucho vuestro apoyo. ¡Gracias de antemano!

--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/71f00ab5-0a77-4dc2-bfe0-10983c18d560n%40googlegroups.com.

Zarlu

unread,
Oct 3, 2023, 8:32:12 AM10/3/23
to Comunidad de Visual Foxpro en Español

Buenos días 76xademx76 !

Con "realizar una acción" me refiero a que si ya seleccionaste, copiaste, pegaste, eliminaste ..que haga que las opciones se activen.
Caso contrario quizá no están activas por que no hay tarea que realizar, no hay nada en el portapapeles.
Lo que se ve en tu imagen supongo es un Edit,  selecciona, elimina....y entonces prueba el menú.
En la imagen que adjunto se aprecia la situación que comento. En la primera no hay acción que produzca que se activen las opciones, en la segunda ya lo hubo.

(Verifica también el valor de nValor para SKIP de tu menú. O elimina esa condición sólo para probar)

Suerte
zarlu
Chetumal, Quintana Roo, México

Sin título.png

adem adem

unread,
Oct 3, 2023, 9:06:12 PM10/3/23
to publice...@googlegroups.com
Hola Zarlu;
perdón por responder tan tarde,
antes y sobre todo , agradezco mucho tu apoyo.
sobre la respuesta de Sr Integral ( y le agradezco su ayuda)  , creo es una solución, pero como está en C#, no sé manejarlo
bien, lo que estoy usando no es un editbox, es un olecontrol.
y sobre el menú personalizado, el mismo lo estoy usando para otras tareas y funciona bien.
adjunto este ejemplo para compartirlo con el grupo de la comunidad por si alguien lo quiere, y también para que veas lo que me refiero.
 
Un cordial saludo.

integral

unread,
Oct 3, 2023, 9:58:43 PM10/3/23
to Comunidad de Visual Foxpro en Español
Que tal Amigo :

Si observas la imagen se activo el Menu Contextual...

Tan solo marque los CheckBox

Saludos,

Integral
MENU_ACTIVO.jpg

adem adem

unread,
Oct 3, 2023, 10:08:39 PM10/3/23
to publice...@googlegroups.com
Hola Integral,
Al hacer clic sobre el check se activan los dos menús el que está por defecto,  y el personalizado, además si fijas bien, las opciones del menú personalizado están todas habilitadas, solo una ves, y no deben de estarlo salvo opción pegar, y si sigues haciendo clic sobre el editor, verás que están deshabilitadas todas, ni si quiera 'pegar' 

Zarlu

unread,
Oct 4, 2023, 10:17:39 AM10/4/23
to Comunidad de Visual Foxpro en Español
Buenos días 76xademx76 !

Cambia tu menú a algo como esto:
DEFINE POPUP edtshort SHORTCUT RELATIVE FROM MROW()+0.76,MCOL()-5 COLOR W/W*,N*/W*,,,,W+
DEFINE BAR 1 OF edtshort PROMPT " Cor\<tar           " KEY CTRL+X, "Ctrl+X" PICTURE 'BMP\CUT.BMP'  
DEFINE BAR 2 OF edtshort PROMPT "\-"
DEFINE BAR 3 OF edtshort PROMPT " \<Copiar           " KEY CTRL+C, "Ctrl+C" PICTURE 'BMP\COPY.BMP'  
DEFINE BAR 4 OF edtshort PROMPT " \<Pegar            " KEY CTRL+V, "Ctrl+V" PICTURE 'BMP\PASTE.BMP'                        
DEFINE BAR 5 OF edtshort PROMPT " \<Eliminar         " KEY DEL,    "Delete" PICTURE 'BMP\DELETE_IMG.BMP'
DEFINE BAR 6 OF edtshort PROMPT " \<Deshacer         " KEY CTRL+Z, "Ctrl+Z" PICTURE 'BMP\REDO.BMP'      
DEFINE BAR 7 OF edtshort PROMPT " \<Rehacer          " KEY CTRL+Y, "Ctrl+Y" PICTURE 'BMP\UNDO.BMP'      
DEFINE BAR 8 OF edtshort PROMPT "\-"
DEFINE BAR 9 OF edtshort PROMPT " \<Seleccionar todo " KEY CTRL+A, "Ctrl+A"  

ON SELECTION BAR 1 OF edtshort _Screen.ActiveForm.Command27.Click()
ON SELECTION BAR 3 OF edtshort _Screen.ActiveForm.Command25.Click()
ON SELECTION BAR 4 OF edtshort _Screen.ActiveForm.Command26.Click()
ON SELECTION BAR 5 OF edtshort _Screen.ActiveForm.Command12.Click()
ON SELECTION BAR 6 OF edtshort _Screen.ActiveForm.Command23.Click()
ON SELECTION BAR 7 OF edtshort _Screen.ActiveForm.Command24.Click()
ON SELECTION BAR 9 OF edtshort _Screen.ActiveForm.Command28.Click()

ACTIVATE POPUP edtshort

La razón por la que no se activan las opciones es porque dependen de AutoVerbMenu (_med_cut, _med_copy...)

Suerte
zarlu
Chetumal, Quintana Roo, México

adem adem

unread,
Oct 4, 2023, 10:17:06 PM10/4/23
to publice...@googlegroups.com
Hola Zarlu; Gracias por la ayuda, está bastante bien, solo que la opción eliminar , no borra el texto seleccionado o parte de ello , así que, tuve que añadir
otro botón "Eliminar" con lo siguiente (aunque se puede utilizar una función en vez de un botón):

Local oshell
oshell = Newobject("wscript.shell")
Thisform.olertf.SetFocus
oshell.sendKeys("{DEL}")
oshell = Null
Release oshell

y reemplazarla por Command12.Click()
Por otro lado, el botón "Delete" se encarga de eliminar el registro actual, pero no elimina el contenido del editor, así, le añade lo siguiente:

LOCAL oshell
oshell = CREATEOBJECT("wscript.shell")
Thisform.olertf.SetFocus()
oshell.SendKeys("^{home}^{a}{DEL}")
RELEASE oshell

Ahora, solo queda volver a programar la parte de recuento de páginas que está relacionado con los registros, esto no reinicia cuando se eliminan todos los registros.
De nuevo , muchisimas gracias 🙏
Un cordial saludo

Reply all
Reply to author
Forward
0 new messages