Iniciar Sesión

Ver la Versión Completa : [Componente] Bug de mostrado de líneas en CtList


Ciro
27 de abril de 2016, 14:36
Solicito ayuda con el comando CtList de DBI- TECH.

Al digitar un comprobante de Contabilidad, voy llenando el CtList, para mostrar los registros.
Tengo un problema, cuando se hace click por error en el área vacia del CtList, principalmente cuando no tiene ningún registro o tiene uno solo, se daña la visualización, muestra toda la información recogida en la primera columna. Para que muestre bien, hay que salir de TODA la aplicación.

El único evento que tengo programado en el CtList es el doble click en un registro, para eliminarlo, y esto lo hace bien.

Adjunto las imágenes de cuando muestra bien y mal. Muchas gracias.

Hrmcobol
27 de abril de 2016, 14:43
Hola Amigo, fijate si en los textos no tienes un ";" (caracter punto y coma). Ya que el mismo es separador de campos. O algun otro caracter extraño.
saludos

Ciro
27 de abril de 2016, 15:03
Hola Hrmcobol, gracias, inicialmente pensé en el "punto y coma", pero ya revisé y no lo es. Además hice pruebas con diferentes datos y ocurre lo mismo.

Fito
27 de abril de 2016, 15:55
hola:

Cuando armes el registro para cargar, ponele campos a los punto y coma y volvé a cargarlos siempre, seguramente en algún lado esos punto y coma se están blanqueando.

Ejemplo.


Working ....
01 registro.
02 cuenta pic z(6).
02 separador pic x value ";".
02 nombre pic x(50).

Procedure...

move campo-cuenta to cuenta.
move ";" to separador.
move campos-nombre to nombre.
invoke ctList "AddItem" using registro.


Saludos.

Fito.

Roger
28 de abril de 2016, 06:13
Hola Ciro
Tenia ese mismo problema eso se da cuando tienes un campo alfabetico y esa variable esta en blanco para solucionar pon
01 registro.
02 cuenta pic z(6).
02 separador pic x value ";".
02 nombre pic x(50) value " ".

mueve " " a todos los campo alfabeticos.

Ciro
29 de abril de 2016, 14:41
Fito y Roger gracias por sus respuestas, hice lo que indican, pero sigue visualizando mal.

Este es el código.

01 REGISTRO-ITE GLOBAL.
02 CUENTA-TITE PIC X(12) VALUE " ".
02 FILLER PIC X(01) VALUE ";".
02 NOMCUE-TITE PIC X(30) VALUE " ".
02 FILLER PIC X(01) VALUE ";".
02 NITTER-TITE PIC X(15) VALUE " ".
02 FILLER PIC X(01) VALUE ";".
02 CENCOS-TITE PIC X(08) VALUE " ".
02 FILLER PIC X(01) VALUE ";".
02 TIPREF-TITE PIC X(02) VALUE " ".
02 FILLER PIC X(01) VALUE ";".
02 NROREF-TITE PIC X(08) VALUE " ".
02 FILLER PIC X(01) VALUE ";".
02 DEBITO-TITE PIC ZZ,ZZZ,ZZZ,ZZZ.ZZ.
02 FILLER PIC X(01) VALUE ";".
02 CREDIT-TITE PIC ZZ,ZZZ,ZZZ,ZZZ.ZZ.
02 FILLER PIC X(01) VALUE ";".
02 BASMOV-TITE PIC ZZ,ZZZ,ZZZ,ZZZ.ZZ.
02 FILLER PIC X(01) VALUE ";".
02 DETAL1-TITE PIC X(30) VALUE " ".
02 FILLER PIC X(01) VALUE ";".
02 CONSEC-TITE PIC X(06) VALUE " ".

Kuk
29 de abril de 2016, 15:52
Amigos, nunca he usado este control y no entiendo cual es su funcionamiento. ¿No se rellena campo por campo sino se indica todo el churro de string separando los campos por ";"? :flipa: Si es así, pues vaya castaña... :shok:

Entonces Roger, dices que el problema viene cuando un campo alfa no está inicializado?

Ciro, intenta poner como delimitadores el nulo, porque en Windows es el que indica fin de campo:


02 FILLER PIC X(01) VALUE X"00".


A ver qué tal...

Si por el contrario ese control no se rellena con un sólo churro de datos sino campo por campo, cuando lago esté vacío, aún así haz MOVE SPACES al campo de CtList. En plan:


IF MI-DATO NOT = SPACES
MOVE MI-DATO TO "Text"(Col Row) OF CtList1

ELSE
MOVE SPACES TO "Text"(Col Row) OF CtList1
END-IF


También si no funciona podrías probar con nulos:



IF MI-DATO NOT = SPACES
MOVE MI-DATO TO "Text"(Col Row) OF CtList1

ELSE
MOVE X"00" TO "Text"(Col Row) OF CtList1
END-IF


La sintaxis de CtList no la conozco, es más bien pseudo-código. ;)

Hrmcobol
29 de abril de 2016, 20:06
Hola Ciro, prueba con estas lineas. En el evento ItemCick


ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 POW-NINDEX PIC S9(9) COMP-5.
01 POW-NCOLUMN PIC S9(4) COMP-5.
PROCEDURE DIVISION USING POW-NINDEX POW-NCOLUMN.


IF "CellText"(POW-NINDEX 1) OF CT-REGISTRO-ITe = SPACES EXIT PROGRAM.

Armando
29 de abril de 2016, 20:07
Ciro, también puedes tener un Null x"00".


No deberían tener dentro los campos ni ; ni null.


ejemplo nuestro:

01 LINEA-CT GLOBAL.
02 MARCA-CT PIC XXX.
02 SEPARA1-CT PIC X VALUE ";".
02 CORREL-CT PIC Z(6).
02 SEPARA2-CT PIC X VALUE ";".
02 FILLER PIC X VALUE " ".
02 ETAPA-CT PIC X(7).
02 SEPARA3-CT PIC X VALUE ";".
02 FILLER PIC X VALUE " ".
02 NOMBRE-CT PIC X(50).
02 SEPARA4-CT PIC X VALUE ";".
02 FILLER PIC X VALUE " ".
02 ORIGEN-CT PIC X(20).
02 SEPARA5-CT PIC X VALUE ";".

MOVE ";" TO SEPARA1-CT SEPARA2-CT SEPARA3-CT SEPARA4-CT EPARA5-CT.
INSPECT LINEA-CT REPLACING ALL X"00" BY " ".
INVOKE ctList1 "AddItem" USING LINEA-CT.

cuando tenés ; por ejemplo en el campo NOMBRE-CT, normalmente se corre todo porque identifica que es una nueva columna,

espero te sirva.


ADMIN: Armando, usa el bloque de resalto de sintaxis.

Hrmcobol
29 de abril de 2016, 22:17
Yo también creo que es un problema de datos.

Ciro
29 de abril de 2016, 23:21
Armando, Listo funcionó perfectamente con la sintaxis que me envió. Muy agradecido con todos.

---------- Post añadido : 22:21 ---------- Post anterior : 22:15 ----------

Armando, Funcionó perfectamente con la sintaxis que me sugirió. Agradecimientos a todos.

gracias.