AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Word Processor: Fortlaufende Abschnitte

Ein Thema von hansklok · begonnen am 12. Mär 2020 · letzter Beitrag vom 12. Mär 2020
 
hansklok

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

Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 17:36
Hallo,

ich schreibe heute mal etwas Off-Topic, weil ich gern die Funktionsweise, den Ablauf der Komposition von fortlaufenden Abschnitten in einem Textverarbeitungsprogramm, wie man es aus Microsoft Word, Libre Office oder Apple Pages kennt, zu verstehen.

Ich schreibe im Moment mein eigenes Word Processor Control. Dieses soll sehr umfangreich werden. Ich habe zwei Module. Eines kümmert sich um die Daten, das andere um die Darstellung der Daten. Es handelt sich beim zweiten also um den Renderer für die Datenklasse.

Den Aufbau eines Daten Dokumentes mit formatierten Texten kann man sich grob umschrieben so bei mir vorstellen:
Code:
Dokument
  + Abschnitt (2 Spalten)
    + Absatz
      + Text
      + Tabulator
      + Text
      + Bild
    + Absatz
      + Text
  + Abschnitt
    ...
Wir haben also eine Datenstruktur mit einem Abschnitt, der wiederum zwei Absätze mit verschiedenem Inhalt enthält.
Die Render Engine übersetzt das Ganze im Moment wie folgt:
Code:
Dokument
  + Seite
    + Spalte (1. Spalte)
      + Blöcke
        + Absatz
          + Zeile
            + Text
            + Tabulator
            + Text
            + Bild
        + Absatz
          + Zeile
            + Text
    + Spalte (2. Spalte)
      + Blöcke
Der Renderer berechnet wieviele Zeilen, die durch die Datenstruktur erzeugt werden, in einen Absatz passen. Dann wird wiederum geschaut, wieviele Blöcke (Absatz oder Tabelle) in eine Spalte passen, falls die Höhe überschritten wird, wird in der nächsten Spalte fortgefahren und bei Bedarf eine neue Seite hinzugefügt.

Das bedeutet, dass ich im Moment mit meiner Struktur "feste" Abschnitte darstellen kann, also solche, die auf graden/ungraden/nächste Seite (Even/Odd/NextPage) beginnen. Für das Zeichnen des Controls bedeutet das einfach, dass ich für jede Seite alle Spalten von Links nach Rechts ausgebe, wobei der Inhalt der Spalten, die Blöcke dann von oben nach unten gezeichnet werden.

Innerhalb von Word, Pages etc. ist es aber möglich, dass auf einer Seite auch fortlaufende Abschnitte dargestellt werden können. Beispiel:
Code:
Seite
  Abschnitt (1 Spalte)
  Abschnitt (2 Spalten)
  Abschnitt (1 Spalte)
Wie muss man die Struktur verändern, dass man dies umsetzen kann? Bei einem fortlaufenden Abschnitt mit mehr als einer Spalte, muss man ja irgendwie im Vorhinein berechnen, wieviele Blöcke samt Zeilen in die jeweilige Spalte passen, um ein ausgeglichenes Anzeige Ergebnis zu erhalten.

Hat jemand einen Vorschlag?

Vielen Dank.
Angehängte Grafiken
Dateityp: jpg Abschnitte Microsoft Word.jpg (111,5 KB, 21x aufgerufen)

Geändert von hansklok (12. Mär 2020 um 18:09 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz