Autor Beitrag
mira
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22

WIN 7 prof. 64bit
Delphi XE
BeitragVerfasst: Mi 06.03.13 13:48 
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 user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Do 07.03.2013 um 00:18
alex517
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 60


D7Ent, FB, FIBPlus
BeitragVerfasst: 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
ausblenden 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.

ausblenden 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#>-1div <TotalPages>;
    if c = 0 then 
      TfrxMemoView(Sender).Text := 'Original'
    else                
      TfrxMemoView(Sender).Text := 'Kopie ' + InttoStr(c);
  end;            
end;



alex
mira Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22

WIN 7 prof. 64bit
Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 1

WIN XP, WIN 7
Delphi 5 Ent, Delphi 2007 Pro, XE4
BeitragVerfasst: 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
ausblenden Delphi-Quelltext
1:
  frxReport1.Variables['Kopftext'] := quotedstr('Originalrechnung');					


Gruß ANdreas
mira Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22

WIN 7 prof. 64bit
Delphi XE
BeitragVerfasst: 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)