Einzelnen Beitrag anzeigen

hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#14

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 17:47
Also:
- TLayoutSection kümmert sich um Alles und
- TSection hat keine Ahnung davon
Im Constructor von TLayoutSection wird das Quellobjekt, eine TSection übergeben (danach ist TLayoutSection.Data = TSection). TLayoutSection soll eine Methode bekommen, die aus den reinen Daten des Zeigers (TLayoutSection.Data) diese grafisch umsetzt. Das bedeutet, dass TLayoutSection aus den Angaben von TSection.Columns und TSection.ColumnWidths erst einmal TLayoutSection.Columns die benötigte Anzahl an Spalten hinzufügt. Danach müssen alle Absätze aus TLayoutSection.Data.Paragraphs ins Layout übersetzt werden. Dazu werden TLayoutParagraph Objekte angelegt usw. Ein TRun.Text kann ja viel länger sein, als eine Spalte. Deswegen muss TLayoutSection die jeweiligen Tuns in einzelne Worte und Leerzeichen splitten. Daraus erziehen wir dann neue TRuns, die dann zu TLayoutLine.Items hinzugefügt werden. TLayoutLine hat die maximale Breite seines Elternelements TLayoutParagraph. Man kann einer TLayoutLine also nur solange diese Teil Runs hinzufügen, solange TLayoutLine.Width kleiner als TLayoutParagraph.Width ist. Ansonsten muss eine neue Zeile eingefügt werden, mit der dann weiterverfahren wird. Für einen einspaltigen Abschnitt ist das wirklich easy zu realisieren, bei Spalten muss man jedoch u.U.für TParagraph ein Teil TLayoutParagraph in TLayoutColumn einfügen, der den rest des vorherigen Absatzes aus der Spalte zuvor zu Ende darstellt. Außerdem müssen all die TLayoutParagraphs darauf achten, dass sie über die Spalten gleichmäßig verteilt sind.

Ja, es geht um den Spaltenausgleich.

Ich verstehe nicht, wo ich mich unverständlich ausdrücke, ehrlich. Vielleicht hat meine Erläuterung jetzt zu etwas mehr Licht geführt. Dankeschön.
  Mit Zitat antworten Zitat