Iniciar Sesión

Ver la Versión Completa : [Duda] Colorear una línea del ListView


Xavier
31 de octubre de 2017, 11:59
Hola Foro
Estoy intentando colorear, en un ListView, las líneas en función de un valor. He cogido un ejemplo de Visual Basic y lo he intentado "traducir" a PowerCobol, pero me da error.

Este es el código en VB:
ListView1.ListItems(Linea).ForeColor = Color
Este es el código que intento implementar en PowerCobol:
MOVE POW-COLOR-RED TO "ForeColor" OF "ListItems"(Linea) OF CmListView1
y este es el error que me da:

Create C:\PowerCobol\ListView\Prueba\Debug\MainForm.cob.. .
MainForm MainForm-Opened(60) : F5DC410302I-E Property or method definition for POW-0010 is not found.

Si alguien sabe como hacerlo agradecería que lo publicase.
Un saludo a todos

Kuk
31 de octubre de 2017, 16:58
Xavier, el control ListView que viene en el pack de PowerCOBOL no es estándar ni es el de VB. Así que, toca hacer bricolaje: [Aporte] ListView con Colores - COBOL Foro (https://www.cobolforo.es/showthread.php?t=265)

jemet80
30 de septiembre de 2018, 23:25
De casualidad pudiste solucionar lo de las lineas en color????

Kuk
1 de octubre de 2018, 08:06
jemet80, échale un vistazo al enlace de mi post anterior.

Josber
1 de octubre de 2018, 13:14
jemet80, échale un vistazo al enlace de mi post anterior.

Revisa el enlace Kuk, que no lleva a ningún sitio, al menos a mi.

Un saludo.-

Kuk
1 de octubre de 2018, 15:38
Josber, correcto! Lo acabo de corregir.

Es que los enlaces antiguos en http: no funecionan desde que nos hemos pasado a https:...

Tengo que hacer un REPLACE en la base pero nunca tengo tiempo...

Joseg
29 de noviembre de 2019, 11:47
Xavier, el control ListView que viene en el pack de PowerCOBOL no es estándar ni es el de VB. Así que, toca hacer bricolaje: [Aporte] ListView con Colores - COBOL Foro (https://cobolforo.es/showthread.php?t=265)

Ola!

Tentei fazer isto:


PERFORM 100 TIMES
INVOKE CmListView1 "Add" USING 1 1 RETURNING WK-INDEX
MOVE "COLUMNA1" TO "Text"(1) OF "ListItems"(WK-INDEX) OF CmListView1
MOVE "COLUMNA2" TO "Text"(2) OF "ListItems"(WK-INDEX) OF CmListView1
MOVE "COLUMNA3" TO "Text"(3) OF "ListItems"(WK-INDEX) OF CmListView1
MOVE "COLUMNA4" TO "Text"(4) OF "ListItems"(WK-INDEX) OF CmListView1
MOVE "COLUMNA5" TO "Text"(5) OF "ListItems"(WK-INDEX) OF CmListView1

DIVIDE WK-INDEX BY 2 GIVING RESULT REMAINDER REST
IF REST = ZEROS
CALL "SendMessageA" WITH STDCALL USING BY VALUE LV-HWND
BY VALUE LVST
BY VALUE 0
BY VALUE 16711680
END-CALL
ELSE
CALL "SendMessageA" WITH STDCALL USING BY VALUE LV-HWND
BY VALUE LVST
BY VALUE 0
BY VALUE 255
END-CALL
END-IF
CANCEL "SendMessageA"

END-PERFORM.



Para por uma linha de cada cor, mas não consegui :(
Existe alguma alternativa (usando obrigatoriamente o CmListView do Power).

Gracias

Kuk
1 de diciembre de 2019, 19:47
Joseg, échale un ojo esto: [Aporte] OCX para alterar ListView - COBOL Foro (https://www.cobolforo.es/showthread.php?t=266)

Joseg
1 de diciembre de 2019, 20:35
Joseg, échale un ojo esto: [Aporte] OCX para alterar ListView - COBOL Foro (https://www.cobolforo.es/showthread.php?t=266)

Sim, já conhecia, mas eu queria usar apenas a Listview do PowerCobol para não ter que instalar o runtime do VB6 (e fazer o registo de um OCX adicional).

Gracias,

Kuk
1 de diciembre de 2019, 22:32
Joseg, no se puede hacer tal cual. Habrá que pelear con WinAPI y Custom Draw por cara ListItem. Nunca lo he hecho, en aquel entonces me parecía demasiado complicado.

Imposible no es, pero costará bastante trabajo. Aquí tienes información sobre ello: ListView Alternating Row Colours (Using Windows API) - CodeProject (https://www.codeproject.com/Articles/20796/ListView-Alternating-Row-Colours-Using-Windows-API)

Otra posibilidad sería crear una DLL en C o C++ (mirando el ejemplo) y llamar esa DLL via LoadLibrary o definiendo las funciones en el fichero COBOL85.CBR.

Josber
2 de diciembre de 2019, 12:35
Yo lo di por imposible, costaba muchísimo, al final me he decantado por la que recomendó el forero Nino en éste post (https://www.cobolforo.es/showthread.php?t=1026&highlight=farpoint), y de momento, sin problemas.

Un saludo.-