Mijn programma bestaat uit een X aantal MDIChild form's. Op bijna al die form's staan non data-aware ListView's, waarin de data getoond wordt.
Nu heeft ieder scherm de mogelijkheid om zijn data af te drukken. De ListView's staan allemaal ingesteld om Multi row select. Wanneer de gebruiker op afdrukken klikt, krijgt die het print dialog scherm te zien, waar als afdrukbereik gekozen kan worden voor: Alles, Selectie, Pagina's.
Ik heb een apart form (wat nooit zichtbaar is), waarop alle fastreport componenten staan (1 component per form dus).
Nu is de vraag hoe ik het beste technisch gezien die informatie op dat rapport kan krijgen. Nu doe ik het zo (beetje smerige methode):
Deze methode is dan ook alleen nog voor de optie: alles afdrukken.
Maar is het niet beter op 1 of andere manier om met een functie door te geven aan zo'n MDIChild form wat voor informatie er afgedrukt moet worden (Alles, selectie). Vervolgens stopt die alle benodigde informatie in een soort object, waarna dit object terug gegeven wordt aan het frm_Reports scherm (waar dus al die report componenten opstaan).
Wie weet er hoe je dit het beste aan kan pakken?
(Hoe het nu gaat werkt het wel, maar is volgens mij absoluut geen goede methode).
Nu heeft ieder scherm de mogelijkheid om zijn data af te drukken. De ListView's staan allemaal ingesteld om Multi row select. Wanneer de gebruiker op afdrukken klikt, krijgt die het print dialog scherm te zien, waar als afdrukbereik gekozen kan worden voor: Alles, Selectie, Pagina's.
Ik heb een apart form (wat nooit zichtbaar is), waarop alle fastreport componenten staan (1 component per form dus).
Nu is de vraag hoe ik het beste technisch gezien die informatie op dat rapport kan krijgen. Nu doe ik het zo (beetje smerige methode):
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| procedure Tfrm_Reports.fstrp_ArtikelVerpakkingGetValue(const ParName: String; var ParValue: Variant); begin if ParName = 'Afkorting' then ParValue := frm_ArtikelVerpakking.lstvw_Verpakkingen.Items[i].Caption; if ParName = 'Omschrijving' then ParValue := frm_ArtikelVerpakking.lstvw_Verpakkingen.Items[i].SubItems[0]; end; procedure Tfrm_Reports.frUserDataset1CheckEOF(Sender: TObject; var Eof: Boolean); begin if i <= frm_ArtikelVerpakking.lstvw_Verpakkingen.Items.Count - 1 then Eof := False else Eof := True; end; procedure Tfrm_Reports.frUserDataset1First(Sender: TObject); begin i := 0; end; procedure Tfrm_Reports.frUserDataset1Next(Sender: TObject); begin Inc(i); end; |
Deze methode is dan ook alleen nog voor de optie: alles afdrukken.
Maar is het niet beter op 1 of andere manier om met een functie door te geven aan zo'n MDIChild form wat voor informatie er afgedrukt moet worden (Alles, selectie). Vervolgens stopt die alle benodigde informatie in een soort object, waarna dit object terug gegeven wordt aan het frm_Reports scherm (waar dus al die report componenten opstaan).
Wie weet er hoe je dit het beste aan kan pakken?
(Hoe het nu gaat werkt het wel, maar is volgens mij absoluut geen goede methode).