Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Duda] Pantallas RMCobol ge5lo RM/COBOL 13 26 de octubre de 2022 19:52
Captura y restauración de pantallas 3004roberto Presentación 2 7 de mayo de 2020 02:17
[Herramienta] Pasar datos de Cobol (Archivos RMKF) a txt/Excel JuanPelaez COBOL - General 10 3 de enero de 2020 12:58
[Herramienta] Herramienta para pasar datos de RM85- RMKF a texto cfdiaz COBOL - General 6 15 de mayo de 2019 22:32
[Sintaxis] Pasar datos a texto plano Matias PowerCOBOL (ActiveX, v4 - v11) 6 12 de agosto de 2016 19:47

Respuesta
 
Herramientas

  #1
Antiguo 7 de mayo de 2015, 08:23
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8
Predeterminado Pasar datos entre pantallas
0 Inactivo Inactivo

Hola.

Uno de los principales problemas que me encuentro es la presentacion en pantalla.
Normalmente necesito mucha informacion en cada pantalla y me encuentro que es incomoda de manipular, demasiado movimiento en las barras de desplazamiento en Cmtable.

El diseño de Cmtab, me es dificil de organizar dentro de cad tab, ya que no puedo alinear o mover los controles con soltura.

He optado por abrir nuevos forms donde meto cada tabla ampliada y poder trabajar en ellas con mas "espacios" pero no se como cargar los datos de un form a otro sin tener que leer el fichero de nuevo.

¿Como lo organizais vosotros?.
¿Hay alguna funcion para pasar los datos que estan en CmTable1 del form1 a CmTable1 del form2?
o poder ampliar la tabla en tiempo de ejecucion?

Como organizais las pantallas ?

El problema que tengo ahora es que tengo que leer los datos desde una hoja excell y aunque la carga de los datos es mas o menos rapida, a la hora de salvarlos es sumamente lenta, con lo cual deberia salvarlos una unica vez , cuando he acabado de trabajar.

Saludos
Breew is offline   Responder Con Cita
  #2
Antiguo 7 de mayo de 2015, 08:42
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Para pasar los datos de un Form a otro, debes definir los datos es WORKING como EXTERNAL en ambos Forms, por ejemplo en el "Click" del boton del Form1 y en "Opened" del Form2. Asi cuando Form2 se abra, comparte datos de las estructuras EXTERNAL que hayas definido.

Claramente se puede ampliar la tabla en tiempo de ejecucion. SImplemente hay que ir añadiendo lineas a RowCount (creo que se llamaba asi la propiedad).

Para ver todas las propiedades y todos los metodos que tiene cada control, puedes escribir el nombre del control en el editor de codigo (por ejemplo CmCombo1), seleccionar conel raton ese nombre de control y hacer click con el boton derecho. Ahi te sale toda la lista.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 7 de mayo de 2015, 15:40
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola.


Citación del post de Kuk Ver Mensaje
Para pasar los datos de un Form a otro, debes definir los datos es WORKING como EXTERNAL en ambos Forms, por ejemplo en el "Click" del boton del Form1 y en "Opened" del Form2. Asi cuando Form2 se abra, comparte datos de las estructuras EXTERNAL que hayas definido.
Perfecto, en el caso de tener los datos de un form dentro de un CmTable, entiendo que deberia meter los datos en una tabla interna de cobol ( linea por linea ) con el atributo external y entonces en el nuevo form los muevo a otro CmTable o existe alguna manera mas directa ?

Citación del post de Kuk Ver Mensaje
Claramente se puede ampliar la tabla en tiempo de ejecucion. SImplemente hay que ir añadiendo lineas a RowCount (creo que se llamaba asi la propiedad).

Para ver todas las propiedades y todos los metodos que tiene cada control, puedes escribir el nombre del control en el editor de codigo (por ejemplo CmCombo1), seleccionar conel raton ese nombre de control y hacer click con el boton derecho. Ahi te sale toda la lista.
Acabo de descubrir la ayuda que mencionas, lastima que no tenga ejemplos, siempre queda el ensayo y error.

Saludos.
Breew is offline   Responder Con Cita
  #4
Antiguo 7 de mayo de 2015, 16:34
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

No sé si es ésto lo que necesitas, pero si es así, es más fácil de lo que parece Breew:

Defines en cada una de las WORKING, la tabla en tamaño variable y EXTERNAL

