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