Trabajar con DataCells y Attributes

Esta macro explica cómo usar DataCells y AttributeSet para inspeccionar una fila/columna en la pantalla para texto y atributos. En este ejemplo puede ver:

  • Cómo obtener una colección de DataCells para una posición y longitud dadas.

  • Cómo iterar por DataCells para formar una cadena de texto

  • Para comparar, cómo puede hacer algo similar utilizando getText().

  • Y finalmente, cómo trabajar con atributos, obtener un listado de cadenas o determinar si cadenas específicas están colocadas en una posición dada de la pantalla.

var macro = createMacro(function*() {
    'use strict';
    
    // Obtener PresentationSpace para interactuar con el host
    var ps = session.getPresentationSpace();
    
    // Declarar variables para uso posterior
    var cells;
    var text;
    var attrs;
    
    // Establecer el tiempo de espera predeterminado para las funciones "wait"
    wait.setDefaultTimeout(10000);
    
    // Macro de ejemplo para trabajar con DataCells y Attributes
    try {
      yield wait.forCursor(new Position(24, 2));

      // Obtener DataCells del espacio de presentación.
      // Fila 19, col 3 es la pregunta, 35 caracteres de longitud
      // "Seleccionar de los siguientes comandos:"
      cells = ps.getDataCells({row:19, col:3}, 35);
      text = '';
      
      // Puede visualizar texto utilizando getText
      yield ui.message("Screen text: " + ps.getText({row:19, col:3}, 35));
      
      // O puede ensamblar el texto de las DataCells en cada posición
      for(var index = 0; index < cells.length; index++) {
        text = text.concat(cells[index].getChar());
      }
      // Y visualizar el texto
      yield ui.message("Cells text: " + text);
      
      // Obtener los atributos de la primera DataCell (cell[0])
      attrs = cells[0].getAttributes();
      
      // Muestra si hay o no atributos en la celda de datos
      yield ui.message("Conjunto de atributos vacío: " + attrs.isEmpty());
      
      // Muestra cuántos atributos están configurados
      yield ui.message("Número de atributos: " + attrs.size());
      
      // Muestra qué atributos están configurados
      yield ui.message("Atributos: " + attrs.toString());
      
      // Mostrar ahora si el atributo de alta intensidad está configurado
      yield ui.message("Es de alta intensidad: "
                + attrs.contains(Attribute.HIGH_INTENSITY));
      
      // Mostrar ahora si el atributo subrayado está configurado
      yield ui.message("Es subrayado: "
                + attrs.contains(Attribute.UNDERLINE));
      
      // Mostrar ahora si los atributos alfanumérico, intensificado y detectable por lápiz están configurados
      yield ui.message("Es alfanumérico, intensificado y detectable por lápiz: "
                + attrs.containsAll([Attribute.ALPHA_NUMERIC, Attribute.HIGH_INTENSITY, Attribute.PEN_DETECTABLE]));
      
      // Mostrar ahora si los atributos alfanumérico, intensificado y detectable por lápiz están configurados
      yield ui.message("Es alfanumérico, intensificado y detectable por lápiz: "
                + attrs.containsAll([Attribute.UNDERLINE, Attribute.HIGH_INTENSITY, Attribute.PEN_DETECTABLE]));
    } catch (error) {
      yield ui.message(error);
    }
    //Fin Macro Generada
});

// Ejecutar la macro
return macro();