function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;
| AnnotIndex | Integer. אינדקס מבוסס אפס של ההערה הפותחת בעמוד הנוכחי, בטווח 0 .. AnnotationCount - 1. |
| Relationship | TPdfAnnotationRelationship. parPopup עוקב אחר רשומות /Popup; parInReplyTo עוקב אחר רשומות התשובה /IRT. |
| MaxDepth | Integer. מספר הקישורים המרבי לעקוב אחריהם. חייב להיות בין 1 ל-4096, אחרת מועלה EPdfError. ברירת המחדל היא 64. |
| Result | TPdfIntegerArray. אינדקסי העמוד של ההערות המקושרות לפי סדר הביקור. ריק כאשר להערה הפותחת אין קישור כזה. |
מיישמת שוב ושוב את GetLinkedAnnotationIndex: מההערה הפותחת היא עוקבת אחר הקשר המבוקש אל ההערה הבאה, ואז שוב ממנה, ואוספת כל אינדקס בדרך. התוצאה היא שרשור התשובות של דיון, או שרשרת popups, כמערך פשוט של אינדקסי הערות עמוד
ההליכה נעצרת בשלושה תנאים: להערה הנוכחית אין קישור נוסף, מספר הקישורים שנבקרו מגיע ל-MaxDepth, או שהאינדקס הבא יחזור להערה שכבר נצפתה (האינדקס הפותח נחשב כנצפה). ההגנה מפני מעגלים הופכת את הקריאה לבטוחה גם במסמכים פגומים שרשומות /IRT שלהם יוצרות לולאות
האינדקס הפותח עצמו אף פעם אינו חלק מהתוצאה — רק ההערות אליהן הוא מוביל. הערה ללא הקישור המבוקש מחזירה מערך ריק, ולא שגיאה
MaxDepth מחוץ ל-1 .. 4096 מעלה EPdfError לפני פתיחת הערה כלשהי.
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;