Iniciar Sesión

Ver la Versión Completa : [PowerCOBOL] Manejo de control CmListView (Grid)


Josber
12 de febrero de 2015, 09:49
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/previo/thump_9277365grid.jpg (http://www.subirimagenes.com/otros-grid-9277365.html)

Descarga
Descargar Ejemplo de ListView (https://www.cobolforo.es/descargas/Listview.rar)

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

Josber
2 de marzo de 2015, 11:45
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:


https://mega.co.nz/#!b4E1iarb!Qa3iFtvHhctQgVqZQa87sR6MJH4a6gX0E2IwNwK 6nVc


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
Josber, excelente aporte. Por favor me puede decir, como define el checkbox dentro del CmListView?
gracias.


*>
*> Variables para poner el checkbox en el ListView
*>
01 WS-HANDLE PIC S9(09) COMP-5 VALUE 0.
01 LVM-SETEXTENDEDLISTVIEWSTYLE PIC S9(09) COMP-5 VALUE 4150.
01 LVS-EX-CHECKBOXES PIC S9(09) COMP-5 VALUE 05.
*>
*> Variables para Drag'n'Drop de columnas
*>
01 WS-DRAG PIC S9(09) COMP-5.
01 LVS-EX-HEADERDRAGDROP PIC S9(09) COMP-5 VALUE 16.
*>
*> Variables para colorear linea entera
*>
01 WS-LINHA-INTEIRA PIC S9(09) COMP-5.
01 LVS-EX-FULLROWSELECT PIC S9(09) COMP-5 VALUE 32.


Y en la PROCEDURE ...


*
*
* Poner el "checkbox" en el ListView
*
MOVE "hWnd" OF VIEW2 TO WS-HANDLE.
CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
BY VALUE LVS-EX-CHECKBOXES
BY VALUE LVS-EX-CHECKBOXES
CANCEL "SendMessageA".
*
CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
BY VALUE 4150
BY VALUE 64
BY VALUE 64 *> COLUMNA 1, TIPO HiperLink
CANCEL "SendMessageA".
*
MOVE 32 TO WS-LINHA-INTEIRA. *> SELECCIONAR LA LÍNEA ENTERA
CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
BY VALUE LVS-EX-FULLROWSELECT
BY VALUE WS-LINHA-INTEIRA
CANCEL "SendMessageA".
*
MOVE 16 TO WS-DRAG. *> ARRASTRAR Y CAMBIAR UNA COLUMNA DE SITIO
CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
BY VALUE LVS-EX-HEADERDRAGDROP
BY VALUE WS-DRAG
CANCEL "SendMessageA".
*
IF POW-CHECK OF CHECK2 = POW-ON
CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
BY VALUE 1
BY VALUE 1 *> GRIDLINES - 1 = Si - 0 = No
CANCEL "SendMessageA"
ELSE
CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
BY VALUE 1
BY VALUE 0 *> GRIDLINES - 1 = Si - 0 = No
CANCEL "SendMessageA"
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
hugoluis, cuál es el post en el que hay un enlace sin funcionar? Pon el enlace hacía dicho post ;)

Descarga
MEGA (https://mega.co.nz/#!ah8l2DrL!9E8EyW...4XiamgPuqBU9Us)

Josber
6 de agosto de 2018, 13:03
Descarga
MEGA (https://mega.co.nz/#!ah8l2DrL!9E8EyW...4XiamgPuqBU9Us)


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

Un saludo.-

hugoluis
6 de agosto de 2018, 18:58
¡¡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 (https://mega.co.nz/#!ah8l2DrL!9E8EyW...4XiamgPuqBU9Us)

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 (https://www.cobolforo.es/) y busca (Ctrl+F) la palabra cocina ;)

hugoluis
8 de agosto de 2018, 03:42
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
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
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:


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

move 0 to TOTMUNIPOB TOTMUNISUP
close munici.
open input MUNICI.
INITIALIZE REGMUNI.
invoke Lista 'Clear'
move ' ' to finfic move 0 to cuantos
perform until finfic = 's'
read MUNICI next record at end move 's' to finfic
not at end
INVOKE Lista 'Add' USING 1 1 RETURNING RETORNO
MOVE 'ListItems'(RETORNO) OF Lista TO LINEA
IF MUNIPRO = V-COD
MOVE MUNICOD TO 'Text'(1) OF LINEA
MOVE MUNICP TO 'Text'(2) OF LINEA
move MUNINOM to 'Text'(3) of linea
move MUNIGEN TO 'Text'(4) of linea
move MUNIPOB to 'Text'(5) of linea
move MUNISUP to 'Text'(6) of linea
perform calcul thru fi-calcul
move MUNIKM TO 'Text'(8) of linea
add 1 to cuantos
END-IF
end-read
end-perform.

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
si tienes, por ejemplo, 300 líneas en el ListView, quieres "posicionarte" en la 250


MOVE 250 TO "SelItemIndex" OF CmListView1
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


INVOKE Lista 'Add' USING 1 1 RETURNING RETORNO
MOVE 'ListItems'(RETORNO) OF Lista TO LINEA


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

Hazlo así:


move 0 to TOTMUNIPOB TOTMUNISUP
close munici.
open input MUNICI.
INITIALIZE REGMUNI.
invoke Lista 'Clear'
move ' ' to finfic move 0 to cuantos
perform until finfic = 's'
read MUNICI next record at end move 's' to finfic
not at end
IF MUNIPRO = V-COD
INVOKE Lista 'Add' USING 1 1 RETURNING RETORNO *> modivo
MOVE 'ListItems'(RETORNO) OF Lista TO LINEA *> dentro del IF
MOVE MUNICOD TO 'Text'(1) OF LINEA
MOVE MUNICP TO 'Text'(2) OF LINEA
move MUNINOM to 'Text'(3) of linea
move MUNIGEN TO 'Text'(4) of linea
move MUNIPOB to 'Text'(5) of linea
move MUNISUP to 'Text'(6) of linea
perform calcul thru fi-calcul
move MUNIKM TO 'Text'(8) of linea
add 1 to cuantos
END-IF
end-read
end-perform.

close MUNICI.

Socavi
18 de noviembre de 2019, 09:16
Es verdad !!!, perfecto, no lo hubiera vísto, problema resuelto. Muchas gracias Kuk.