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 12 de febrero de 2015 09:49

Manejo de control CmListView (Grid)
 
Me gustaría empezar una nueva sección y, si éste foro continua y se hace grande, hacerla como un nuevo subforo más adelante. La sección sería nuestras aportaciones, trucos, rutinas, ejemplos, etc.

Para empezar aporto ésta mía en la que pongo un ejemplo del manejo del control de PWC listview, que aunque es un control "muy flojo", se pueden hacer más cosas de lo que parece, como mover columnas de sitio, poner una rejilla, marcar una linea entera, checkbox ...

Como norma, me gustaría, que se pusiera que incluye y la versión del compilador, así como alguna imágen, (si es posible)

Incluye: ppj, exe y librerías e iconos completas
Versión compilador: PWC 9, aunque en la versión 7 también funciona

http://s2.subirimagenes.com/otros/pr...277365grid.jpg

Descarga
Descargar Ejemplo de ListView

Un saludo a todos y espero más ideas, trucos, ejemplos, etc. ;)

Josber 2 de marzo de 2015 11:45

1 Archivos Adjunto(s)
Pues después del post que puso Rui sobre el traspaso a Excel de un ListView, y siguiendo su consejo, he añadido el código al programa, para que podais ver la facilidad con la que se puede pasar un ListView a Excel através de COM.

Además, he añadido un .ocx llamado AniGIF.ocx, que permite añadir un GIF animado a un Form, en el botón "Acerca de ..." podeis verlo, recordar que hay que registrar el ocx en Windows.

Podeis descargarlo todo desde el siguiente enlace:

Código:

https://mega.co.nz/#!b4E1iarb!Qa3iFtvHhctQgVqZQa87sR6MJH4a6gX0E2IwNwK6nVc
Un saludo.-

Juanes 5 de julio de 2016 05:12

Josber, excelente aporte. Por favor me puede decir, como define el checkbox dentro del CmListView?
gracias.

Josber 5 de julio de 2016 08:02

Cita:

Citación del post de Juanes (Mensaje 2131)
Josber, excelente aporte. Por favor me puede decir, como define el checkbox dentro del CmListView?
gracias.

Código COBOL:
  1.     *>
  2.     *> Variables para poner el checkbox en el ListView
  3.     *>
  4.  01  WS-HANDLE              PIC S9(09)  COMP-5 VALUE 0.
  5.  01  LVM-SETEXTENDEDLISTVIEWSTYLE PIC S9(09)    COMP-5 VALUE 4150.
  6.  01  LVS-EX-CHECKBOXES            PIC S9(09)    COMP-5 VALUE 05.
  7.     *>
  8.     *> Variables para Drag'n'Drop de columnas
  9.     *>
  10.  01  WS-DRAG                      PIC S9(09) COMP-5.
  11.  01  LVS-EX-HEADERDRAGDROP        PIC S9(09) COMP-5 VALUE 16.
  12.     *>
  13.     *> Variables para colorear linea entera
  14.     *>
  15.  01  WS-LINHA-INTEIRA             PIC S9(09) COMP-5.
  16.  01  LVS-EX-FULLROWSELECT         PIC S9(09) COMP-5 VALUE 32.

Y en la PROCEDURE ...

Código COBOL:
  1. *
  2. *
  3. * Poner el "checkbox" en el ListView
  4. *
  5.      MOVE "hWnd" OF VIEW2 TO WS-HANDLE.
  6.      CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  7.                                             BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
  8.                                             BY VALUE LVS-EX-CHECKBOXES
  9.                                             BY VALUE LVS-EX-CHECKBOXES
  10.      CANCEL "SendMessageA".
  11. *    
  12.      CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  13.                           BY VALUE 4150
  14.                           BY VALUE 64
  15.                           BY VALUE 64 *> COLUMNA 1, TIPO HiperLink
  16.      CANCEL "SendMessageA".
  17. *    
  18.      MOVE 32 TO WS-LINHA-INTEIRA.   *> SELECCIONAR LA LÍNEA ENTERA
  19.      CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  20.                                             BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
  21.                                             BY VALUE LVS-EX-FULLROWSELECT
  22.                                             BY VALUE WS-LINHA-INTEIRA
  23.      CANCEL "SendMessageA".
  24. *                                          
  25.      MOVE 16 TO WS-DRAG.    *> ARRASTRAR Y CAMBIAR UNA COLUMNA DE SITIO
  26.      CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  27.                                             BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
  28.                                             BY VALUE LVS-EX-HEADERDRAGDROP
  29.                                             BY VALUE WS-DRAG
  30.      CANCEL "SendMessageA".
  31. *
  32.      IF POW-CHECK OF CHECK2 = POW-ON
  33.         CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  34.                              BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
  35.                              BY VALUE 1
  36.                              BY VALUE 1 *> GRIDLINES - 1 = Si - 0 = No
  37.         CANCEL "SendMessageA"
  38.      ELSE
  39.         CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  40.                              BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
  41.                              BY VALUE 1
  42.                              BY VALUE 0 *> GRIDLINES - 1 = Si - 0 = No
  43.         CANCEL "SendMessageA"
  44.      END-IF.

Un saludo.-

hugoluis 5 de agosto de 2018 03:51

Hola Buenas
Puede ser que no este disponible
el archivo de Tabla Manejo de control CmListView (Grid)
Gracias

