function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;
| AnnotIndex | Integer. Indeks anotasi awal berbasis nol pada halaman saat ini, dalam rentang 0 .. AnnotationCount - 1 |
| Relationship | TPdfAnnotationRelationship. parPopup menyusuri entri /Popup; parInReplyTo menyusuri entri balasan /IRT |
| MaxDepth | Integer. Jumlah maksimum tautan yang diikuti. Harus antara 1 dan 4096, jika tidak EPdfError dimunculkan. Nilai bawaan 64 |
| Result | TPdfIntegerArray. Indeks halaman anotasi yang terhubung dalam urutan kunjungan. Kosong ketika anotasi awal tidak memiliki tautan demikian |
Menerapkan GetLinkedAnnotationIndex berulang kali: dari anotasi awal metode mengikuti hubungan yang diminta ke anotasi berikutnya, lalu lagi dari anotasi itu, mengumpulkan setiap indeks di sepanjang jalan. Hasilnya adalah utas balasan sebuah diskusi, atau rantai popup, sebagai array biasa berisi indeks anotasi halaman
Penelusuran berhenti pada tiga kondisi: anotasi saat ini tidak memiliki tautan lanjutan, jumlah tautan yang dikunjungi mencapai MaxDepth, atau indeks berikutnya akan mengunjungi kembali anotasi yang sudah dilihat (indeks awal dianggap sudah dilihat). Penjaga siklus membuat panggilan ini aman pada dokumen rusak yang entri /IRT-nya membentuk lingkar
Indeks awal sendiri tidak pernah menjadi bagian dari hasil — hanya anotasi yang ditujuinya. Anotasi tanpa tautan yang diminta menghasilkan array kosong, bukan error
MaxDepth di luar 1 .. 4096 memunculkan EPdfError sebelum anotasi mana pun dibuka
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;