Διάταξη και απόδοση πινάκων 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, ώστε η εικόνα να διατηρεί την αναλογία διαστάσεων της πηγής

Δείτε επίσης