Lieferschein mit Sets und Bildern
Aus GEVITAS
Inhaltsverzeichnis
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:
(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
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
5 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;
6 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;
7 Standard-Reports