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