News combit Dev Blog

Automatische Anpassung der Spaltenbreiten

Veröffentlicht: Donnerstag, 11. Juli 2019 | 3 Kommentar(e)
 
Ein weiterer Schritt nach vorne in unserem ständigen Bestreben, das zu verbessern, was bereits großartig ist – unser Tabellenobjekt. Bis LL25 mussten Sie entscheiden, welche Breiten Sie für Ihre jeweiligen Spalten reservieren möchten. Während dies meistens schon prima funktioniert, ist das Ergebnis nicht immer perfekt. 

Abhängig von den Daten, die Sie drucken, erhalten Sie mal mehr Weißraum als erwünscht, mal erhalten Sie Umbrüche an Stellen bei denen Sie diese nicht wünschen. In LL25 werden wir eine automatische Größenanpassung für die Spaltenbreite einführen, die eine perfekte Lösung für diese Aufgaben darstellt.

Als Beispiel nehmen Sie die folgende Kundenliste:


Dies ist im Grunde genommen das, was passiert, wenn Sie die drei Felder per Drag & Drop auf den Arbeitsbereich ziehen. Um die Herausforderung etwas plakativer zu machen habe ich dabei die zweite Spalte nur ein wenig verkleinert. Sie sehen sofort, was hier nicht stimmt - die Spalte "City" ist viel zu breit im Vergleich zu vor allem der Spalte "Address", was einerseits übermäßigen Weißraum und andererseits unnötige Umbrüche verursacht.

Ein idealer Fall für die neue automatische Größenanpassung. Während Sie früher die Spaltenbreiten manuell angepasst hätten, bis Sie eine sinnvolle Anpassung gefunden hätten, können Sie sich nun darauf verlassen, dass List & Label die richtige Entscheidung für Sie trifft. Basierend auf dem tatsächlichen Inhalt. Aufgrund der Natur dieses Features erfordert es, dass sich ein Datenprovider frei durch die Daten bewegen kann, d.h. es wird für .NET, Delphi und C++ unterstützt, wenn Sie die verfügbaren Datenproviderimplementierungen verwenden.

Es ist sehr einfach, die neue Funktion zu nutzen. Stellen Sie einfach die Spaltenbreiten auf "0", um anzugeben, dass Sie die automatische Größenänderung verwenden möchten:


Wenn Sie alles auf Standard belassen, sieht das Ergebnis so aus...


was schon ziemlich gut ist. Die verfügbaren Einstellungen für die automatische Größenanpassung ermöglichen eine Feinabstimmung des Verhaltens:

Einstellungen Zweck
Mindestbreite Legen Sie die Mindestbreite fest, die verwendet werden soll, auch wenn der Inhalt dies nicht erfordern würde.
Maximalbreite Legen Sie die maximale Breite fest, die verwendet werden soll, auch wenn der Inhalt tatsächlich breiter ist.
Wichtung Diese Einstellung bestimmt das Weißraum-Verhältnis, d.h., zu welchem Anteil der Weißraum hinzugefügt werden soll (oder - wenn die aggregierten Spaltenbreiten größer als die Tabellenbreite sind - um welchen Anteil die Breite verringert werden soll).


Die letzte Einstellung ist hier etwas knifflig - als Beispiel verwenden wir "0" als Wichtung für die erste Spalte, "2" für die zweite und "1" für die dritte. Das Ergebnis ist dann


Die erste Spalte wird dann optimal eingepasst (d.h. die Wichtung "0"), während die zweite Spalte verglichen mit der dritten die doppelte Menge an Weißraum erhält. Viele Möglichkeiten für die Experten, während die Standardeinstellungen in aller Regel schon sehr gut funktionieren.




Autor: Jochen Bartlau
Entwicklungsleiter List & Label

Jochen Bartlau leitet als Geschäftsführer die Softwareentwicklung bei combit. Microsoft .NET und Agiles Projektmanagement sind zwei seiner Steckenpferde. Der technikbegeisterte Physiker verbringt seine Freizeit am liebsten mit seiner Familie.


  


Kommentare


combit - Jochen Bartlau
Auf vielfachen Wunsch wird der Wert mit dem das Feature in LL25 aktiviert wird Null(), nicht "0" sein.
16.09.2019 09:13:39

combit - Jochen Bartlau
Hallo Herr Steinblock,

Danke für die Idee :) - ja, vielleicht könnte man beide Funktionen miteinander "verheiraten". Die Wichtung so wie sie im neuen Feature funktioniert verteilt den überflüssigen Weißraum, man müsste das dann von der eigentlichen Breite entkoppeln. Gerne können Sie den Vorschlag auch in unser Featureportal unter https://forum.combit.net/c/idea-place eintragen - oder ich mache das für Sie, ein kurzer Hinweis genügt.
14.08.2019 11:57:41

Jürgen Steinblock
Sehr interessante Funktion,

Ich arbeite bisher immer mit Formeln um eine relativ flexible Anordnung inkl. Gewichtung zu erreichen.

@Prozent.Spalte1 = 15
@Prozent.Spalte2 = 25
@Prozent.Spalte3 = 100 - @Prozent.Spalte1 - @Prozent.Spalte2

Bei den Spaltenbreiten dann:

TableWidth() * (@Prozent.Spalte1 / 100)
TableWidth() * (@Prozent.Spalte2 / 100)
TableWidth() * (@Prozent.Spalte3 / 100)


Wenn ich dann beim Berichtscontainer bei der Position

Links = LL.Device.PrintableArea.Offset.cx
Breite = LL.Device.PrintableArea.Size.cx

angebe, passt sich der Report so dynamisch an Hochformat/Querformat an.

Es wäre schön, wenn es in Zukunft möglich wäre bei allen Spalten eine Gewichtung anzugeben (z.B. Spalte 1 = 0.15, Spalte 2 = 0.25, Spalte 3 = 0 (entspricht Rest)) und somit das gleiche zu erreichen.
14.08.2019 11:36:46


Ergänzen Sie hier Ihren Kommentar
 
 
 
 
 

Lassen Sie sich über neue Kommentare zu diesem Blogbeitrag informieren


 
+49 (0) 7531 90 60 10