Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Memofelder in Fastreport
mira - Mi 06.03.13 13:48
Titel: Memofelder in Fastreport
Gute Tag,
ich brauch mal wieder Hilfe.
Ich arbeite mit Delpie XE und Fastreport 4
Ich möchte ein Rechnungsformular drucken. Das funktioniert schon.
Der Druck soll aber 3 fach erfolgen mit einem Vermerk "Original, Kopie 1, Kopie 2"
Ich wollte dazu ein Memofeld anlegen und den Text aus dem Programm zuweisen.
Wie kann ich das machen?
Danke im Voraus!
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Do 07.03.2013 um 00:18
alex517 - Mi 06.03.13 16:42
Hi,
In DeinePage.PageCount stellst du die Anzahl der zu druckenden Exemplare ein.
Für den Vermerk "Original, Kopie 1, Kopie 2" kenne ich keine direkte Funktion.
Aber mit <Page#> und <Totalpages> (auf das # achten) kann man es berechnen.
Ich habe jetzt allerdings nicht geprüft was passiert wenn man zwischen durch
die Seitenzählung zurücksetzt.
Im MemoView.Text muss stehen
Quelltext
1:
| [IIF(Engine.FinalPass, IIF((<Page#>-1) div <TotalPages> = 0, 'Orgiginal', 'Kopie ' + IntToStr((<Page#>-1) div <TotalPages>) ))] |
Wenn du eine gekaufte Version von Fastreport hast, geht es auch übersichtlicher mit Hilfe des Scripts im OnBeforePrint-Events.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure Memo44OnBeforePrint(Sender: TfrxComponent); var c: Integer; begin if Engine.FinalPass then begin c := (<Page#>-1) div <TotalPages>; if c = 0 then TfrxMemoView(Sender).Text := 'Original' else TfrxMemoView(Sender).Text := 'Kopie ' + InttoStr(c); end; end; |
alex
mira - Mi 06.03.13 20:41
Guten Abend und Danke für die schnelle Reaktion.
Ich wollte es eigentlich viel "primitiver" lösen.
Der Benutzer sollte in Programm drei Button bekommen.
"Drucke Originalrechung" mit dem Ergebnis, das im Memofeld "Origanlrechung" steht,
"Drucke Rechnungskopie 1" .................................."Kundenexemplar".....,
"Drucke Rechnungskopie 2" .................................."Für Buchhaltung".... .
Dann kann der Benutzer wählen ob er die ...oder die ...oder...drucken will..
Ich habe das schon mal realisiert, in dem ich drei Formulare erzeugt habe, und ein Memofeld mit "festem" Inhalt eingebaut habe. Dann wird:
mit Button 1 frxReport1.PrepareReport();
frxReport1.ShowPreparedReport;
mit Button 2 frxReport2.PrepareReport();
frxReport2.Print;
usw. je ein Ausdruck erzeugt mit der gewünschten Rechnungsbezeichnung.
Wenn am Formular was geändert werden muss, muss das in allen drei Formularen erfolgen, umständlich!!! oder?
Habe ich das für Euch verständlich geschildert?
Ich habe auch oft das Problem, das ein Kunde mir nicht präzise Angaben machen kann,
und ich eigentlich nicht weiss was er meint.....
Ich weiss mir fehlen grundlegende Kenntnisse, aber mir fehlt Zeit, das Projekt muss realisiert werden.
Geringe finanzielle Mittel für Hilfe zur Realisierung stehen zur Verfügung....
Andreas Schilling - Do 07.03.13 08:15
Die Lösung sind Variablen. Im Fastreport unter "Report --> variables" eine Variable anlegen z.B. mit dem Namen "Kopftext". Dann setze eine Textkomponente auf das Formular, bearbeite es und hole über die Registerkarte "Text" un den Button "Insert Expression" und im neuen Dialog über "Variables" die Variable in die Komponente. Es sollte da jetzt "[Kopftext]" stehen. Gefüllt wird die Variable über Delphi mit
Delphi-Quelltext
1:
| frxReport1.Variables['Kopftext'] := quotedstr('Originalrechnung'); |
Gruß ANdreas
mira - Do 07.03.13 09:27
Guten Morgen in die Runde und besonders Andreas!!!
Die Lösung funktioniert auf Anhieb.
Klar und einfach geschildert.
Super gemacht.
DANKE (bis zum nächsten Problem)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!