Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Uso del control CmProgress (https://www.cobolforo.es/showthread.php?t=374)

Breew 18 de abril de 2016 16:15

Uso del control CmProgress
 
Hola.

Al arrancar el programa necesito cargar un fichero muy grande.
Como la espera es "desesperante", he intentado decorar la carga con una barra con porcentaje, pero no acabo de ver como funciona.

No encuentro la manera de que vaya bien. Creo que la intencion es buena.
Abro el fichero, invoco el timer y dentro del timer voy leyendo registros.

¿ Como lo haceis funcionar ?

Saludos:(

Josber 18 de abril de 2016 17:43

Breew,
¿Qué versión de PWC estás usando?

Breew 18 de abril de 2016 22:44

Hola.

Perdonad el despiste.Estoy usando la version 9.0 compilada en Windows7

Rapinto 19 de abril de 2016 00:15

Breew,

Está na Cocina del Foro um exemplo para saber o numero total de registos num ficheiro.
"Numero de Registos num Ficheiro indexado".

Colocas o numero total de registos no "MAX" da CMprogress

Em seguida, por cada registo lido, somas 1 ao "value" da cmprogress.

Não necessitas de nenhum cmtimer para isto.
Deves executar um ThruEvents por exemplo de 1000 em 1000 registos, para não bloquear tudo.

Se não conseguires diz-me. Posso fazer um exemplo.

Desculpa responder em português (espero que entendas).

Saludos,
Rui Pinto

Josber 19 de abril de 2016 09:53

Yo utilizo una barra que es un ocs de terceros, el que trae PWC9, no me gusta nada, el "repintado" que hace es muy malo, el que uso se llama "progressbar-xp.ocx", que trae bastantes opciones y es muy sencillo de utilizar.
Como te ha dicho Rui, no tienes que hacerlo con un timer, sino:

- Saber el número total de registros, o lo haces con la utilidad que te ha dicho Rui, o haces una doble lectura del fichero, (la primera para saber el total de registros).
- Pones el total de registros en la propiedad "Max" de la barra de progreso y 1 en la propiedad "Min"
- Por cada lectura que hagas, sumas 1 a un contador y ese contador lo mueves a la propiedad "Value" de la barra de progreso
- Cuando termines de leer, pones a 0 la propiedad "Visible" de la barra

Por ejemplo:

Código COBOL:
  1. INICIO.
  2.         MOVE CONTASQL TO "Max" OF PROGRESO.
  3.         MOVE 1        TO "Min" OF PROGRESO.
  4.         MOVE 1        TO "Visible" OF PROGRESO.
  5.                      .
  6.                      .
  7.                      .
  8. LEER.
  9.         READ fichero NEXT .....
  10.         ADD 1 TO CONTA.
  11.         MOVE CONTA TO "Value" OF PROGRESO.
  12.                      .
  13.                      .
  14.                      .
  15. FIN.
  16.         MOVE 0        TO "Visible" OF PROGRESO.


Y con eso debe de funcionarte, si quieres el ocx, dilo y lo subo.

Un saludo.-

Kuk 19 de abril de 2016 10:10

Rapinto, Josber, la ventaja del Timer, ahora que lo pienso, podría ser que en Windows 7 por ejemplo, el ProgressBar incluso cuando está parado, si no está a 0, hay un reflejo que recorre la parte llena cada x segundos. Este efecto desaparece en un bucle con ThruEvents, el cual resolvía el problema en XP porque ahí no hay ningun reflejo ni nada, sólo barra de progreso como tal. Como el Timer trabaja, por decirlo de alguna manera, "en un hilo separado", podría mantener el reflejo que digo.

Josber 19 de abril de 2016 10:42

Supongo Kuk, pero, creo que es consumir recursos así porque así.

Un saludo.-

Breew 22 de abril de 2016 00:04

Hola Josber,

Sube el ocx, me gustaria echarle un vistazo

Gracias

Josber 22 de abril de 2016 12:04

1 Archivos Adjunto(s)
Aquí lo tienes, es muy sencillo de usar, pero si te hace falta ayuda, dilo.

Un saludo.-

Breew 23 de abril de 2016 17:27

Hola.


Perfecto.
Ahora tengo un problema. el cmprogress lo tengo metido en opened event.
Pero no es visible hasta que no acaba de hacer todas las instrucciones del opened event.
Como hago para que primero carque toda la pantalla y despues ejecute la lectura del archivo con el cmprogress[COLOR="Silver"]

---------- Post añadido : 17:27 ---------- Post anterior : 17:10 ----------

Cita:

Citación del post de Josber (Mensaje 1831)
Aquí lo tienes, es muy sencillo de usar, pero si te hace falta ayuda, dilo.

Un saludo.-

hola.

No puedo instalarlo ni con el regsvr32 ni con el powercobol. me da error.:confused::confused:

Saludos

Josber 23 de abril de 2016 17:35

Cita:

Citación del post de Breew (Mensaje 1844)
Perfecto.
Ahora tengo un problema. el cmprogress lo tengo metido en opened event.
Pero no es visible hasta que no acaba de hacer todas las instrucciones del opened event.
Como hago para que primero carque toda la pantalla y despues ejecute la lectura del archivo con el cmprogress[COLOR="Silver"]

En el evento Opened, la primera instrucción que tienes que poner es

Código COBOL:
  1. INVOKE POW-SELF "ShowForm" USING POW-SWSHOWNORMAL.

Esto hará que el form se cargue entero antes de empezar a ejecutar cualquier rutina.

En cuanto al error, ¿que es lo que te dice exactamente?

Un saludo.-

Breew 23 de abril de 2016 20:01

hola Josber.

No se enviar imagen del error, pero desde el directorio system32 o el syswow64 ejecuto regsvr32 y me dice que no se puede bargar el modulo, que me asegure que el archivo binario este almacenadoen la ruta o que lo depure buscando errores-

Kuk 23 de abril de 2016 22:06

Breew, tienes que crear un archivo de texto en el mismo directorio que el OCX, renombrarlo en nombre.cmd y dentro poner lo siguiente:

Código:

@REGSVR32 Nombre_control.ocx
Luego ejecutar el archivo *.cmd con botón derecho->Ejecutar como Administrador

Breew 24 de abril de 2016 21:31

1 Archivos Adjunto(s)
Hola.

Nada, no lo consigo.

Kuk 24 de abril de 2016 22:17

Breew, lo has ejecutado como Administrador? Qué versión de OS tienes, Windows 7 x64?

Josber, en x64 funciona tu OCX?

Breew 24 de abril de 2016 22:22

Hola.

Si, como administrador en w7 64

Roger 25 de abril de 2016 02:35

Breew
Ese error te indica que no pusiste la ruta donde lo tienes el .ocx
en el .bat
debes indicar de esta forma:
Código:

regsvr32 d:\vet-palao\Progressbar-xp.ocx

Breew 25 de abril de 2016 07:55

Hola.

Ahora si, faltaba la ruta completa


La franja horaria es GMT +2. Ahora son las 14:56.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.