Lieferschein mit Sets und Bildern: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
(Das Ereignis OnBeforePrint)
Zeile 41: Zeile 41:
 
:Hier wird ein Artikel-Bild angezeigt, wenn es ein Bild bei dem Artikel gibt.
 
: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.
 
:Per Code (s.u.) wird dieses Band nur dann eingeschaltet, wenn es ein Bild zu dem Artikel gibt.
 +
  
 
== Das Ereignis OnBeforePrint ==
 
== Das Ereignis OnBeforePrint ==
Zeile 54: Zeile 55:
 
Es wird ausgelöst, '''bevor''' das Detail-Band gedruckt (also auch angezeigt, exportiert usw.) wird.
 
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.
 
Somit kann man per Code reagieren, um die gewünschten Effekte zu erreichen.
 +
 +
  
 
== Der Code dazu ==
 
== Der Code dazu ==
  
 +
Mit diesem Code wird das Ein- und Ausblenden der Bänder gesteuert:
  
  
Zeile 84: Zeile 88:
 
   end;
 
   end;
 
  end;
 
  end;
 +
 +
 +
Die Kommentare hinter "//" sollten eigentlich alles erklären!
 +
  
  
 
== Die Bilder ==
 
== Die Bilder ==
  
Auf dem Band liegt eine Image-Komponente, die mit diesem Code versehen ist:
+
Auf dem Band liegt eine Image-Komponente auf einem Band, das mit diesem Code bei dem Ereignis "OnBeforePrint" versehen ist:
 +
 
  
  
Zeile 109: Zeile 118:
 
     PictureArtikel.Picture := Nil;
 
     PictureArtikel.Picture := Nil;
 
  end;
 
  end;
 +
 +
 +
;if ( Pos( '.JPG',Uppercase(<ArtikelBild."DateiName">) ) > 0 )
 +
:"Pos" ist eine eingebaute Funktion, die in einem String (Text) nach einem anderen String sucht.
 +
:Wenn "Pos" größer als 0 ist, wurde der String gefunden!
 +
 +
;Uppercase()
 +
:wandelt den String in Großbuchstaben um.
 +
:Da die Datei-Erweiterungen im Code (".JPG" usw.) in Großbuchstaben angegeben sind, ist es unerheblich, ob die Dateinamen in Groß- oder Kleinbuchstaben stehen.
 +
 +
  
 
== Standard-Reports ==
 
== Standard-Reports ==

Version vom 23. November 2020, 10:37 Uhr

1 Allgemeines

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


2 Ergebnis

So soll der Lieferschein aussehen:

LieferscheinSetsUndBilder 01Bsp.png

(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


3 Der Report dazu

LieferscheinSetsUndBilder 02Report.png


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.


4 Das Ereignis OnBeforePrint

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


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.


5 Der Code dazu

Mit diesem Code wird das Ein- und Ausblenden der Bänder gesteuert:


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 Kommentare hinter "//" sollten eigentlich alles erklären!


6 Die Bilder

Auf dem Band liegt eine Image-Komponente auf einem Band, das mit diesem Code bei dem Ereignis "OnBeforePrint" 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;


if ( Pos( '.JPG',Uppercase(<ArtikelBild."DateiName">) ) > 0 )
"Pos" ist eine eingebaute Funktion, die in einem String (Text) nach einem anderen String sucht.
Wenn "Pos" größer als 0 ist, wurde der String gefunden!
Uppercase()
wandelt den String in Großbuchstaben um.
Da die Datei-Erweiterungen im Code (".JPG" usw.) in Großbuchstaben angegeben sind, ist es unerheblich, ob die Dateinamen in Groß- oder Kleinbuchstaben stehen.


7 Standard-Reports


8 Links