function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;
| AnnotIndex | Integer. Indice a base zero dell'annotazione di partenza nella pagina corrente, nell'intervallo 0 .. AnnotationCount - 1 |
| Relationship | TPdfAnnotationRelationship. parPopup segue le voci /Popup; parInReplyTo segue le voci di risposta /IRT |
| MaxDepth | Integer. Numero massimo di collegamenti da seguire. Deve essere tra 1 e 4096, altrimenti viene sollevato un EPdfError. Il valore predefinito è 64 |
| Result | TPdfIntegerArray. Indici di pagina delle annotazioni collegate in ordine di visita. Vuoto quando l'annotazione di partenza non ha un tale collegamento |
Applica ripetutamente GetLinkedAnnotationIndex: dall'annotazione di partenza segue la relazione richiesta fino all'annotazione successiva, poi di nuovo da quella, raccogliendo ogni indice lungo il percorso. Il risultato è il thread di risposte di una discussione, oppure una catena di popup, come semplice array di indici delle annotazioni di pagina
Il percorso si arresta a tre condizioni: l'annotazione corrente non ha altri collegamenti, il numero di collegamenti visitati raggiunge MaxDepth o l'indice successivo rivedrebbe un'annotazione già incontrata (l'indice di partenza conta come incontrato). La guardia anti-ciclo rende la chiamata sicura su documenti malformati le cui voci /IRT formano cicli
L'indice di partenza stesso non fa mai parte del risultato — solo le annotazioni a cui conduce. Un'annotazione senza il collegamento richiesto produce un array vuoto, non un errore
MaxDepth fuori da 1 .. 4096 solleva un EPdfError prima che venga aperta qualsiasi annotazione
var
Chain: TPdfIntegerArray;
Index: Integer;
begin
// collect the whole reply thread under annotation 5
Chain := Pdf1.GetLinkedAnnotationChain(5, parInReplyTo);
for Index in Chain do
Memo1.Lines.Add(Pdf1.Annotation[Index].ContentsText);
end;