Lieferschein mit Sets und Bildern: Unterschied zwischen den Versionen

Aus GEVITAS
Zur Navigation springen Zur Suche springen
Zeile 44: Zeile 44:
== Das Ereignis OnBeforePrint ==
== Das Ereignis OnBeforePrint ==


 
Damit der Report die gewünschten Bänder ein- bzw. ausschalten kann, wird dieses Ereignis verwendet:


[[Datei:LieferscheinSetsUndBilder_03Ereigniss.png]]
[[Datei:LieferscheinSetsUndBilder_03Ereigniss.png]]


Es wird ausgelöst, '''bevor''' das Detail-Band gedruckt (also auch angezeigt, exportiert usw.) wird.
Somit kann man per Code reagieren, um die gewünschten Effekte zu erreichen.


== Der Code dazu ==
== Der Code dazu ==

Version vom 23. November 2020, 08:29 Uhr

Allgemeines

Hier wird die Verwendung eines Reports für einen Lieferschein beschrieben, der Sets besonders hervorheben soll und Artikel-Bilder anzeigt.


Ergebnis

So soll der Lieferschein aussehen:

(1) Position mit dem Set-Häuptling in Fettschrift

(2) Position mit den Set-Positionen eingerückt nicht fett

(3) Position ohne Set nicht eingerückt, nicht fett

(4) Artikel-Bilder


Der Report dazu


Beschreibung der Bänder (Bereiche):

MasterData1
Kopf des Lieferscheins mit Lieferschein- und Auftragsdaten, wie Empfänger, Produktion (Veranstaltung) und die Überschrift für die Postionen.
DetailData1
Positionen des Lieferscheins mit Positionsnummer, Menge, Bezeichnung und Inventar-Nummer.
Per Code (s.u.) wird dieses Band ausgeschaltet, wenn es sich um eine Set-Unterposition handelt. In diesem Fall wird das Child-Band "ChildDetailSetpos" eingeschaltet, das sonst unsichtbar ist.
ChildDetailSetpos
Wenn die Position eine Set-Unterposition ist, wird hier eingerückt Positionsnummer, Menge, Bezeichnung und Inventar-Nummer ausgegeben.
Per Code (s.u.) wird dieses Band ausgeschaltet, wenn es sich um eine "normale" Position handelt. In diesem Fall wird das Band "DetailData1" eingeschaltet.
SubdetailData1
Hier wird ein Artikel-Bild angezeigt, wenn es ein Bild bei dem Artikel gibt.
Per Code (s.u.) wird dieses Band nur dann eingeschaltet, wenn es ein Bild zu dem Artikel gibt.

Das Ereignis OnBeforePrint

Damit der Report die gewünschten Bänder ein- bzw. ausschalten kann, wird dieses Ereignis verwendet:

Es wird ausgelöst, bevor das Detail-Band gedruckt (also auch angezeigt, exportiert usw.) wird. Somit kann man per Code reagieren, um die gewünschten Effekte zu erreichen.

Der Code dazu

procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
begin
 // Erst mal Grundstellung für alles, was unten verändert werden kann:                                                                                                                                                            
 DetailData1.Visible := True;
 ChildDetailSetPos.Visible := False;
 memoLieferscheinPositionenBezeichnung.Font.Style := 0;
 // Besonderheiten bei Set's:
 if <AuftrPosZuLieferschPos."SetNr"> > 0 then
 begin
   // Position kommt aus einem Set! Schrift in Fett:                                     
   if StrToInt( <AuftrPosZuLieferschPos."SetNrHauptArtikel"> ) > 0 then
   begin
     // Es ist der Hauptartikel des Set's:
     memoLieferscheinPositionenBezeichnung.Font.Style := fsBold; // Fett                  
   end
   else
   begin
     // Es ist NICHT der Hauptartikel des Set's:
     DetailData1.Visible := False;       // Das eigentliche Detail-Band ausschalten. Dazu Option "Child drucken wenn unsichtbar!" einschalten!                                                                                                                                                                                                                                      
     ChildDetailSetPos.Visible := True;  // Das Child-Band mit den Einrückungen einschalten.                                                                                                                
   end;
 end;
end;


Die Bilder

Auf dem Band liegt eine Image-Komponente, die mit diesem Code versehen ist:


procedure SubdetailData1OnBeforePrint(Sender: TfrxComponent);
begin
 if <ArtikelBild."DateiName"> >  then
 begin
   if ( Pos( '.JPG',Uppercase(<ArtikelBild."DateiName">) ) > 0 )
   or ( Pos( '.JPEG',Uppercase(<ArtikelBild."DateiName">) ) > 0 )
   or ( Pos( '.PNG',Uppercase(<ArtikelBild."DateiName">) ) > 0 )
   or ( Pos( '.BMP',Uppercase(<ArtikelBild."DateiName">) ) > 0 )
   or ( Pos( '.WMF',Uppercase(<ArtikelBild."DateiName">) ) > 0 )
   or ( Pos( '.EMF',Uppercase(<ArtikelBild."DateiName">) ) > 0 )
   or ( Pos( '.ICO',Uppercase(<ArtikelBild."DateiName">) ) > 0 ) then
      PictureArtikel.Picture.LoadFromFile( trim(<ArtikelBild."Pfadname">) + trim(<ArtikelBild."Dateiname">) )
   else
     PictureArtikel.Picture := Nil;
 end
 else
   PictureArtikel.Picture := Nil;
end;

Standard-Reports