function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;
| AnnotIndex | Integer. Index de la zero al adnotării de start pe pagina curentă, în intervalul 0 .. AnnotationCount - 1 |
| Relationship | TPdfAnnotationRelationship. parPopup urmărește intrările /Popup; parInReplyTo urmărește intrările de răspuns /IRT |
| MaxDepth | Integer. Numărul maxim de legături de urmat. Trebuie să fie între 1 și 4096, în caz contrar fiind ridicat un EPdfError. Valoarea implicită este 64 |
| Result | TPdfIntegerArray. Indecșii de pagină ai adnotărilor legate, în ordinea vizitării. Gol când adnotarea de start nu are o astfel de legătură |
Aplică repetat GetLinkedAnnotationIndex: pornind de la adnotarea de start, urmărește relația cerută către adnotarea următoare, apoi din nou de la aceea, colectând fiecare index de-a lungul drumului. Rezultatul este firul de răspunsuri al unei discuții sau un lanț de popup-uri, ca un vector simplu de indecși de adnotări ale paginii
Parcurgerea se oprește din trei motive: adnotarea curentă nu mai are o legătură ulterioară, numărul de legături vizitate ajunge la MaxDepth sau indexul următor ar revizita o adnotare deja văzută (indexul de start contează ca văzut). Garda anti-ciclu face apelul sigur pe documente malformate ale căror intrări /IRT formează bucle
Indexul de start în sine nu face niciodată parte din rezultat — doar adnotările către care duce. O adnotare fără legătura cerută produce un vector gol, nu o eroare
MaxDepth în afara intervalului 1 .. 4096 ridică un EPdfError înainte ca vreo adnotare să fie deschisă
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;