Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   Cocina PowerCOBOL (https://www.cobolforo.es/forumdisplay.php?f=24)
-   -   [PowerCOBOL] Manejo de control CmListView (Grid) (https://www.cobolforo.es/showthread.php?t=31)

Josber 10 de noviembre de 2019 08:21

Cita:

Citación del post de Socavi (Mensaje 5159)
supongamos que pretendo listar desde la posición 153 a la 350 y he de desplazarme scroll para localizarlo

Perdona, igual es que ando algo "espeso", pero no te he entendido muy bien lo que quieres hacer, lo siento.

Un saludo.-

Socavi 10 de noviembre de 2019 11:06

Concretamente se trata de un fichero indexado de los Municipios de España. Si los listo en su totalidad en un ListView, salen sin problema, ahora bien si deseo limitar el listado a una provincia concreta, tambien sale pero en su lugar, es decir si anteriormente hay X provincias que en ése momento no interesa listar, pues en el listado se suceden los espacios en blasnco, hasta llegar a la provincia que se desea.

Espero haberme expresado mejor, gracias por tu atención.

Josber 16 de noviembre de 2019 18:56

Socavi,

Perdona la tardanza en contestar pero, por desgracia, otros "problemas" me tienen copado todo el tiempo que tengo.

A ver lo primero que entiendo es que te salen más lineas de las que necesitas, y que éstas, se quedan en blanco. ¿Inicializas el control ListView antes de empezar a llenarlo?, (lo que correspondería a la instrucción INITIALIZE en COBOL), por ejemplo:

Código COBOL:
  1. INVOKE View2 "Clear".

Luego parece que si tienes, por ejemplo, 300 líneas en el ListView, quieres "posicionarte" en la 250. Si es así, yo no he conseguido hacerlo, no sé si Kuk o algún otro forero lo ha conseguido, pero yo no desde luego.

Si no es ese tu problema, dínoslo, porfa.

Un saludo.-

Socavi 16 de noviembre de 2019 19:06

Buenas tardes Josber, así llamo al listado
Código COBOL:
  1.      move 0 to TOTMUNIPOB TOTMUNISUP
  2.      close munici.
  3.      open input MUNICI.
  4.      INITIALIZE REGMUNI.
  5.      invoke Lista 'Clear'
  6.      move ' ' to finfic move 0 to cuantos
  7.      perform until finfic = 's'
  8.         read MUNICI next record at end move 's' to finfic
  9.            not at end
  10.            INVOKE Lista 'Add' USING 1 1 RETURNING RETORNO
  11.            MOVE 'ListItems'(RETORNO) OF Lista TO LINEA
  12.            IF MUNIPRO = V-COD
  13.               MOVE MUNICOD TO 'Text'(1) OF LINEA
  14.               MOVE MUNICP  TO 'Text'(2) OF LINEA
  15.               move MUNINOM to 'Text'(3) of linea
  16.               move MUNIGEN TO 'Text'(4) of linea
  17.               move MUNIPOB to 'Text'(5) of linea
  18.               move MUNISUP to 'Text'(6) of linea
  19.               perform calcul thru fi-calcul
  20.               move MUNIKM  TO 'Text'(8) of linea
  21.               add 1 to cuantos
  22.             END-IF
  23.         end-read
  24.      end-perform.
  25.  
  26.      close MUNICI.
Como dije anteriormente, el fichero indexado es de casi 10.000 regístros, bien si el que pretendo listar empieza en la linea 300, me deja 300 lineas en blanco, hasta que llega el primero de los que pido y entonces los lísta todos. No sé si queda claro lo que me sucede.

Gracias y perdona "la paliza"

Kuk 17 de noviembre de 2019 11:00

Cita:

Citación del post de Josber (Mensaje 5163)
si tienes, por ejemplo, 300 líneas en el ListView, quieres "posicionarte" en la 250

Código COBOL:
  1.     MOVE 250 TO "SelItemIndex" OF CmListView1      
  2.     INVOKE "SelItem" OF CmListView1 "EnsureVisible"    

;)

Socavi 17 de noviembre de 2019 17:38

Agradecido Kuk, es una solución, pero esto me obligaria a averiguar el código en el que empieza cada una de las 52 provincias y tambien los respectivos codigos de las últimas de cada provincia, a primera vísta es un poco complicado aunque si no hay otro remedio, pues que le vamos hacer.

Mi ilusión sería la de solicitar el listado por el número de la provincia, por ejemplo 08 Barcelona y que empezara a listar en el primer Municipio de la província 08 y que cuando se superara el 08, pues dejara de listar, pero no hace falta que deje los espacios en blanco correspondientes a las Provincias anteriores, porque en el caso de solicitar los Municipios de la província 50, pues ya te lo puedes imaginar, un desastre.

Muchas gracias por dedicarme vuestra atención.:hi:

Kuk 17 de noviembre de 2019 21:52

Socavi, lo que tienes es un problema de algoritmo. Es decir, haces

Código COBOL:
  1.            INVOKE Lista 'Add' USING 1 1 RETURNING RETORNO
  2.            MOVE 'ListItems'(RETORNO) OF Lista TO LINEA

fuera del IF, así que por cada registro se crea un nuevo ListItem.

Hazlo así:

Código COBOL:
  1.          move 0 to TOTMUNIPOB TOTMUNISUP
  2.          close munici.
  3.          open input MUNICI.
  4.          INITIALIZE REGMUNI.
  5.          invoke Lista 'Clear'
  6.          move ' ' to finfic move 0 to cuantos
  7.          perform until finfic = 's'
  8.             read MUNICI next record at end move 's' to finfic
  9.                not at end
  10.                IF MUNIPRO = V-COD
  11.                   INVOKE Lista 'Add' USING 1 1 RETURNING RETORNO *> modivo
  12.                   MOVE 'ListItems'(RETORNO) OF Lista TO LINEA *> dentro del IF
  13.                   MOVE MUNICOD TO 'Text'(1) OF LINEA
  14.                   MOVE MUNICP  TO 'Text'(2) OF LINEA
  15.                   move MUNINOM to 'Text'(3) of linea
  16.                   move MUNIGEN TO 'Text'(4) of linea
  17.                   move MUNIPOB to 'Text'(5) of linea
  18.                   move MUNISUP to 'Text'(6) of linea
  19.                   perform calcul thru fi-calcul
  20.                   move MUNIKM  TO 'Text'(8) of linea
  21.                   add 1 to cuantos
  22.                 END-IF
  23.             end-read
  24.          end-perform.
  25.      
  26.          close MUNICI.

Socavi 18 de noviembre de 2019 09:16

Es verdad !!!, perfecto, no lo hubiera vísto, problema resuelto. Muchas gracias Kuk.


La franja horaria es GMT +2. Ahora son las 02:43.

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