Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Word: Strategie hinter ausgeglichener Spaltenaufteilung (https://www.delphipraxis.net/203728-word-strategie-hinter-ausgeglichener-spaltenaufteilung.html)

hansklok 17. Mär 2020 12:10

Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich beschäftige mich ja grade mit den Grundlagen von Text Prozessoren und bin auf eine Frage gestoßen.

Angenommen, ich habe einen mehrspaltigen Abschnitt der Absätze enthält, wie würdet ihr vorgehen, um die Spalten ausgeglichen, so wie man es zum Beispiel aus Microsoft Word oder Libre Office kennt, zu rendern und darzustellen?

Hier die Hierarchie:
Code:
- Abschnitt
  - Spalten
    - Absätze
      - Zeilen
        - Runs
Die Schriftgröße des größten Run Wertes einer Zeile, bestimmt deren Höhe. Daraus folgt, dass Zeilen eine unterschiedliche Höhe besitzen können. Die Höhe eines Absatzes ergibt sich aus der Höhe aller Zeilen. Die Höhe einer Spalte ergibt sich aus der Höhe aller Absätze. Die Höhe des Abschnitts ergibt sich aus der Höhe seiner höchsten Spalte (kann variieren, falls es z.B. einen erzwungenen Spaltenumbruch gibt).

Wie könnte man nun beim Erzeugen dieser Struktur vorgehen, wenn man folgende Voraussetzungen hat?
Code:
- Abschnitt mit 3 Spalten (1 Spalte: 4 cm, 2. Spalte: 3 cm, 3. Spalte: 10 cm)
  - Absatz
  - Absatz
  - Absatz
Danke für eure Beiträge.

Sherlock 17. Mär 2020 12:53

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Die Spaltenbreite wird im Word doch nicht automatisch bestimmt, sondern vorgegeben bzw. ist manuell änderbar. Dabei ist sie unabhängig vom Inhalt. So war das zumindest noch bei meinem letzten Abstecher in Word 2013.

Sherlock

hansklok 17. Mär 2020 13:26

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Zitat:

Zitat von Sherlock (Beitrag 1459945)
Die Spaltenbreite wird im Word doch nicht automatisch bestimmt, sondern vorgegeben bzw. ist manuell änderbar. Dabei ist sie unabhängig vom Inhalt. So war das zumindest noch bei meinem letzten Abstecher in Word 2013.

Es geht um das Rendering der Datenstruktur auf eine Canvas! Und dort muss ich ja alle Objekte für das Layout einer Seite aus dem Datenmodell generieren.

stahli 17. Mär 2020 14:03

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Ich hatte mal mit einer längst vergessenen Komponente so etwas in der Richtung versucht: https://www.delphipraxis.net/176186-...omponente.html

Deine Zielstellung ist allerdings recht unscharf formuliert.
Man muss im Einzelfall da sicherlich noch viele Fälle unterscheiden, wann etwas komprimiert, umgebrochen, auseinandergezogen oder verschoben werden darf.

Eine allgemeine Antwort wird also schwierig sein.

hansklok 17. Mär 2020 14:24

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Zitat:

Zitat von stahli (Beitrag 1459957)
Deine Zielstellung ist allerdings recht unscharf formuliert.

Ja? Was genau für Angaben benötigst Du?

hansklok 17. Mär 2020 14:29

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Zitat:

Zitat von stahli (Beitrag 1459957)
Ich hatte mal mit einer längst vergessenen Komponente so etwas in der Richtung versucht: https://www.delphipraxis.net/176186-...omponente.html

Es ist nicht ganz die Richtung von der ich spreche. Mir geht es darum, wie man die Zeilen der Absätze der Datenstruktur (ein Absatz kann aus x Zeilen bestehen), die Teil eines Abschnitts sind, der durch z.B. drei unterschiedlich breite Spalten definiert ist), beim Layouten so günstig über die drei Spalten verteilt, dass man ein einheitliches Bild bekommt und die Spalten (die Klassen der Layout Engine sind), annähern dieselbe Höhe bekommen.

stahli 17. Mär 2020 14:54

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Tut mir leid, ich kann das nicht genug nachvollziehen (wo lässt sich was einstellen, welche Daten liegen vor, kann man vorab außerhalb der Engine etwas berechnen) und entsprechend auch nicht wirklich helfen.

hansklok 17. Mär 2020 15:17

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Ok, also ich habe zwei Module, eines für die Daten, das andere fürs Layout.

Datenstruktur
Code:
TSection:
  Columns: Integer
  ColumnsWidth[]: Double
  Paragraphs[]: TParagraph
  Width: Double

TParagraph:
  Items[]: TRun

TRun:
  Text: String
  FontSize: Double
  FontName: String
Layout Struktur
Code:
TLayout
  Width: Double
  Height: Double

TLayoutSection (TLayout)
  Data: TSection
  Columns[]: TLayoutColumn

TLayoutColumn (TLayout)
  Paragraphs[]: TLayoutParagraph
  Parent: TLayoutSection

TLayoutParagraph (TLayout)
  Lines[]: TLayoutLines
  Parent: TLayoutSection

TLayoutLine (TLayout)
  Items[]: TRun
  Parent: TLayoutParagraph
Die TLayout Klassen, insbesondere TLayoutSection muss aus ihrem Parent (Data) die Spalten und deren (Teil-)Absätze sinnvoll generieren.

gast2019 17. Mär 2020 15:30

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Zwei Spalten in Word sollten reichen. In die Erste schreibt man (mit Zeilenumbrüchen) rein, wohin der Excel-Link der zweiten Spalte führt.

IMHO nennt man das, was Du suchst "optimale Spaltenbreite". Word und Excel parsen/rendern daher, bevor sie reagieren?

Siehe #4 von stahli :-)

Wieviele Zeichen/Zeilen hast Du denn pro Tabellenfeld, die in Word umgesetzt werden/angezeigt werden müssen/sollen?

Und wenn das irgendwann mal klappen sollte, kommt jemand mit der Forderung nach einem lesbaren Ausdruck (auf Nadel/Tinte/Laser) um die Ecke...

Danach kommen farbige Ausdrucke auf unterschiedlichen Papierformaten.
Alles leider schon selbst (mit damals dBase3) erlebt :-(

Toitoitoi!

hansklok 17. Mär 2020 15:40

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung
 
Zitat:

Zitat von gast2019 (Beitrag 1459968)
Wieviele Zeichen/Zeilen hast Du denn pro Tabellenfeld, die in Word umgesetzt werden/angezeigt werden müssen/sollen?

Aus meiner Datenstruktur geht doch hervor, da ich strikt auf die Trennung von Daten und Layout Wert lege, da sich TLayoutSection selbstständig um alles kümmern muss. TSection hat keine Ahnung davon, in welcher Spalte sich ein TParagraph befindet. Die Struktur ist genau die, die wir aus Word und Libre Office kennen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 Uhr.
Seite 1 von 3  1 23      

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