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
| IndexUnit | fsuUTF16CodeUnit, fsuUnicodeCodePoint oder fsuGraphemeCluster |
|---|---|
| CaretIndices | Empfä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