Διάταξη και απόδοση πινάκων THPDFTable
Το THPDFTable είναι η ελαφριά μηχανή διάταξης και απόδοσης πινάκων που εισήχθη στην v2.429.0 και εκτίθεται από τη μονάδα HPDFTable
Πριν την v2.429.0 οι παραγωγοί έπρεπε να σχεδιάζουν κελιά στο χέρι με Rectangle συν TextOut και σκληρά κωδικοποιημένες συντεταγμένες X στηλών, διαχειριζόμενοι στο χέρι ύψη γραμμών, zebra striping, και αλλαγές σελίδας· το THPDFTable οδηγεί τα υπάρχοντα primitives σχεδίασης του THPDFPage, ώστε οι πίνακες να αποδίδονται με μετρημένα ύψη γραμμών, συγχωνευμένα κελιά, και αυτόματη συνέχεια σε νέες σελίδες
Μονάδα
HPDFTable
Παράδειγμα χρήσης
uses
HPDFTable;
var
Tbl: THPDFTable;
Row: THPDFTableRow;
begin
Tbl:= THPDFTable.Create(HPDF);
try
Tbl.AddColumn(80); Tbl.AddColumn(200); Tbl.AddColumn(120);
Tbl.SetBounds(50, 60);
Row:= Tbl.AddRow; Row.IsHeader:= True;
Row.Cells[0].Text:= 'No';
Row.Cells[1].Text:= 'Description';
Row:= Tbl.AddRow;
Row.Cells[0].ColSpan:= 2; // merged cell across columns 0..1
Row.Cells[0].Text:= 'merged header';
Tbl.Render;
finally
Tbl.Free;
end;
end;
THPDFTable
Το THPDFTable κατέχει τη διάταξη στηλών, τη συλλογή γραμμών, και το πέρασμα απόδοσης· σχεδιάζει μέσα από το εξάρτημα THotPDF που περνάει στο THPDFTable.Create και χρησιμοποιεί μόνο δημόσια μέλη THPDFPage και THotPDF
Μέθοδοι
| Μέθοδος | Περιγραφή |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | Δημιουργεί τον πίνακα δεσμευμένο στο έγγραφο που παρέχει σελίδες, γραμματοσειρές, και εικόνες |
THPDFTable.Destroy | Απελευθερώνει τον πίνακα μαζί με κάθε γραμμή και κελί που κατέχει |
THPDFTable.AddColumn(Width: Single): Integer | Προσθέτει μια στήλη με το δοσμένο πλάτος στις τρέχουσες μονάδες σελίδας και επιστρέφει τον δείκτη της |
THPDFTable.AddRow: THPDFTableRow | Προσθέτει μια γραμμή στο μέγεθος του τρέχοντος πλήθους στηλών και την επιστρέφει |
THPDFTable.SetBounds(AX, AY: Single) | Τοποθετεί την αφετηρία του πίνακα στην τρέχουσα σελίδα |
THPDFTable.Render | Μετρά τα ύψη γραμμών, σχεδιάζει φόντα, περιγράμματα, και περιεχόμενο κελιών, και συνεχίζει σε νέες σελίδες όσο παραμένουν γραμμές |
Ιδιότητες
| Ιδιότητα | Περιγραφή |
|---|---|
THPDFTable.Doc: THotPDF | Το δεσμευμένο έγγραφο που δόθηκε στον constructor |
THPDFTable.ColCount: Integer | Πλήθος στηλών που προστέθηκαν με την THPDFTable.AddColumn |
THPDFTable.RowCount: Integer | Πλήθος γραμμών που προστέθηκαν με την THPDFTable.AddRow |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Πρόσβαση σε γραμμή ανά δείκτη |
THPDFTable.X: Single και THPDFTable.Y: Single | Αφετηρία πίνακα στη σελίδα στις τρέχουσες μονάδες σελίδας |
THPDFTable.HeaderBgColor: TColor | Χρώμα φόντου που βάφεται πίσω από τις γραμμές κεφαλίδας |
THPDFTable.AlternatingBg: TColor | Φόντο zebra-stripe που εφαρμόζεται στις εναλλασσόμενες γραμμές εκτός κεφαλίδας |
THPDFTable.BorderColor: TColor και THPDFTable.BorderWidth: Single | Χρώμα και πλάτος γραμμών πλέγματος για τα περιγράμματα κελιών |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Γραμματοσειρά και στοίχιση fallback για κελιά που δεν τις παρακάμπτουν |
THPDFTable.Padding: Single | Εσωτερική απόσταση μεταξύ περιγράμματος κελιού και περιεχομένου του |
THPDFTable.BottomMargin: Single | Χώρος που κρατείται στο κάτω μέρος σελίδας πριν το πέρασμα απόδοσης στραφεί σε νέα σελίδα |
THPDFTable.RepeatHeader: Boolean | Όταν είναι true, η ζώνη κεφαλίδας επεκπέμπεται στην κορυφή κάθε σελίδας συνέχειας |
THPDFTable.TotalHeightRendered: Single | Συνολικό ύψος που κατανάλωσε το τελευταίο πέρασμα απόδοσης σε όλες τις σελίδες |
THPDFTableRow
Η THPDFTableRow κρατά τα κελιά μιας γραμμής πίνακα συν τα flags επιπέδου γραμμής που χρησιμοποιούνται κατά τη μέτρηση και την απόδοση
| Μέλος | Περιγραφή |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Δημιουργεί τη γραμμή προγεμισμένη με τον δοσμένο αριθμό κελιών |
THPDFTableRow.Destroy | Απελευθερώνει τη γραμμή και τα κελιά της |
THPDFTableRow.AddCell: THPDFTableCell | Προσθέτει ένα κελί και το επιστρέφει |
THPDFTableRow.EnsureCells(Count: Integer): Integer | Μεγαλώνει τη γραμμή τουλάχιστον στο δοσμένο πλήθος κελιών και επιστρέφει το νέο πλήθος |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Ιδιότητα προεπιλεγμένου array που προσπελαύνει κελί ανά δείκτη |
THPDFTableRow.Count: Integer | Πλήθος κελιών που η γραμμή κρατά αυτή τη στιγμή |
THPDFTableRow.IsHeader: Boolean | Σημειώνει τη γραμμή ως γραμμή κεφαλίδας που βάφεται με THPDFTable.HeaderBgColor και επαναλαμβάνεται όταν είναι ενεργό το THPDFTable.RepeatHeader |
THPDFTableRow.MinHeight: Single | Κάτω όριο που εφαρμόζεται στο μετρημένο ύψος γραμμής |
THPDFTableCell
Το THPDFTableCell μεταφέρει το περιεχόμενο και τις παρακάμψεις ανά κελί που εφαρμόζονται πάνω από τις προεπιλογές του πίνακα
| Ιδιότητα | Περιγραφή |
|---|---|
THPDFTableCell.Text: WideString | Κείμενο κελιού· αποδίδεται μέσω THPDFPage.TextOutHTML όταν το THPDFTableCell.IsHTML είναι true, ώστε το inline markup για bold, χρώμα, συνδέσμους, και sub-sup να τηρείται |
THPDFTableCell.Align: THPDFCellAlign και THPDFTableCell.VAlign: THPDFCellVAlign | Οριζόντια και κάθετη στοίχιση περιεχομένου μέσα στο κελί |
THPDFTableCell.ColSpan: Integer και THPDFTableCell.RowSpan: Integer | Πλήθος οριζόντιας και κάθετης συγχώνευσης, και τα δύο με προεπιλογή 1 |
THPDFTableCell.BgColor: TColor και THPDFTableCell.HasBgColor: Boolean | Παράκαμψη χρώματος φόντου ανά κελί και η σημαία παρουσίας της |
THPDFTableCell.TextColor: TColor και THPDFTableCell.HasTextColor: Boolean | Παράκαμψη χρώματος κειμένου ανά κελί και η σημαία παρουσίας της |
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: Boolean | Παράκαμψη γραμματοσειράς ανά κελί και η σημαία παρουσίας της |
THPDFTableCell.WordWrap: Boolean | Αναδιπλώνει μακρύ κείμενο σε μετρημένες γραμμές μέσα στο κελί, ενεργό από προεπιλογή |
THPDFTableCell.ImageIndex: Integer | Όταν είναι μηδέν ή μεγαλύτερο, το κελί δείχνει την εικόνα καταχωρημένη με αυτόν τον δείκτη μέσω THotPDF.AddImage αντί για κείμενο, προεπιλογή -1 |
THPDFTableCell.ImageAspect: Single | Αναλογία διαστάσεων εμφάνισης για κελί εικόνας· η εικόνα κλιμακώνεται στο πλάτος του κελιού και το ύψος της προκύπτει από αυτή την αναλογία, προεπιλογή 1.0 |
THPDFTableCell.IsHTML: Boolean | Δρομολογεί το THPDFTableCell.Text μέσω THPDFPage.TextOutHTML ώστε το inline markup να αποδίδεται |
Απαριθμήσεις στοίχισης
Η THPDFCellAlign = (caLeft, caCenter, caRight) επιλέγει οριζόντια στοίχιση κελιού και η THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) κάθετη στοίχιση κελιού
Διάταξη και συμπεριφορά αλλαγής σελίδας
Τα ύψη γραμμών μετρώνται από το περιεχόμενο των κελιών με σεβασμό στο word wrap και το THPDFTableRow.MinHeight, τα συγχωνευμένα κελιά τοποθετούνται σε ένα εσωτερικό πλέγμα ώστε τα THPDFTableCell.ColSpan και THPDFTableCell.RowSpan να συγχωνεύονται σωστά ανάμεσα σε γραμμές, και το πέρασμα απόδοσης στρέφεται σε νέα σελίδα όταν η επόμενη γραμμή δεν χωράει πάνω από το THPDFTable.BottomMargin
Όταν το THPDFTable.RepeatHeader είναι true, η ζώνη κεφαλίδας επεκπέμπεται στην κορυφή κάθε σελίδας συνέχειας πριν σχεδιαστούν περαιτέρω γραμμές
Τα κελιά εικόνων που εισήχθησαν στην v2.432.0 αναφέρονται με δείκτη σε εικόνα καταχωρημένη μέσω THotPDF.AddImage, κλιμακώνονται στο πλάτος του κελιού, και παίρνουν το ύψος τους από το THPDFTableCell.ImageAspect, ώστε η εικόνα να διατηρεί την αναλογία διαστάσεων της πηγής