Lieferschein mit Sets und Bildern: Unterschied zwischen den Versionen
(→Das Ereignis OnBeforePrint) |
(→Der Code dazu) |
||
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
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 85: | Zeile 89: | ||
end; | end; | ||
+ | |||
+ | Die Kommentare hinter "//" sollten eigentlich alles erklären! | ||
+ | |||
+ | ;Wichtig 1: Dataset im Report | ||
+ | *Das Dataset (die Tabelle) "AuftrPosZuLieferschPos" muss im Report aktiviert sein! | ||
+ | :Das geht über das Menü "Report ⇒ Daten" | ||
+ | :Dort dann das Häkchen bei "AuftrPosZuLieferschPos" setzen. | ||
+ | *Wenn "AuftrPosZuLieferschPos" nicht in der Liste steht: | ||
+ | :*Report-Vorschau einmal starten. | ||
+ | :*Dann steht das Dataset in der Liste. | ||
+ | |||
+ | ;Wichtig 2: Sortierung | ||
+ | *Damit die Positionen in der richtigen Reihenfolge stehen, muss die Sortierung im Druckfenster auf "Lieferschein-Positionen" stehen! | ||
+ | *Wenn dort z.B. "Artikelgruppen" ausgewählt wurde, stehen die Positionen der Sets in der falschen Reihenfolge und werden scheinbar willkürlich eingerückt! | ||
== Die Bilder == | == Die Bilder == | ||
− | Auf dem Band liegt eine Image-Komponente, | + | Auf dem Band liegt eine Image-Komponente auf einem Band, das mit diesem Code bei dem Ereignis "OnBeforePrint" versehen ist: |
+ | |||
Zeile 109: | Zeile 128: | ||
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. | ||
+ | |||
+ | ;Wozu das Ganze? | ||
+ | :Dieser Code soll sicherstellen, dass nur Datei-Typen in die Picture-Komponente geladen werden, diese diese auch anzeigen kann. Ist z.B. eine PDF-Datei hinterlegt, kann diese nicht als Bild angezeigt werden! | ||
+ | |||
+ | ;Hinweis: | ||
+ | :Ein Bild-Verweis in den Artikelstammdaten wird hier nur verwendet, wenn die Option (Datenbank-Feld "MArtBild.BildKennz") eingeschaltet ist! | ||
+ | |||
+ | |||
+ | ;[[GEVAS-Professional]] | ||
+ | :[[Datei:LieferscheinSetsUndBilder_04ArtStammBsp.png]] | ||
+ | |||
+ | |||
+ | ;[[REFLEX]] | ||
+ | :[[Datei:LieferscheinSetsUndBilder_04ArtStammBspRx.png]] | ||
== Standard-Reports == | == Standard-Reports == |
Aktuelle Version vom 25. November 2020, 10:20 Uhr
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
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.
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!
- Wichtig 1
- Dataset im Report
- Das Dataset (die Tabelle) "AuftrPosZuLieferschPos" muss im Report aktiviert sein!
- Das geht über das Menü "Report ⇒ Daten"
- Dort dann das Häkchen bei "AuftrPosZuLieferschPos" setzen.
- Wenn "AuftrPosZuLieferschPos" nicht in der Liste steht:
- Report-Vorschau einmal starten.
- Dann steht das Dataset in der Liste.
- Wichtig 2
- Sortierung
- Damit die Positionen in der richtigen Reihenfolge stehen, muss die Sortierung im Druckfenster auf "Lieferschein-Positionen" stehen!
- Wenn dort z.B. "Artikelgruppen" ausgewählt wurde, stehen die Positionen der Sets in der falschen Reihenfolge und werden scheinbar willkürlich eingerückt!
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.
- Wozu das Ganze?
- Dieser Code soll sicherstellen, dass nur Datei-Typen in die Picture-Komponente geladen werden, diese diese auch anzeigen kann. Ist z.B. eine PDF-Datei hinterlegt, kann diese nicht als Bild angezeigt werden!
- Hinweis
- Ein Bild-Verweis in den Artikelstammdaten wird hier nur verwendet, wenn die Option (Datenbank-Feld "MArtBild.BildKennz") eingeschaltet ist!
7 Standard-Reports