Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Word Processor: Fortlaufende Abschnitte (https://www.delphipraxis.net/203689-word-processor-fortlaufende-abschnitte.html)

hansklok 12. Mär 2020 16:36

Word Processor: Fortlaufende Abschnitte
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

p80286 12. Mär 2020 17:46

AW: Word Processor: Fortlaufende Abschnitte
 
Eine "Zeile" ist zunächst einmal nur eine "gedruckte" Zeile. Ihre Länge ist zunächst von der Spaltenbreite (Seitenbreite) abhängig. Mit fixen Zeilenumbrüchen kannst Du sie verkürzen, falls gewollt.

Gruß
K-H

hansklok 12. Mär 2020 17:59

AW: Word Processor: Fortlaufende Abschnitte
 
Genau. Ich glaube aber, dass es bei einem fortlaufenden Abschnitte, der zwischen zwei anderen Abschnitten liegt, etwas anderes ist. Schau Dir nochmal das Foto an bitte. Irgendwann muss der Inhalt ja merken, dass er zur nächsten Spalte des Absatzes umbrechen muss, damit ein ausgeglichenes Bild entsteht.

Rollo62 12. Mär 2020 18:00

AW: Word Processor: Fortlaufende Abschnitte
 
Vielleicht muss man die Blöcke 'teilbar machen, so das der Renderer so lange Zeilen darstellt bis der freie Platz weg ist.
Dann die nächste Seite ab da mit dem 2. Blockteil weitermachen, bis der nächste Block dran ist oder die Seite voll ist.

Was mir generell bei Word fehlt ist eine gute Formatierungsmöglichkeit wie in Excel, wo man FitOnPage oder NoOfPages vorgeben kann.
Ist bei Textprozessoren aber schwieriger, insbesondere wenn noch Bilder dabei sind.

Ich würde auch versuchen vorzugeben welche Bereiche zusammenhängend sein müssen (die Blöcke ?), und welche auf der Folgeseite fortlaufen können.

Interessante Aufgabe, ob es da wohl ein Standardpattern gibt ?
Ich würde auch mal schauen wie HTML5 das macht.

hansklok 12. Mär 2020 18:06

AW: Word Processor: Fortlaufende Abschnitte
 
Zitat:

Zitat von Rollo62 (Beitrag 1459589)
Vielleicht muss man die Blöcke 'teilbar machen, so das der Renderer so lange Zeilen darstellt bis der freie Platz weg ist.
Dann die nächste Seite ab da mit dem 2. Blockteil weitermachen, bis der nächste Block dran ist oder die Seite voll ist..

Das ist eh schon programmiert und funktioniert auch, wie erwähnt für Abschnitte vom Typ Grade Seite/Ungrade Seite/Nächste Seite.
Zitat:

Zitat von Rollo62 (Beitrag 1459589)
Ich würde auch versuchen vorzugeben welche Bereiche zusammenhängend sein müssen (die Blöcke ?), und welche auf der Folgeseite fortlaufen können.

Was meinst Du genau?

HTML ist ja nicht Seitenbasiert. Mein Renderer zeichnet ja wirklich alles WYSIWYG.

Rollo62 12. Mär 2020 18:15

AW: Word Processor: Fortlaufende Abschnitte
 
Es gibt so was bei HelpAndManual, wo man sagen kann welche Zeilen, Bereiche zusammenhängen sollten.

Das kann trotzdem zerrissen werden, aber es wird dann bevorzugt versucht umzubrechen so das Alles zusammen auf der nächsten Seite bleibt.
Man könnte das über Umbrechlimits global steuern, oder Seitenweise.

hansklok 12. Mär 2020 18:18

AW: Word Processor: Fortlaufende Abschnitte
 
Hmm, leider kann ich aus Deiner letzten Antwort nicht soviel deuten. :/

Rollo62 12. Mär 2020 18:27

AW: Word Processor: Fortlaufende Abschnitte
 
Man kann Zeilen markieren, ich denke das sind dann intern irgendwelche SubBlocks.
Diese versucht der Renderer dann ohne Umbruch zu lassen und am Stück darzustellen.

hansklok 12. Mär 2020 18:31

AW: Word Processor: Fortlaufende Abschnitte
 
Es tut mir leid, ich verstehe leider nicht, worauf Du hinauswillst. Kannst Du es mir bitte nochmal anders, ausführlicher beschreiben? Vielen Dank.

Rollo62 12. Mär 2020 18:38

AW: Word Processor: Fortlaufende Abschnitte
 
Sorry, bin nur am Tablet.
Ich meine es sollte Bereiche geben die nicht umbrechen sollen,
von einer Seite auf die nächste.
Dann lieber eine grössere Lücke auf einer Seite lassen

Insbesondere bei Abschnitten mit Bildern, Tabelle,
n, Aufzählungen sinnvoll.

Bei H&M ist das aber keine so strikte Regel.
Wenn zu viel Platz bleiben würde, dann bricht es trotzdem an irgendeiner Stelle um.

Es ist wie ein Wunsch der Daten an den Renderer :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz