GetVisualCaretOrder

Formulare, Interaktion, Unicode

Beschreibung

Gibt jede Caret-Position der aktiven Bearbeitung in physikalischer links-nach-rechts-Reihenfolge zurück, nachdem die bidirektionalen Runs aufgelöst wurden

Jede Zeile wird unabhängig aufgelöst, und jede zurückgegebene Position ist an eine Grenze erweiterter Graphemhaufen ausgerichtet

Derselbe logische Index kann an einer Grenze gemischter Richtung in mehr als einem nicht angrenzenden Slot erscheinen, weil die beiden visuellen Caret-Positionen physisch verschieden sind

Die angeforderte Indexeinheit ändert nur die gemeldeten logischen Indizes und nicht die visuelle Reihenfolge

Deklaration

function GetVisualCaretOrder(
  IndexUnit: TPDFlibFormSelectionUnit;
  out CaretIndices: TPDFlibFormCaretIndices): Integer;

Parameter

IndexUnitfsuUTF16CodeUnit, fsuUnicodeCodePoint oder fsuGraphemeCluster
CaretIndicesEmpfängt logische Caret-Indizes, geordnet vom linken Rand des visuellen Texts zum rechten Rand

Rückgabewert

Gibt die Anzahl der visuellen Caret-Slots zurück oder null, wenn keine Bearbeitung aktiv ist oder die Indexeinheit ungültig ist

Performance

Graphemgrenzen und aufgelöste visuelle Reihenfolge werden für den aktuellen Bearbeitungswert und die Richtung gecacht; zum Abbilden von Laufgrenzen werden binäre Suchen verwendet

Beispiel

var
  Carets: TPDFlibFormCaretIndices;
begin
  if Session.GetVisualCaretOrder(fsuGraphemeCluster, Carets) > 0 then
    FirstVisualCaret := Carets[0];
end;

Siehe auch

MoveVisualCaret, SetTextDirection, GetSelectionRange, TPDFlibFormSession