Kuk 5 de agosto de 2018 10:49

hugoluis, ¿estás preguntando si PowerCOBOL puede venir sin el control CmListView? Si es eso, la respuesta es NO. Todas las versiones ActiveX de PowerCOBOL, que yo sepa, traen el ListView.

hugoluis 5 de agosto de 2018 13:55

Hola Buen día Kuk
Hay un ejemplo de Josber viejo (12/2/2015) que ya no esta disponible en el link que se publica
Quería saber si esta disponible en otro lugar
Gracias

Kuk 5 de agosto de 2018 21:08

hugoluis, cuál es el post en el que hay un enlace sin funcionar? Pon el enlace hacía dicho post ;)

hugoluis 6 de agosto de 2018 00:04

Cita:

Citación del post de Kuk (Mensaje 4421)
hugoluis, cuál es el post en el que hay un enlace sin funcionar? Pon el enlace hacía dicho post ;)

Descarga
MEGA

Josber 6 de agosto de 2018 13:03

Cita:

Citación del post de hugoluis (Mensaje 4422)
Descarga
MEGA


¡¡Uff!! a ver si encuentro el proyecto y lo vuelvo a subir.

Un saludo.-

hugoluis 6 de agosto de 2018 18:58

Cita:

Citación del post de Josber (Mensaje 4423)
¡¡Uff!! a ver si encuentro el proyecto y lo vuelvo a subir.

Un saludo.-

muchas gracias

Kuk 6 de agosto de 2018 20:38

hugoluis, pásame el post en sí, el copiado de enlace no vale porque el motor del foro lo acorta. Posiblemente el enlace siga vivo.

hugoluis 7 de agosto de 2018 00:35

Tabla Manejo de control CmListView (Grid)
Me gustaría empezar una nueva sección y, si éste foro continua y se hace grande, hacerla como un nuevo subforo más adelante. La sección sería nuestras aportaciones, trucos, rutinas, ejemplos, etc.

Para empezar aporto ésta mía en la que pongo un ejemplo del manejo del control de PWC listview, que aunque es un control "muy flojo", se pueden hacer más cosas de lo que parece, como mover columnas de sitio, poner una rejilla, marcar una linea entera, checkbox ...

Como norma, me gustaría, que se pusiera que incluye y la versión del compilador, así como alguna imágen, (si es posible)

Incluye: ppj, exe y librerías e iconos completas
Versión compilador: PWC 9, aunque en la versión 7 también funciona



Descarga
MEGA

Un saludo a todos y espero más ideas, trucos, ejemplos, etc.

Josber 7 de agosto de 2018 13:12

hugoluis, Lo he vuelto a subir, espero que sea ese, porque hice varias modificaciones al ejemplo y no sé si es esa la versión definitiva, ya que desde entonces, he tenido que cambiar el disco duro y he perdido algunas cosas.

Un saludo.-

Kuk 7 de agosto de 2018 22:35

hugoluis, dicho apartado ya existe en el foro.

Ve a la página principal COBOL Foro y busca (Ctrl+F) la palabra cocina ;)

hugoluis 8 de agosto de 2018 03:42

Cita:

Citación del post de Kuk (Mensaje 4425)
hugoluis, pásame el post en sí, el copiado de enlace no vale porque el motor del foro lo acorta. Posiblemente el enlace siga vivo.

muchas gracias

Socavi 15 de septiembre de 2019 09:55

Me gustaría saber si el fantástico ejemplo de Josber (Tabla Manejo de control CmListView (Grid)) se encuentra en algun sitio, pero al revés, quiero decir tomar los datos de la hoja excel y pasarlo s CmListView, me parece que también sería de gran utilidad. Muchas gracias.

Josber 24 de septiembre de 2019 17:04

2 Archivos Adjunto(s)
Cita:

Citación del post de Socavi (Mensaje 5126)
tomar los datos de la hoja excel y pasarlo s CmListView

Perdona el que no haya contestado antes, pero sigo con ciertos "problemillas" aún, que no me dejan el tiempo que quisiera.

Te he hecho un ejemplo que traspasa de una hoja de cálculo a un CmListView, está hecho en PWC9, pero debe de funcionar sin problemas en cualquier versión, en el archivo rar, va el proyecto, icono, ejecutable, hoja de cálculo, etc.

Si tienes algún problema dilo e intentaremos ayudarte lo mejor posible.

Un salu2.-

Socavi 1 de noviembre de 2019 18:58

Muchas gracias Josber, es exactamente lo que me va a ser de gran utilidad, estoy intentando confeccionar un programa, en el que se reflejen las Autonomías, Províncias, Municipios (para aquí, es donde necesitaré importar los datos desde hojas Excel), con expresión de población, área, etc etc.

Has sido muy amable, gracias, confiemos en que vayas encontrándote mejor y te recuperes totalmente, te necesitamos.

Cordial saludo

Socavi 8 de noviembre de 2019 13:37

Tengo un problema nuevo (para mi), al pretender hacer un listado de parte de un fichero indexado de 10.000 referencias, tengo que estar haciendo algo mal, porque el listado sale, pero detras de espacios en blanco, es decir supongamos que pretendo listar desde la posición 153 a la 350 y he de desplazarme scroll para localizarlo, podríais señalarme que tengo que hacer ?, gracias.

Utilizo PowerCobol v.9, en un sistema operativo Windows-10 64.

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:41.

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