Voor een applicatie die ik aan het maken ben heb ik een print functie nodig. Vroeger outputte ik alle data dan naar een HTML pagina en kon je die via je browser printen. Dit gaf helaas de nodige problemen als er in een tekstvak bijvoorbeeld wat meer date stond. (rare overgangen van pagina's of te brede pagina's). Dit was allemaal wel te voorkomen door checks maar echt netjes was het niet.
Nu heb ik een programma met meerdere forms waarop data uit een database vermeld staat. Tijdens de 'loopbaan' van dit programma verwacht ik dat er meer forms gemaakt zullen worden, niet altijd door mijzelf.
Het is niet zo dat het programma zonder gehercompileerd te worden, of uberhaupt in Visual Studio geweest te zijn nieuwe forms kan gaan printen. Alle forms moeten nog netjes door een programmeur in elkaar gezet worden. Het hoeft dus niet extreem dynamisch maar het is natuurlijk wel handig als niet alles harcoded moet.
Om dit probleem op te lossen had ik zelf het idee om een soort van Layout en Anchor class te maken.
De Anchor class zou de volgende velden bevatten.
Nu denk ik dat het op deze manier wel gaat lukken, maar ik heb het idee dat dit slimmer kan, helaas kan ik niets vinden op google over "Efficient printing techniques" "Dynamic Printing", "Printing of variable data" (vaak dan nog ergens C# of programming erbij als zoekterm natuurlijk).
Ik vroeg me af of er een betere (overzichtelijkere) manier is, en/of er een manier is om dit nog meer dynamisch te doen, (Misschien via een aangepast flowlayout object) Verder zouden ook technieken om alles in elkaar te passen heel welkom zijn, of extra parameters die handig zouden zijn.
Nu heb ik een programma met meerdere forms waarop data uit een database vermeld staat. Tijdens de 'loopbaan' van dit programma verwacht ik dat er meer forms gemaakt zullen worden, niet altijd door mijzelf.
Het is niet zo dat het programma zonder gehercompileerd te worden, of uberhaupt in Visual Studio geweest te zijn nieuwe forms kan gaan printen. Alle forms moeten nog netjes door een programmeur in elkaar gezet worden. Het hoeft dus niet extreem dynamisch maar het is natuurlijk wel handig als niet alles harcoded moet.
Om dit probleem op te lossen had ik zelf het idee om een soort van Layout en Anchor class te maken.
De Anchor class zou de volgende velden bevatten.
- Control c; //het control zoals een tekstvak met data
- String descr; // een string voor een label dat bij het printen bij het control geplaatst wordt
- Enum descrPosition //Waar staat het label? Boven, Links, Rechts, Onder etc..
- Font fdescr; // font van de description
- Font f; //font van de data
- int x,y; // Positie op de pagina
- int maxWidth //Om te zorgen dat er gewordwrapped wordt en de pagina past.
- int rank; //Als hoeveelste control deze geplaatst moet worden (rank 0 komt op pagina 1 en rank 1 ook zolang het nog past op die pagina, etc..)
Nu denk ik dat het op deze manier wel gaat lukken, maar ik heb het idee dat dit slimmer kan, helaas kan ik niets vinden op google over "Efficient printing techniques" "Dynamic Printing", "Printing of variable data" (vaak dan nog ergens C# of programming erbij als zoekterm natuurlijk).
Ik vroeg me af of er een betere (overzichtelijkere) manier is, en/of er een manier is om dit nog meer dynamisch te doen, (Misschien via een aangepast flowlayout object) Verder zouden ook technieken om alles in elkaar te passen heel welkom zijn, of extra parameters die handig zouden zijn.