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