Arbeiten mit Datenzellen und Attributen

Dieses Makro veranschaulicht, wie Sie Datenzellen und Attributsätze zum Überprüfen einer bestimmten Zeile/Spalte auf dem Bildschirm für Text und Attribute verwenden können. In diesem Beispiel sehen Sie Folgendes:

  • Wie Sie eine Sammlung von DataCells-Objekten für eine bestimmte Position und Länge abrufen.

  • Wie Sie DataCells-Objekte zum Erstellen einer Textzeichenfolge durchlaufen.

  • Wie Sie zum Vergleich in ähnlicher Weise auch getText() verwenden können.

  • Wie Sie mit Attributen arbeiten, eine Auflistung mit Zeichenfolgen abrufen oder feststellen, ob bestimmte Attribute an einer festgelegten Bildschirmposition angegeben sind.

var macro = createMacro(function*() {
	'use strict';
	
	// Präsentationsbereich für die Interaktion mit dem Host abrufen
	var ps = session.getPresentationSpace();
	
	// Variablen für eine spätere Verwendung deklarieren
	var cells;
	var text;
	var attrs;
	
	// Standardwartezeit für "wait"-Funktionen festlegen
	wait.setDefaultTimeout(10000);
	
	// Beispielmakro für das Arbeiten mit Datenzellen und Attributen
	try {
		yield wait.forCursor(new Position(24, 2));
		
		// Datenzellen aus dem Präsentationsbereich abrufen
		// Zeile 19, Spalte 3 ist die Eingabeaufforderung 35 Zeichen lang
		// "Wählen Sie einen der folgenden Befehle:"
		cells = ps.getDataCells({row:19, col:3}, 35);
		text = '';
		
		// Sie können Text mithilfe von 'getText' anzeigen
		yield ui.message("Screen text: " + ps.getText({row:19, col:3}, 35));
		
		// Oder den Text aus den Datenzellen an den einzelnen Positionen bilden
		for(var index = 0; index < cells.length; index++) {
			text = text.concat(cells[index].getChar());
		}
		// Und den Text anzeigen
		yield ui.message("Cells text: " + text);
		
		// Attribute für die erste Datenzelle abrufen (cell[0])
		attrs = cells[0].getAttributes();
		
		// Anzeigen, ob Attribute für die Datenzelle vorhanden sind
		yield ui.message("Attribute set is empty: " + attrs.isEmpty());
		
		// Anzeigen, wie viele Attribute angegeben sind
		yield ui.message("Number of attributes: " + attrs.size());
		
		// Anzeigen, welche Attribute angegeben sind
		yield ui.message("Attributes: " + attrs.toString());
		
		// Anzeigen, ob das das Attribut 'HIGH_INTENSITY' angegeben ist
		yield ui.message("Is high intensity: " +
						attrs.contains(Attribute.HIGH_INTENSITY));
						
		// Anzeigen, ob das Attribut 'UNDERLINE' angegeben ist
		yield ui.message("Is underline: " +
						 attrs.contains(Attribute.UNDERLINE));
		
		// Anzeigen, ob die Attribute 'ALPHA_NUMERIC', 'HIGH_INTENSITY' und 'PEN_DETECTABLE' angegeben sind
		yield ui.message("Is alphanumeric, intensified and pen-detectable: " +
						 attrs.containsAll([Attribute.ALPHA_NUMERIC, Attribute.HIGH_INTENSITY, Attribute.PEN_DETECTABLE]));
						 
		// Anzeigen, ob die Attribute 'UNDERLINE', 'HIGH_INTENSITY' und 'PEN_DETECTABLE' angegeben sind
		yield ui.message("Is underline, intensified and pen-detectable: " +
						attrs.containsAll([Attribute.UNDERLINE, Attribute.HIGH_INTENSITY, Attribute.PEN_DETECTABLE]));
	} catch (error) {
		yield ui.message(error);
	}
	//Generiertes Makro beenden
});

// Zurückgegebenes Makro ausführen
return macro();