Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Duda] No se muestra lo que pone el código. DestinedBroken Visual COBOL y DEV-HUB 8 4 de noviembre de 2021 09:32
[Sintaxis] Directorio por defecto en GetFileName Breew PowerCOBOL (ActiveX, v4 - v11) 8 1 de mayo de 2018 20:42
[Sintaxis] Método "ThruEvents" Kuk PowerCOBOL v3 (V3L10, Win32) 4 26 de agosto de 2015 18:08

Respuesta
 
Herramientas

  #1
Antiguo 17 de mayo de 2017, 13:10
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207
GUI ThruEvents pone el puntero por defecto
0 Inactivo Inactivo

Amigos, me he dado cuenta de que el ThruEvents vuelve a poner el puntero por defecto si antes lo habías cambiado por el de espera.

Es decir, yo hago lo siguiente:

Código COBOL:
  1.  ENVIRONMENT DIVISION.
  2.  DATA DIVISION.
  3.  PROCEDURE DIVISION.
  4.      
  5.      MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF
  6.      MOVE POW-FALSE   TO "Enabled"      OF POW-SELF
  7.      
  8.      PERFORM UNTIL ...
  9.          ...
  10.          
  11.          INVOKE POW-SELF "ThruEvent"
  12.      END-PERFORM

En el primer ThruEvent vuelve a poner el puntero por defecto y no entiendo por qué.
He intentado volver a hacer

Código COBOL:
  1.      MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF

después del ThruEvent pero hace lo mismo.

¿A alguien más le está pasando? Y si es así, ¿habéis encontrado la solución?

Sin el ThruEvent en bucles largos se congela la ventana y Windows se piensa que se la colgado. Por otro lado, me interesa el puntero de espera porque si no hay que hacer algún tipo de mensaje en plan "Espere por favor..."



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #2
Antiguo 17 de mayo de 2017, 15:04
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224

Kuk,

O ThruEvents permite executar eventos de outros processos que estejam pendentes.
Ao executar o "ThruEvents" podem ser executados outros processos que colocam o puntero noutro estado.
Quando regressa ao teu processo, já está modificado.

Já me aconteceu isso com valores de variáveis, no mesmo programa, ao executar o "ThruEvents"
o valor da variável era 1 e num "Perform Until " o valor do índex alterava. Tinha um "ThruEvents" no meio do "Perform - End-Perform".
Por isso os manuais alertam para usar esta instrução com muito cuidado.
Podes, a seguir ao "ThruEvents" voltar sempre a colocar o puntero como queres.
Un saludo,
Rui Pinto
Rapinto is offline   Responder Con Cita
  #3
Antiguo 17 de mayo de 2017, 15:29
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Citación del post de Rapinto Ver Mensaje
Podes, a seguir ao "ThruEvents" voltar sempre a colocar o puntero como queres.
Es lo que he intentado pero no funciona.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #4
Antiguo 17 de mayo de 2017, 18:18
FabioYeyo
Forero Junior
Última Actividad 03.11.2025 14:24
Posts Posts: 14
Likes enviados Enviados: 2
Likes recibidos Recibidos: 0

Kuk.

El ThruEvent no es el que te esta cambiando el puntero quien te lo cambia es cuando pones la instruccion MOVE POW-FALSE TO "Enabled" OF POW-SELF. comenta esta instruccion y veras que funciona bien.

---------- Post añadido : 16:18 ---------- Post anterior : 16:15 ----------

Kuk.

El problema es que cuando pones MOVE POW-FALSE TO "Enabled" OF POW-SELF estas desactivando la ventana que tienes abierta.
FabioYeyo is offline   Responder Con Cita
  #5
Antiguo 17 de mayo de 2017, 21:44
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

FabioYeyo, si no hago ThruEvents funciona con la ventana deshabilitada.

Código COBOL:
  1.      MOVE POW-FALSE TO "Enabled" OF POW-SELF

Esto es para que el usuario no haga click en ningún lado y no cambie nada mientras se ejecuta el bucle. Cuando el bucle (por ejemplo una búsqueda) se termina, se vuelve al estado habilitado del Form con:

Código COBOL:
  1.      MOVE POW-TRUE TO "Enabled" OF POW-SELF



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #6
Antiguo 17 de mayo de 2017, 22:53
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224

Kuk,

Experimenta assim:
Código COBOL:
  1.           move 99 to "MousePointer" OF pow-self
  2.           MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF

No meu PC funciona.
Un saludo,
Rui
Rapinto is offline   Responder Con Cita
  #7
Antiguo 17 de mayo de 2017, 23:05
FabioYeyo
Forero Junior
Última Actividad 03.11.2025 14:24
Posts Posts: 14
Likes enviados Enviados: 2
Likes recibidos Recibidos: 0

Kuk.

Lo unico que se me ocurre de momento es que Deshabilites los controle uno a uno

Saludos
FabioYeyo is offline   Responder Con Cita
  #8
Antiguo 19 de mayo de 2017, 13:57
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Rapinto, FabioYeyo, gracias a ambos.

Rui tiene razón, en el bucle cuando hago:

Código COBOL:
  1.          INVOKE POW-SELF "ThruEvents"
  2.                  
  3.          MOVE 99          TO "MousePointer" OF POW-SELF    
  4.          MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF      

Funciona a la perfección. ¡¡¡Rui, eres un crack macho!!!

---------- Post añadido : 13:57 ---------- Post anterior : 09:16 ----------

Rapinto, funciona, pero mal... El cursor animado hace saltos en algunos procesos.

En definitiva, he sustituido el ThruEvents por lo que uso en PowerCOBOL v3:

Código COBOL:
  1.      CALL "InvalidateRect" WITH STDCALL USING BY VALUE wsHwnd 0 1
  2.      CALL "UpdateWindow"   WITH STDCALL USING BY VALUE wsHwnd

Son llamadas a la WinAPI, y nada mejor, funciona de maravilla.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:20.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.