Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Herramienta] Como usar el método "SaveToImageFile" de ActiveX | jotica | PowerCOBOL (ActiveX, v4 - v11) | 3 | 27 de agosto de 2024 11:18 |
| [Sintaxis] ODBC - cambiar el "path" de una base de datos | Hrmcobol | PowerCOBOL (ActiveX, v4 - v11) | 9 | 15 de noviembre de 2022 20:24 |
| [Duda] Call "CFURCOV" System error occurred. code = 0x25 | dmosca | PowerCOBOL (ActiveX, v4 - v11) | 19 | 6 de agosto de 2019 15:29 |
| China quiere lanzar una "luna artificial" en 2020 | Kuk | Charladero - espacio libre | 0 | 20 de octubre de 2018 21:52 |
| [Sintaxis] Error MOVE "Parent" de un nodo "Root" en TreeView | dmosca | PowerCOBOL (ActiveX, v4 - v11) | 1 | 23 de agosto de 2017 08:47 |
![]() |
|
Administrador
![]()
|
Amigos, he visto que los Forms del Power 3 no tienen método "ThruEvents" (o lo que es lomismo en Borland/Embarcadero el método "Update").
Cómo solucionáis este tema en los bucles? Si no hay solución, habrá que acudir a WinAPI "InvalidateRect" + "UpdateWindow" o algo así (nunca lo he necesitado, no sé cómo va exactamente)... Añadido despues de 1 hora 12 minutos He encontrado la solución! El equivalente el "ThruEvents" serían 2 llamadas a WinAPI: Código COBOL:
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Última edición por Kuk fecha: 11 de mayo de 2017 a las 15:32. |
||||||||
|
|
|
|
Gran amigo del Foro
Guru de COBOL ![]()
|
Kuk,
Só queria deixar a minha opinião sobre este assunto. A minha ideia sobre "ThruEvents" ou "Doevents" em VB6, é que a rotina que está a ser executada, deixa de ser executada e todos os eventos pendentes são processados. Em seguida retorna ao ponto onde estava. Um exemplo concreto: Estás a executar o código no evento "Click" dum botão. Código COBOL:
Quando é executado o THRUEVENTS, a instrução IF a seguir não é logo executada. Se o operador tivesse entretanto feito um click numa listview, esse código começava a ser executado por causa do THRUEVENTS e só depois regressava á instrução IF a seguir. A opinião geral de muitos programadores é que se deve evitar o uso do THRUEVENTS, pois deixamos de ter um controlo rigoroso do que se está a executar. Se tiveres o FujitsuCobol ver. 9, podes testar isto que eu digo. Por outro lado, as instruções de CALL que estás a utilizar, parecem-me mais a instrução do COBOL9: INVOKE POW-SELF "REFRESH" (mas posso estar enganado). Citado de Microsoft MSDN (DoEvents em VB6 = ThruEvents em COBOL): Cita:
Un saludo, Rui Pinto |
|||||||||
|
|
|
|
Administrador
![]()
|
Rapinto, gracias por esta info. Yo lo sabía, pero uso bastante el ThruEvents en los bucles, donde actualizo un ProgressBar o casos similares. El método Refresh no hace nada (al menos yo siempre que lo he usado no ha hecho nada)...
Normalmente uso el ThruEvents antes del END-PERFORM. ![]() 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 |
||||||||
|
|
|
|
Moderador Global
![]()
|
Un saludo.- |
|||||||||
|
|
|
|
Administrador
![]()
|
Si lo usas bien, no da ningún problema. Mira, estoy en un tratamiento "masivo" de datos con un bucle, lo que hago es dehabilitar el Form (propiedad "Enabled") y para mejor viasualización - puntero de espera. De esta manera, el usuario no puede lanzar subprocesos agenos. Luego, dentro del bucle, al final de cada iteración meto el ThruEvents. Esto lo que hace es ejecutar los procesos pendientes, pero únicos que hay son lo que yo manejo (el ProgressBar, un CmStatic etc.). De esta manera, no me ejecuta la siguiente iteración del bucle hasta que no redibuje la pantalla con los nuevos datos. El unico proceso "incontrolable" que queda es el foco de la ventana en sí, pero se control por Windows. Así que si WIndows ha ordenado enfocar o desenfocar la ventana, es justo en el ThruEvents donde lo veríamos "bien" (a tiempo). ![]() 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 |
|||||||||
|
|
|
![]() |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||