Código COBOL:
  1. 01  TABLA1   EXTERNAL GLOBAL.
  2.      03  TAB1  OCCURS 1 TO 2000 DEPENDING ON IND.
  3.           05  T1                       PIC 9(4).
  4.           05  T2                       PIC X(30).
  5. 01  IND                                PIC 9999 COMP-5 EXTERNAL GLOBAL.
  6. 01  IND1                               PIC 9999 COMP-5.

Pasas los datos a la tabla con un bucle, vamos a suponer que el objeto se llama CMTABLE.

Código COBOL:
  1. INICIO.
  2.      MOVE POW-ROWS OF CMTABLE TO IND1.
  3.      PERFORM VARYING IND FROM 1 BY 1
  4.                   UNTIL IND > IND1 OR IND > 2000
  5.                            MOVE "Text" OF "TableCells" (IND 1) OF CMTABLE TO T1 (IND)
  6.                            MOVE "Text" OF "TableCells" (IND 2) OF CMTABLE TO T2 (IND)
  7.       END-PERFORM.

Y en el otro programa cargas la tabla

Código COBOL:
  1. CARGAR.
  2.       PERFORM VARYING IND1 FROM 1 BY 1
  3.                     UNTIL IND1 > IND OR IND1 > 2000
  4.                              MOVE IND1 TO POW-ROWS OF CMTABLE
  5.                              MOVE T1 (IND1) TO "Text" OF "TableCells" (IND1 1) OF CMTABLE
  6.                              MOVE T2 (IND1) TO "Text" OF "TableCells" (IND1 2) OF CMTABLE
  7.       END-PERFORM.

Lo de ponerle 2000, es porque el objeto TABLE en PWC, no puede tener más de 2000 filas y que TABLA1 lleve un DEPENDING, es para hacer la tabla de tamaño dinámico y que ocupe en memoria lo que tenga que ocupar, ni más ni menos, además que de esa manera nunca te quedarás corto, (ni largo), en OCCURS.

Yo lo veo bastante claro, pero si tienes algún problema para entenderlo, pregunta.

Un saludo.-
Josber is offline   Responder Con Cita
  #5
Antiguo 7 de mayo de 2015, 22:23
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola Josber

Exacto, esto es lo que pensaba hacer, pero por si acaso lo he preguntado por si habia alguna opcion Magica tipo Move Cmtable1 of form1 to Cmtable of form2



Saludos
Breew is offline   Responder Con Cita
  #6
Antiguo 11 de mayo de 2015, 23:54
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola.

Estoy haciendo pruebas con el control de la tabla pero no encuentro ningun metodo .

¿Como puedo indicarle a la tabla que quiero que visualize una linea en concreto ?


Saludos
Breew is offline   Responder Con Cita
  #7
Antiguo 12 de mayo de 2015, 07:51
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Por visualizar una linea en concreto, ¿a qué te refieres?

Un saludo.-
Josber is offline   Responder Con Cita
  #8
Antiguo 12 de mayo de 2015, 17:59
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola.

En el form tengo definido una tabla de 1200 elementos, pero visualmente solo establezco 2 lineas, si quiero modificar la linea 50 , no encuentro otro remedio que tirar de raton sobre la barra de desplazamiento.

La intencion es posicionarme automaticamente sobre esa linea.

Saludos
Breew is offline   Responder Con Cita
  #9
Antiguo 12 de mayo de 2015, 18:31
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Creo que lo que quieres hacer es ir a cualquier linea/columna que tú quieras ...

No sé ahora que versión de PWC usas,(podrías indicarnosla), en la versión 7/9 es así:

Código COBOL:
  1.  01  WAUX-TABLA  IS GLOBAL.  *> ----- AUXILIARES PARA LA TABLA
  2.       03  LIN                   PIC S9(4)  COMP-5.
  3.       03  COL               PIC S9(4)  COMP-5.
  4.           .
  5.           .
  6.           .
  7.           .
  8.         INVOKE TABLA "SelectCell" USING LIN COL.

En PWC3, creo que era algo así:

Código COBOL:
  1.          CALL SELECTCELL OF TABLA USING LIN COL.

Recuerda que en las propiedades de la tabla, en la pestaña Columns, tienes que habilitar la opción Writable, para cada columna que quieras que se pueda editar, de lo contrario, te dará un error porque no puede "coger el foco" si está inhabilitado.

Un saludo.-
Josber is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:41.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.