Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Ordenar CmListView (https://www.cobolforo.es/showthread.php?t=570)

Breew 19 de febrero de 2017 18:59

Ordenar CmListView
 
Hola.

No doy con el sistema para poder ordenar un CmListView por columnas en tiempo de ejecucion.
Quisiera posicionarme en cualquier columna y al clikar se ordene entero, pero solo consigo que
se ordene por la columna sort que le he definido en las propiedades.

¿ Se puede ?

Gracias

Kuk 19 de febrero de 2017 20:14

Breew, en el evento "ColumnClick" debes hacer lo siguiente:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  LINKAGE         SECTION.
  5.  01  POW-COLUMNINDEX PIC S9(9) COMP-5.
  6.  PROCEDURE       DIVISION USING POW-COLUMNINDEX.
  7.  
  8.      MOVE POW-COLUMNINDEX TO "SortColumn" OF CmListView1.

Rapinto 20 de febrero de 2017 00:24

Breew,

em run-time, deves fazer em seguida o SortOrder para reordenar
( A seguir ao SortColumn indicado pelo KUK)

Fujitsu Cobol User's Manual:

Código:

0 – None  (POW-SORTORDER-NONE)
1 – Ascending  (POW-SORTORDER-ASC)
2 – Descending  (POW-SORTORDER-DESC)

The objects are resorted as soon as the value is changed.

Por Exemplo:
Código COBOL:
  1. move 1 to "SortOrder" of CmListView.

Saludos,
Rui

Breew 22 de febrero de 2017 15:44

Hola.

Nada, no hay manera. Siempre reordena la columna 3 marque la columna que sea .

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  LINKAGE         SECTION.
  5.  01  POW-ARG-COLUMNINDEX PIC S9(9) COMP-5.
  6.  PROCEDURE       DIVISION USING POW-ARG-COLUMNINDEX.
  7.      MOVE 1 to "SortOrder" OF CMLISTVIEW1.
  8.      MOVE POW-ARG-COLUMNINDEX  TO "SortColumn" OF CMLISTVIEW1.
  9.      INVOKE CMLISTVIEW1 "Refresh".
  10.      DISPLAY POW-ARG-COLUMNINDEX

Rapinto 23 de febrero de 2017 00:03

Breew,

Troca as instruções:
Código COBOL:
  1.  
  2.  MOVE POW-ARG-COLUMNINDEX  TO "SortColumn" OF CMLISTVIEW1.
  3.  MOVE 1 to "SortOrder" OF CMLISTVIEW1.
Saludos,
Rui

Lascu 20 de marzo de 2017 13:24

Hola,
Además de si el orden es ascendente o descendente, tambien tenes que indicarle si la columna por la que vas a ordenar el listview es númerica (POW-SORTKIND-NUMERIC) o de texto (POW-SORTKIND-TEXT) en el atributo "SortKind".
Con esto debería funcionar sin problemas. Acordate que las fechas en powercobol son texto.
Saludos

Lascu

Código COBOL:
  1. MOVE POW-SORTORDER-ASC TO"SortOrder" OF LISTVIEW.
  2. IF POW-ARG-COLUMNINDEX = 1 OR 2 OR 5 OR 6 OR 9 THEN
  3.                                                    MOVE POW-SORTKIND-TEXT TO "SortKind" OF LISTVIEW
  4.    ELSE
  5.         MOVE POW-SORTKIND-NUMERIC TO "SortKind" OF LISTVIEW
  6. END-IF.
  7. MOVE POW-ARG-COLUMNINDEX TO "SortColumn" OF LISTVIEW.

En mi ejemplo las columnas 1, 2, 5, 6, y 9 son de texto, el resto numéricas.


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

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