Grafiken einbinden

Aus LexWIKI

Wechseln zu: Navigation, Suche

Das Einbinden zusätzlicher Grafiken/Logos in die Formulare ist keine einfache Aufgabe. Ich möchte es hier am Beispiel eines Kunden von mir zeigen. Natürlich sind die Kundennamen anonymisiert. Zuerst werden die Logos und ihre Dimensionen angelegt. Dabei sollte man sich an die Lexwarevorgabe halten damit keinen Wert vergisst:

  1. Pfad zur Datei
  2. Position des Logos vom linken Papierrand (!)
  3. Position des Logos vom oberen Papierrand (!)
  4. Breite des Logos
  5. Höhe des Logos

Bei der Eingabe des Pfadnamens ist auf die Anführungszeichen und die doppelten Backslash "\\" zu achten. Auch ist es sinnvoll, die eigenen Dateien in einem eigenen Ordner vorzuhalten.

Bei der Auflösung der Dateien sollte man diese in der Standardauflösung des Druckers vorliegen haben, damit dieser die Bilder nicht nochmal skalieren muss, was zu einer Verschlechterung der Qualität führt.

Im nachfolgenden Beispiel werden 6 (Sechs) Logos eingebunden, die in Abhängigkeit von der getroffenen Auftragsart dann später angedruckt werden.

' FirmaXXX Logos == ANFANG
'Logo für 1. Seite **************************************************************************
Dim sFirmaXXXLogo1       as string  =    "L:\\Formulare\\Grafiken\\briefkopf_FirmaXXX.bmp"
Dim nFirmaXXXLogo1Links   as numeric =    1.00 cm
Dim nFirmaXXXLogo1Oben   as numeric =    1.00 cm
Dim nFirmaXXXLogo1Breite as numeric =   18.70 cm
Dim nFirmaXXXLogo1Hoehe  as numeric =    2.51 cm
'Logo für Seite 2 ff... **********************************************************************
Dim sFirmaXXXLogo2       as string  =    "L:\\Formulare\\Grafiken\\briefkopf_seite2_FirmaXXX.bmp"
Dim nFirmaXXXLogo2Links  as numeric =    1.00 cm
Dim nFirmaXXXLogo2Oben   as numeric =    1.00 cm
Dim nFirmaXXXLogo2Breite as numeric =   18.70 cm
Dim nFirmaXXXLogo2Hoehe  as numeric =    0.70 cm
'Buchhaltungsmarker ***********************************************************************
Dim sFirmaXXX_KSGB       as string  =    "L:\\Formulare\\Grafiken\\ks_gb.bmp"
Dim nFirmaXXX_KSGBLinks  as numeric =   16.00 cm
Dim nFirmaXXX_KSGBOben   as numeric =    4.00 cm
Dim nFirmaXXX_KSGBBreite as numeric =    4.00 cm
Dim nFirmaXXX_KSGBHoehe  as numeric =    3.00 cm
'Kundenkopie *****************************************************************************
Dim sFirmaXXX_KKP        as string  =   "L:\\Formulare\\Grafiken\\Kundenakte.bmp"
Dim nFirmaXXX_KKPLinks   as numeric =   16.00 cm
Dim nFirmaXXX_KKPOben    as numeric =    3.40 cm
Dim nFirmaXXX_KKPBreite  as numeric =    4.00 cm
Dim nFirmaXXX_KKPHoehe   as numeric =    3.00 cm
'Rohgewinn  *****************************************************************************
Dim sFirmaXXX_EKVK       as string  =   "L:\\Formulare\\Grafiken\\EK_VK.bmp"
Dim nFirmaXXX_EKVKLinks  as numeric =   16.00 cm
Dim nFirmaXXX_EKVKOben   as numeric =    3.40 cm
Dim nFirmaXXX_EKVKBreite as numeric =    4.00 cm
Dim nFirmaXXX_EKVKHoehe  as numeric =    3.00 cm
'Logo für die Bankverbindung ***************************************************************
Dim sFirmaXXXLogo3       as string  =   "L:\\Formulare\\Grafiken\\bankverb_FirmaXXX_farbe.bmp"
Dim nFirmaXXXLogo3Links  as numeric =    1.00 cm
Dim nFirmaXXXLogo3Oben   as numeric =   28.00 cm
Dim nFirmaXXXLogo3Breite as Numeric =   18.78 cm
Dim nFirmaXXXLogo3Hoehe  as numeric =    0.51 cm
'= FirmaXXX Logos == ENDE

Nachdem die Logos definiert wurden sollen sie jetzt natürlich auch noch angedruckt werden. Dazu muß man sie an den gewünschten Stellen in den Quelltext des Formulars einbinden und eventuell die Abfragen für die einzelnen Anzeigevarianten erzeugen oder abändern.


Als 1. Beispiel möchte ich hier das Banklogo anführen. Dazu wurde die Standarddatei lay_pro.lsf abgeändert

' Firmenlogo anzeigen, wenn ausgewählt
SetFormatNumericOptions(FN_CUSTOM, "","")
If bMitLogoAufSeite1 then
  DrawImage(nFirmenLogoLinks-nRandLinks, nFirmenLogoOben-nRandOben, nFirmenLogoBreite, nFirmenLogoHoehe, sFirmenLogoQuelle)
  ' Bankverbindung
  DrawImage(nFirmaXXXLogo3Links-nRandLinks, nFirmaXXXLogo3Oben-nRandOben, nFirmaXXXLogo3Breite, nFirmaXXXLogo3Hoehe, sFirmaXXXLogo3)
