AGB  ·  Datenschutz  ·  Impressum  







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

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
Seite 2 von 3     12 3      
Benutzerbild von stahli
stahli

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

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
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 16:10
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
Lassen wir dies bitte erst einmal außen vor. Ich versuche mein Problem auf den kleinsten Nenner zu reduzieren, um übersichtlich zu bleiben. Wir gehen also von einem unveränderlichen Inhalt aus, der in ein Layout übersetzt werden soll.
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.
Es gibt im Moment nicht mehr als die von mir beschriebenen Klassen.

Deine Anmerkung in Bezug auf das Box Modell ist logisch und ich hatte mir diese Abstraktion vorher auch schon überlegt.
  Mit Zitat antworten Zitat
gast2019
(Gast)

n/a Beiträge
 
#13

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
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, 16: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
Benutzerbild von stahli
stahli

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 16:54
@hansklok

Ok, da sich niemand anderes weiter einklinkt, können wir uns ja mal untereinander weiter nerven

Mein Vorschlag zur Annäherung:

Wir sollten vielleicht von Rechtecke reden und Text, Daten und Klassen außen vor lassen.

Ok, wir haben ineinander gesetzte Rechtecke, die auf eine Fläche anzuordnen sind. Die Breiten und Höhen sollen optimiert werden.

Was ist jetzt genau die Vorgabe und das Problem dabei?
Woran scheitert es?

Machst Du vielleicht mal eine Skizze und ein Handyfoto?
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
 
#16

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 17:30
Wir sollten vielleicht von Rechtecke reden und Text, Daten und Klassen außen vor lassen. ... Wir sollten vielleicht von Rechtecke reden und Text, Daten und Klassen außen vor lassen.
Sehr gern!
Machst Du vielleicht mal eine Skizze und ein Handyfoto?
Anbei zwei Schemata.

Im Falle meines Layout Schemas sollte festgehalten werden, dass in der Realität für das im Bild gezeigte Szenario, man vermutlich in jeder der drei Spalten jeweils zwei Zeilen an Texten hätte. Dabei würden der Absatz der ersten Spalte auf die zweite aufgeteilt und der Absatz der zweiten Spalte ebenfalls nach Spalte drei aufgeteilt.
Miniaturansicht angehängter Grafiken
01-daten.jpg   02-layout.jpg  

Geändert von hansklok (17. Mär 2020 um 17:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 18:29
Oha. Wir tun uns wirklich schwer miteinander...


Ich verstehe jetzt so viel, dass Du einen roten und einen grünen Rahmen hast, in denen unterschiedlich große und unterschiedlich viele schwarze Kästen stecken.
Jetzt willst Du das so aufteilen, dass alles vernünftig angeordnet wird.

Soweit als Zwischenfazit ok?
Vielleicht kann Dir meine https://www.delphipraxis.net/117765-...llboxflow.html sogar etwas helfen?

Was ich jetzt schon wieder nicht verstehe ist, warum Du die Inhalte der zwei Kästen jetzt auf 3 aufteilen willst und nach welchen Kriterien.
Die Maße der schwarzen Blöcke sind für mich nicht nachvollziehbar, da da keinerlei Relationen erkennbar sind. Wozu hast Du 100x25 usw angegeben?
Wäre es nicht besser, unterschiedlich große Blöcke zu zeichnen und zu nummerieren? Dann könnte man nachvollziehen, welcher Block wohin bewegt und wie verändert wird.
Dass Du jetzt wieder von Text und Zeilen sprichst, verwirrt mich zusätzlich beim Problemverständnis.


Tut mir leid, dass ich so begriffsstutzig bin, aber vielleicht kommen wir ja doch noch ein Stück weiter.
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
 
#18

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 19:28
Stahli, ich habe die zwei Absätze mit unterschiedlichen Farben gefüllt, um zu demonstrieren, wie diese Container später im Layout formatiert werden. Also nur, damit man sie auseinanderhalten kann.

Die Maße der Kästen sind wie alle Dinge in den beiden Grafiken nur abstrakt dargestellt, um die Problematik zu veranschaulichen.
Oha. Wir tun uns wirklich schwer miteinander...
Haha.
Ich verstehe jetzt so viel, dass Du einen roten und einen grünen Rahmen hast, in denen unterschiedlich große und unterschiedlich viele schwarze Kästen stecken.
Jetzt willst Du das so aufteilen, dass alles vernünftig angeordnet wird.

Soweit als Zwischenfazit ok?
Genauso sieht es aus.

Ich habe jetzt nochmal in fragiler Kleinarbeit Grafiken erstellt, die genau zeigen, was alles aus 01 - Daten für das Layout generiert und angeordnet werden muss. Mehr und anders kann ich das Thema nicht veranschaulichen
Miniaturansicht angehängter Grafiken
01-daten.jpg   02-layout-spalten-und-absaetze-.jpg   03-layout-zeilen-.jpg   04-layout-rechtecke-.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 20:30
Ok, dann war ich wohl ziemlich auf der falschen Spur...


Der Renderer müsste auch damit klar kommen, wenn die Spalten nicht schmal, schmal, breit wären sondern z.B. breit, schmal, schmal. Richtig?

Die Breite der Spalten würde immer fest stehen und der Text müsste fließend so eingefüllt werden, dass alle Spalten möglichst gleich hoch gefüllt sind. Korrekt?

Der Renderer müsste also die Texte so zerschneiden, dass sie die 3 Spalten gleichmäßig füllen, auch wenn diese Spalten wiederum in mehrere Abschnitte unterteilt sind. So?


Die Breite der Spalten und die Anzahl deren Unterteilungen stehen zuvor fest und der Renderer muss sich nach dieser Vorgabe richten. Habe ich es jetzt?
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
 
#20

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 20:32
Der Renderer müsste auch damit klar kommen, wenn die Spalten nicht schmal, schmal, breit wären sondern z.B. breit, schmal, schmal. Richtig?
Ganz genau

Die Breite der Spalten würde immer fest stehen und der Text müsste fließend so eingefüllt werden, dass alle Spalten möglichst gleich hoch gefüllt sind. Korrekt?
Korrekt.

Der Renderer müsste also die Texte so zerschneiden, dass sie die 3 Spalten gleichmäßig füllen, auch wenn diese Spalten wiederum in mehrere Abschnitte unterteilt sind. So?
Auch das stimmt.

Die Breite der Spalten und die Anzahl deren Unterteilungen stehen zuvor fest und der Renderer muss sich nach dieser Vorgabe richten. Habe ich es jetzt?
Du hast es jetzt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 01:30 Uhr.
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