AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Word: Strategie hinter ausgeglichener Spaltenaufteilung

Word: Strategie hinter ausgeglichener Spaltenaufteilung

Offene Frage von "stahli"
Ein Thema von hansklok · begonnen am 17. Mär 2020 · letzter Beitrag vom 19. Mär 2020
Antwort Antwort
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 13:26
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.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.359 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 14:03
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 14:24
Deine Zielstellung ist allerdings recht unscharf formuliert.
Ja? Was genau für Angaben benötigst Du?
  Mit Zitat antworten Zitat
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 14:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.359 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 14:54
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 15:17
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.

Geändert von hansklok (17. Mär 2020 um 15:21 Uhr)
  Mit Zitat antworten Zitat
gast2019
(Gast)

n/a Beiträge
 
#7

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 15:30
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!
  Mit Zitat antworten Zitat
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 15:40
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.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.359 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 15:56
Die Trennung von Daten und Layout ist ja sinnvoll. Dennoch brauchst Du irgendeine Stelle, die alles miteinander abgleicht.
Das Problem ist, dass Du einige Vorgaben von außen treffen kannst (z.B. 3 Spalten, 2 mit 33,3 % Breite und die dritte nutzt den Rest)
ABER Du willst ja auch auf die Inhalt reagieren und das ist z.B. Text- und Textformatabhängig. Also beeinflussen sich äußere und innere Kriterien.

Da wir Deine genauen Schnittstellen und Möglichkeiten nicht kennen und diese sicher auch einige Einarbeitung erfordern würden, bleibe ich dabei, dass Hilfestellung schwierig sein wird.


Ich hatte vorhin mal einen längeren Text geschrieben und dann auf Grund Deines späteren Posts verworfen.
Habe es aber noch in der Zwischenablage (sind ein paar Überlegungen, aber auch keine konkrete Hilfe):

Zitat:
Ich denke nicht, dass Du hier Tipps erhalten kannst, die Dich wirklich weiter bringen.
Dazu ist die Aufgabenstellung zu spezifisch und sicher auch genau im Kontext Deines Projektes zu betrachten.

Grundsätzlich würde ich zunächst einfach von Rechtecken (ohne Inhalt) ausgehen und die auf einer verfügbaren Fläche "virtuell" anordnen.
Dazu kann man jedem Rechteck bestimmte Kriterien mitgeben (feste Breite oder variable Breite in einem bestimmten Bereich und evtl. sogar einem gewissen Widerstand gegen Abweichungen von der Sollbreite oder der aktuellen Breite).
So könnten sich die Rechtecke wie unter einer Physik verhalten und z.B. bei seitlichen Drücken unterschiedlich zusammenpressen lassen.

Wenn sich die Rechtecke nach einer Textbreite richten soll, dann musst Du diese wohl zunächst zeichnen und die Textbreite bestimmen und danach die Breite der Rechtecke vergeben.

Wenn die Gesamtbreite der Rechtecke aber die Seitenbreite übersteigt, musst Du irgendwo weiter nachgeben. Evtl. sind sogar mehrere Iterationen notwendig...


Ist sicherlich kein einfaches Problem.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
gast2019
(Gast)

n/a Beiträge
 
#10

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 16:31
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.
Also:
- TLayoutSection kümmert sich um Alles und
- TSection hat keine Ahnung davon

Klingt einleuchtend für mich, da die Beiden wohl nichts miteinander zu tun haben...

Das übersteigt wohl meinen recht beschränkten Delphi5-Horizont noch etwas, sorry!

Halte es daher künftig mehr mit Nuhr+Fresse
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:36 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-2025 by Thomas Breitkreuz