End If
If bMitLogo2AufSeite1 then
  DrawImage(nFirmenLogo2Links-nRandLinks, nFirmenLogo2Oben-nRandOben, nFirmenLogo2Breite, nFirmenLogo2Hoehe, sFirmenLogo2Quelle)
  ' Bankverbindung
  DrawImage(nFirmaXXXLogo3Links-nRandLinks, nFirmaXXXLogo3Oben-nRandOben, nFirmaXXXLogo3Breite, nFirmaXXXLogo3Hoehe, sFirmaXXXLogo3)
End If

Das ist insofern einfach, da es auf jeder Seite gedruckt wird. Es erfolgt also keine Auswahl ob 1. Seite oder Folgeseite.


Beim 2. Beispiel wurde die Datei lay_devi.lsf als Grundlage verwendet.

Beim Andruck des Buchhaltungsmarker ist das Ganze schon etwas anderes, da dieser nur auf der 2. von 3 Seiten gedruckt werden soll. Dazu waren dann nicht nur in der eigentlichen Druckroutine für den Auftrag Änderung erforderlich, sondern es mussten auch noch Änderungen in verschiedenen anderen Bereichen vorgenommen werden. Allerdings war anschließend mit diesem einen Formular der Ausdruck der folgenden Unterlagen möglich:

1) Kopie für den Kundenordner mit dem Eindruck "Kundenkopie"
2) Kopie mit dem Eindruck eines Buchhaltungsmarkers als Logo für die Vorkontierung

3a) Kopie mit den EK-VK-Preisen zur Ermittlung des Rohgewinns (beim Angebot)
3b) Kopie für die Kundenakten (bei der Rechnung)
' Firmenlogo anzeigen, wenn ausgewählt
SetFormatNumericOptions(FN_CUSTOM, "","")
If bMitLogoAufSeite1 then
  DrawImage(nFirmenLogoLinks-nRandLinks, nFirmenLogoOben-nRandOben, nFirmenLogoBreite, nFirmenLogoHoehe, sFirmenLogoQuelle)
  ' FirmaXXX KG 
  ' FirmaXXX Logo 1
  DrawImage(nFirmaXXXLogo1Links-nRandLinks, nFirmaXXXLogo1Oben-nRandOben, nFirmaXXXLogo1Breite, nFirmaXXXLogo1Hoehe, sFirmaXXXLogo1)
    if (i_FirmaXXX_KopieZaehler = 2) then
      ' Kundenkopie
      DrawImage(nFirmaXXX_KKPLinks-nRandLinks, nFirmaXXX_KKPOben-nRandOben, nFirmaXXX_KKPBreite, nFirmaXXX_KKPHoehe, sFirmaXXX_KKP)
    end if
    if (i_FirmaXXX_KopieZaehler = 3) then
      if ( IS(AUFTR_IST_AG) = true) then
        ' Rohgewinnermittlung
        DrawImage(nFirmaXXX_EKVKLinks-nRandLinks, nFirmaXXX_EKVKOben-nRandOben, nFirmaXXX_EKVKBreite, nFirmaXXX_EKVKHoehe, sFirmaXXX_EKVK)
      else
        'Buchungskopie
         DrawImage(nFirmaXXX_KSGBLinks-nRandLinks, nFirmaXXX_KSGBOben-nRandOben, nFirmaXXX_KSGBBreite, nFirmaXXX_KSGBHoehe, sFirmaXXX_KSGB)
      end if
    end if
    ' Bankverbindung
    DrawImage(nFirmaXXXLogo3Links-nRandLinks, nFirmaXXXLogo3Oben-nRandOben, nFirmaXXXLogo3Breite, nFirmaXXXLogo3Hoehe, sFirmaXXXLogo3)
    ' FirmaXXX KG
  End If
  If bMitLogo2AufSeite1 then
    DrawImage(nFirmenLogo2Links-nRandLinks, nFirmenLogo2Oben-nRandOben, nFirmenLogo2Breite, nFirmenLogo2Hoehe, sFirmenLogo2Quelle)
    ' FirmaXXX 
    ' FirmaXXX Logo 2
    DrawImage(nFirmaXXXLogo2Links-nRandLinks, nFirmaXXXLogo2Oben-nRandOben, nFirmaXXXLogo2Breite, nFirmaXXXLogo2Hoehe, sFirmaXXXLogo2)
    ' Bankverbindung
    DrawImage(nFirmaXXXLogo3Links-nRandLinks, nFirmaXXXLogo3Oben-nRandOben, nFirmaXXXLogo3Breite, nFirmaXXXLogo3Hoehe, sFirmaXXXLogo3)
    ' FirmaXXX KG 
End If

Eine einzelne Auswahl der zusätzlichen Logos über die Formularverwaltung ist nicht möglich, da man dort ja keine zusätzlichen Logos generieren kann.

Damit man die 3 aufeinanderfolgenden Formulare erhält, wurde auch noch ein Kopienzähler mit eingerichtet. Die Anleitung dazu findet man unter Kopienzähler.

Persönliche Werkzeuge
EIN KRANKENHAUS FÜR LOMIÉ - Der CEFOMEC e. V. sammelt Spenden, um in Lomié, im Süd-Osten Kameruns, ein Krankenhaus zu planen, bauen und zu betreiben. Bitte unterstützen Sie unser soziales Engagement und spenden Sie unter http://CEFOMEC.org/de/Spenden. Jede Spende hilft! Vielen Dank.