Operazioni con DataCell e Attribute

Questa macro illustra come utilizzare DataCell e AttributeSet per ispezionare testo e attributi in una determinata riga/colonna sullo schermo. In questo esempio si può vedere:

  • Come ottenere una raccolta di DataCell per una determinata posizione e lunghezza.

  • Come eseguire l'iterazione sui DataCell per creare una stringa di testo

  • Come, per confronto, è possibile eseguire un'operazione simile anche utilizzando getText().

  • E infine, come eseguire operazioni con gli attributi, ottenere un elenco di stringhe o determinare se stringhe specifiche sono impostate in una determinata posizione dello schermo.

var macro = createMacro(function*() {
  'use strict';
  
  // Ottenere PresentationSpace per interagire con l'host
  var ps = session.getPresentationSpace();
  
  // Dichiarare le variabili da utilizzare successivamente
  var cells;
  var text;
  var attrs;
  
  // Impostare il valore di timeout predefinito per le funzioni "wait"
  wait.setDefaultTimeout(10000);
  
  // Macro di esempio per operazioni con DataCell e Attributi
  try {
    yield wait.forCursor(new Position(24, 2));
    
    // Ottenere DataCell dallo spazio di presentazione.
    // Riga 19, col 3 è il prompt, lunghezza 35 caratteri
    // "Choose from the following commands:"
    cells = ps.getDataCells({row:19, col:3}, 35);
    text = '';
    
    // È possibile visualizzare il testo utilizzando getText
    yield ui.message("Screen text: " + ps.getText({row:19, col:3}, 35));
    
    // Oppure è possibile assemblare il testo da DataCell a ogni posizione
    for(var index = 0; index < cells.length; index++) {
      text = text.concat(cells[index].getChar());
    }
    // E visualizzare il testo
    yield ui.message("Cells text: " + text);
    
    // Ottenere gli attributi per la prima DataCell (cell[0])
    attrs = cells[0].getAttributes();
    
    // Visualizzare se sono presenti attributi nella cella dati
    yield ui.message("Attribute set is empty: " + attrs.isEmpty());
    
    // Visualizzare il numero di attributi impostato set
    yield ui.message("Number of attributes: " + attrs.size());
    
    // Visualizzare quali attributi sono impostati
    yield ui.message("Attributes: " + attrs.toString());
    
    // Ora visualizzare se l'attributo high intensity è impostato
    yield ui.message("Is high intensity: "
             + attrs.contains(Attribute.HIGH_INTENSITY));
    
    // Ora visualizzare se l'attributo underline è impostato
    yield ui.message("Is underline: "
             + attrs.contains(Attribute.UNDERLINE));
    
    // Ora visualizzare se sono impostati gli attributi alphanumeric, intensified e pen-detectable
    yield ui.message("Is alphanumeric, intensified and pen-detectable: "
             + attrs.containsAll([Attribute.ALPHA_NUMERIC, Attribute.HIGH_INTENSITY, Attribute.PEN_DETECTABLE]));
    
    // Ora visualizzare se sono impostati gli attributi underline, intensified e pen-detectable
    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);
  }
  //Fine della macro generata
});

// Eseguire la macro
return macro();