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();