OBS/Makros und Scripting/Anwendungsbereiche/interaktive PDF: Unterschied zwischen den Versionen
Thiel (Diskussion | Beiträge) |
Thiel (Diskussion | Beiträge) |
||
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 8: | Zeile 8: | ||
Die ausgefüllten Daten können dann direkt in OBS importiert werden und erspart Ihnen eine manuelle Datenerfassung. | Die ausgefüllten Daten können dann direkt in OBS importiert werden und erspart Ihnen eine manuelle Datenerfassung. | ||
Eine Beschreibung inklusive Anwendungs-Beispiel von interaktiven PDF finden Sie unter: [[OBS/Interaktive PDF|Interaktive PDF]] | |||
==Besonderheiten PDF/A== | ==Besonderheiten PDF/A== | ||
PDF/A ist ein spezielles PDF Format zum langfristigen archivieren von Dokumenten. Dabei ist unter anderem die Unveränderbarkeit des Dokumentes sehr wichtig. | PDF/A ist ein spezielles PDF Format zum langfristigen archivieren von Dokumenten. Dabei ist unter anderem die Unveränderbarkeit des Dokumentes sehr wichtig. | ||
Diese Eigenschaft von PDF/A steht im direkten Kontrast zu interaktiven PDF und hat zur Folge, dass PDF/A interaktive Elemente nur zum teil oder gar nicht unterstützt. | Diese Eigenschaft von PDF/A steht im direkten Kontrast zu interaktiven PDF und hat zur Folge, dass PDF/A interaktive Elemente nur zum teil oder gar nicht unterstützt. | ||
Im besten Fall sollten für interaktive PDF die Formulare 001, 002, 003, 004 und 006 gemieden werden, da diese immer PDF/A erstellen. | |||
== Mögliche Steuerelemente == | == Mögliche Steuerelemente == | ||
Zeile 52: | Zeile 57: | ||
[[Datei:PDF Annot.png|rand]] | [[Datei:PDF Annot.png|rand]] | ||
=== Freihand Unterschriften === | |||
Im PDF gibt es kein Steuerelement, welches ein Freihand Unterschriften Feld definiert. | |||
Lediglich ein Steuerelement für eine Digitale Signatur ist möglich. | |||
Wenn Sie Freihand Unterschriften eines Kunden hinzufügen wollen, muss diese Funktion vom jeweiligen PDF-Viewer unterstützt werden. (z.B.: Adobe Acrobat Reader oder Xodo) | |||
== Erstellung über Druckdateien == | == Erstellung über Druckdateien == | ||
Zeile 195: | Zeile 208: | ||
* '''AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) ''' | * '''AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) ''' | ||
| | | | ||
* | * nDec: Anzahl der Nachkommastellen | ||
* | * sepStyle: Tausender Trennzeichen: | ||
** 0 = 10,000.20 | ** 0 = 10,000.20 | ||
** 1 = 10000.20 | ** 1 = 10000.20 | ||
Zeile 205: | Zeile 218: | ||
** 1 = minus, rot | ** 1 = minus, rot | ||
* | * currStyle: wird nicht verwendet | ||
* strCurrency: Währungssymbol | * strCurrency: Währungssymbol | ||
* | * bCurrencyPrepend prefix ("true') oder postfix ('false') | ||
|12,123.03€ | |12,123.03€ | ||
|AFNumber_Format(2, 0, 3, 0, "\u0024", true); | |AFNumber_Format(2, 0, 3, 0, "\u0024", true); | ||
Zeile 217: | Zeile 230: | ||
| | | | ||
* nDec: Anzahl der Nachkommastellen; | * nDec: Anzahl der Nachkommastellen; | ||
* | * sepStyle: Tausender Trennzeichen: | ||
** 0 = 10,000.20 | ** 0 = 10,000.20 | ||
** 1 = 10000.20 | ** 1 = 10000.20 | ||
Zeile 559: | Zeile 572: | ||
== Beispiele == | == Beispiele == | ||
=== Reparaturauftrag === | === Reparaturauftrag Beispiel 1 === | ||
[[Datei:Reparaturauftrag PDF Beispiel 1 .png|rand]] | |||
<syntaxhighlight lang="delphi" line="1"> | |||
... | |||
procedure Kopf(); | |||
var cBuffer : String; | |||
cLK : String; | |||
cOrt : String; | |||
cPLZ : String; | |||
cVorname : String; | |||
cName : String; | |||
cZusatz1 : String; | |||
cZusatz2 : String; | |||
cWhere : String; | |||
i : integer; | |||
oQRCode : TBitMap; | |||
nRunMater : Double; | |||
oValues : TFormFieldValue; | |||
qQuery : TxQuery; | |||
begin | |||
nRunMater := 7.5; | |||
//nRunMater := 5; | |||
with EZ do begin | |||
QRCode('OBSRA'+A_Query.A2C('a_nr'),-1,-1,3,oQRCode); | |||
qRep_BildPrint(EZ,oQRCode,'',qRep_SAnfang(EZ,'newM1'),80,80,qRep_Ypos(EZ,y+2.1)); | |||
oQRCode.Free; | |||
oValues := TFormFieldValue.Create(); | |||
qSetRepFontSize(EZ,iFontgroesse+2); | |||
qSetRepStyle(EZ,[fsBold]); | |||
qRep_Stext(EZ,'new5' ,'Dienstleistungsauftrag',qRep_Ypos(EZ,y+1.5)); | |||
qSetRepStyle(EZ,[]); | |||
qSetRepFontSize(EZ,iFontgroesse); | |||
qRep_Stext(EZ,'new5' ,'Auftragsnummer',qRep_Ypos(EZ,y+3.5)); | |||
qRep_Stext(EZ,'new5' ,'Kunden-Nr.' ,qRep_Ypos(EZ,y+4.5)); | |||
qRep_Stext(EZ,'new5' ,'Auftragsdatum' ,qRep_Ypos(EZ,y+5.5)); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y+3.5),': ' + A_Query.A2C('a_nr')); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y+4.5),': ' + A_Query.A2C('a_knr')); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y+5.5),': ' + A_Query.A2C('a_datum')); | |||
nUnterBox := y+7; | |||
qx_PrintRect(EZ,qRep_SAnfang(EZ,'new4')+77,qRep_Ypos(EZ,y+1),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+6.5),StrToInt(PMode_Var(600))); | |||
cBuffer := DB_ReadSQLValue(oDB,'S_ANRED','ar_name','ar_nr='+DB_SQLVal(A_Query.A2C('a_anrede'),'C')); | |||
if (not empty(cbuffer)) then begin | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cBuffer); | |||
y := y + 1; | |||
cBuffer := ''; | |||
end; | |||
cVorname := A_Query.A2C('a_vorname'); | |||
cName := A_Query.A2C('a_name'); | |||
if (not(empty(cVorname))) then begin | |||
cBuffer := cVorname + ' '; | |||
end; | |||
if (not(empty(cName))) then begin | |||
cBuffer := cBuffer + cName; | |||
end; | |||
if (not empty(cBuffer)) then begin | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cBuffer); | |||
y := y + 1; | |||
cBuffer := ''; | |||
end; | |||
cZusatz1 := A_Query.A2C('a_zusatz1'); | |||
cZusatz2 := A_Query.A2C('a_zusatz2'); | |||
if (not(empty(cZusatz1))) then begin | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cZusatz1); | |||
y := y + 1; | |||
end; | |||
if (not(empty(cZusatz2))) then begin | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cZusatz2); | |||
y := y + 1; | |||
end; | |||
cBuffer := A_Query.A2C('a_postf'); | |||
if (not empty(cBuffer)) then begin | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Postfach '+cBuffer); | |||
y := y + 2; | |||
cBuffer := ''; | |||
end else begin | |||
cBuffer := A_Query.A2C('a_strasse'); | |||
if (not empty(cBuffer)) then begin | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cBuffer); | |||
y := y + 2; | |||
cBuffer := ''; | |||
end; | |||
end; | |||
cLK := A_Query.A2C('a_LK'); | |||
cPLZ := A_Query.A2C('a_PLZ'); | |||
cOrt := A_Query.A2C('a_Ort'); | |||
if (not(empty(cLK))) then begin | |||
cBuffer := cLK + ' '; | |||
end; | |||
if (not(empty(cPLZ))) then begin | |||
cBuffer := cBuffer + cPLZ + ' '; | |||
end; | |||
if (not(empty(cOrt))) then begin | |||
cBuffer := cBuffer + cOrt; | |||
end; | |||
if (not empty(cBuffer)) then begin | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cBuffer); | |||
cBuffer := ''; | |||
y := y + 2; | |||
end; | |||
y := nUnterBox; | |||
if (not(empty(cZusatz1))) and (not(empty(cZusatz2))) then begin | |||
y := y + 2; | |||
end else if (not(empty(cZusatz1))) or (not(empty(cZusatz2))) then begin | |||
y := y + 1; | |||
end; | |||
cBuffer := DB_ReadSQLValue(oDB,'S_VERK','v_name','v_nr='+DB_SQLVal(A_Query.A2C('a_verk'),'C')); | |||
if (not empty(cbuffer)) then begin | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Sachbearbe.'); | |||
qRep_Stext(EZ,'2',':',qRep_Ypos(EZ,y)); | |||
qRep_Stext(EZ,'3',cBuffer,qRep_Ypos(EZ,y)); | |||
cBuffer := ''; | |||
end; | |||
y := y + 1.3; | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Gerät'); | |||
qRep_Stext(EZ,'2',':',qRep_Ypos(EZ,y)); | |||
qRep_Stext(EZ,'3',A_Query.A2C('a_gnr')+' '+A_Query.A2C('a_geraet'),qRep_Ypos(EZ,y)); | |||
y := y + 1; | |||
qRep_Stext(EZ,'3',A_Query.A2C('a_modell'),qRep_Ypos(EZ,y)); | |||
y := y + 1; | |||
if (A_Query.A2C('a_mwart') = '1') then begin | |||
qRep_Stext(EZ,'3','WARTUNGSVERTRAG',qRep_Ypos(EZ,y)); | |||
end; | |||
y := y + 1; | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Techniker'); | |||
qRep_Stext(EZ,'2',':',qRep_Ypos(EZ,y)); | |||
//Techniker | |||
cWhere := 'a_nr=' + DB_SQLVal(A_Query.A2C('a_nr')); | |||
cBuffer := DB_ReadSQLValue(oDB,'RAUFSTA','a_techni',cWhere); | |||
cWhere := 'm_nr=' + DB_SQLVal(cBuffer); | |||
cBuffer := DB_ReadSQLValue(oDB,'MITARB','m_vorname',cWhere); | |||
cBuffer := cBuffer + ' ' + DB_ReadSQLValue(oDB,'MITARB','m_name',cWhere); | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, '3'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'4')-50, qRep_Ypos(EZ, y+1))); | |||
cSQL := 'SELECT * FROM mitarb WHERE m_inaktiv <> "1" ORDER BY m_name'; | |||
if (DB_SOPen(oDB,cSQL,qQuery,False)) then begin | |||
i := 0; | |||
while (not qQuery.EOF) do begin | |||
if not empty(oValues.cBoxItems) then begin | |||
oValues.cBoxItems := oValues.cBoxItems + '|'; | |||
end; | |||
oValues.cBoxItems := oValues.cBoxItems + qQuery.A2C('m_vorname') + ' ' + qQuery.A2C('m_name'); | |||
if (cBuffer = qQuery.A2C('m_vorname') + ' ' + qQuery.A2C('m_name')) then begin | |||
oValues.nSelectedItemIndex := i; | |||
end; | |||
i := i + 1; | |||
qQuery.Next; | |||
end; | |||
end; | |||
DB_Close(qQuery); | |||
qRep_PDFFormFieldComboBox(EZ, 'Techniker', oValues); | |||
y := y + 1.2; | |||
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Störung'); | |||
qRep_Stext(EZ,'2',':',qRep_Ypos(EZ,y)); | |||
cBuffer := A_Query.A2C('a_stoer1'); | |||
if (not empty(cBuffer)) then begin | |||
qRep_Stext(EZ,'3',cBuffer,qRep_Ypos(EZ,y)); | |||
cBuffer := ''; | |||
nRunMater := nRunMater + 1; | |||
end; | |||
y := y + 1; | |||
cBuffer := A_Query.A2C('a_stoer2'); | |||
if (not empty(cBuffer)) then begin | |||
qRep_Stext(EZ,'3',cBuffer,qRep_Ypos(EZ,y)); | |||
cBuffer := ''; | |||
nRunMater := nRunMater + 1; | |||
end; | |||
y := y + 1; | |||
cBuffer := A_Query.A2C('a_stoer3'); | |||
if (not empty(cBuffer)) then begin | |||
qRep_Stext(EZ,'3',cBuffer,qRep_Ypos(EZ,y)); | |||
cBuffer := ''; | |||
nRunMater := nRunMater + 1; | |||
end; | |||
y := nUnterBox; | |||
if (not(empty(Alltrim(A_Query.A2C('a_anspr'))))) then begin | |||
qRep_Stext(EZ,'new5','Ansprechpart.',qRep_Ypos(EZ,y)); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_anspr')); | |||
end; | |||
y := y + 1; | |||
qRep_Stext(EZ,'new5','Telefon',qRep_Ypos(EZ,y)); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_tel1')); | |||
y := y + 1; | |||
qRep_Stext(EZ,'new5','Serien-Nr',qRep_Ypos(EZ,y)); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_sernr')); | |||
y := y + 1; | |||
if (not(empty(Alltrim(A_Query.A2c('a_terminstr'))))) then begin | |||
qRep_Stext(EZ,'new5','Termin',qRep_Ypos(EZ,y)); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_terminstr')); | |||
end else begin | |||
if (not(empty(Alltrim(A_Query.A2C('a_termin'))))) then begin | |||
qRep_Stext(EZ,'new5','Termin',qRep_Ypos(EZ,y)); | |||
if ((not(empty(Alltrim(A_Query.A2C('a_zeit'))))) and (Alltrim(A_Query.A2C('a_zeit')) <> ':')) then begin | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_termin')+' / '+A_Query.A2C('a_zeit')); | |||
end else begin | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_termin')); | |||
end; | |||
end; | |||
end; | |||
myFreeandNil(oValues); | |||
y := nUnterBox + nRunMater; | |||
end; | |||
end; | |||
//------------------------------------------------------------------ | |||
procedure Material(); | |||
var nZeile : Integer; | |||
nInc : Double; | |||
oValues : TFormFieldValue; | |||
begin | |||
oValues := TFormFieldValue.Create(); | |||
qSetRepStyle(EZ,[fsBold]); | |||
qRep_Stext(EZ,'newL','Material',qRep_Ypos(EZ,y)); | |||
qSetRepStyle(EZ,[]); | |||
y := y + 1; | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y),'Artikelnr.'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y),'Artikelnr.'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')+3,qRep_YPos(Ez,y),'Bezeichnung'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new5')+3,qRep_YPos(Ez,y),'Bezeichnung'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')+3,qRep_YPos(Ez,y),'Menge'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')+3,qRep_YPos(Ez,y),'Menge'); | |||
nInc := MATERIAL_ZEILEN * 1.3 + 1; | |||
for nZeile := 1 to MATERIAL_ZEILEN do begin | |||
y := y + 1.3; | |||
//Artikelnr | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'newL'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new2')-20, qRep_Ypos(EZ, y+1))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldEdit(EZ, 'ArtNr' + aStr(nZeile), oValues); | |||
//Bezeichnung | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new3')-20, qRep_Ypos(EZ, y+1))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldEdit(EZ, 'Bezeichnung' + aStr(nZeile), oValues); | |||
//Menge | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new3'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'newM2')-20, qRep_Ypos(EZ, y+1))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldNumEdit(EZ, 'Menge' + aStr(nZeile), oValues); | |||
//Artikelnr | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'newM2'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new5')-20, qRep_Ypos(EZ, y+1))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldEdit(EZ, 'ArtNr' + aStr(nZeile + 7), oValues); | |||
//Bezeichnung | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new5'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new6')-20, qRep_Ypos(EZ, y+1))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldEdit(EZ, 'Bezeichnung' + aStr(nZeile + 7), oValues); | |||
//Menge | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6'), qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y+1))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldNumEdit(EZ, 'Menge' + aStr(nZeile + 7), oValues); | |||
end; | |||
y := y +1; | |||
myFreeandNil(oValues); | |||
end; | |||
//------------------------------------------------------------------ | |||
procedure Stunden(); | |||
var nZeile : Integer; | |||
nInc : Double; | |||
oValues : TFormFieldValue; | |||
begin | |||
oValues := TFormFieldValue.Create(); | |||
y := y + 1; | |||
qSetRepStyle(EZ,[fsBold]); | |||
qRep_Stext(EZ,'newL','Ausgeführte Tätigkeiten',qRep_Ypos(EZ,y-0.5)); | |||
qSetRepStyle(EZ,[]); | |||
y := y + 0.5; | |||
//MultiLine | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'newL'), qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y+7.5))); | |||
oValues.cValue := 'Hier ausgeführte Arbeiten erfassen'; | |||
oValues.lIsMultiline := True; | |||
qRep_PDFFormFieldEdit(EZ, 'RepText', oValues); | |||
myFreeandNil(oValues); | |||
y := y + 7.5; | |||
end; | |||
//------------------------------------------------------------------ | |||
procedure Fuss(); | |||
var cBuffer : String; | |||
iZeilen : Integer; | |||
i : Integer; | |||
nYtmp : Double; | |||
cResultVor : String; | |||
oValues : TFormFieldValue; | |||
begin | |||
oValues := TFormFieldValue.Create(); | |||
qx_PrintRect(EZ,qRep_SAnfang(EZ,'newL'),qRep_Ypos(EZ,y+1),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+8),StrToInt(PMode_Var(600))); | |||
y := y + 1.5; | |||
//Links | |||
qSetRepStyle(EZ,[fsBold]); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y),'VDE-Prüfung'); | |||
qSetRepStyle(EZ,[]); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')-5,qRep_YPos(Ez,y),'nach DIN VDE 0701-0702 durchgeführt'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+1.3),'1. Sichtprüfung i.O.'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+2.6),'3. Isolationswiderstand'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+3.9),'5. Berührungsstrom' ); | |||
qSetRepFontSize(EZ,iFontgroesse-4); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')+27,qRep_YPos(Ez,y+4.2),'Diff / Dir / EA'); | |||
qSetRepFontSize(EZ,iFontgroesse); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+5.2),'Prüfung bestanden' ); | |||
//Links J/N | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')-75,qRep_YPos(Ez,y+1.3),'ja nein' ); | |||
oValues.Reset(); | |||
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new3')-100, qRep_Ypos(EZ,y+1.3)+1, qRep_SAnfang(EZ,'new3') -88, qRep_Ypos(EZ,y+2.3)-2)); | |||
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new3')-50, qRep_Ypos(EZ,y+1.3)+1, qRep_SAnfang(EZ,'new3') - 38, qRep_Ypos(EZ,y+2.3)-2)); | |||
oValues.lAtleastOneSelectedItem := False; | |||
qRep_PDFFormFieldRadioButton(EZ, 'Sichtpruefung', oValues); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')-75,qRep_YPos(Ez,y+2.6),'_______ MOhm' ); | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new3')-75, qRep_Ypos(EZ, y+2.6), qRep_SAnfang(EZ, 'new3')-25, qRep_Ypos(EZ, y+3.6))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldEdit(EZ, 'Isolationswiderstand', oValues); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')-75,qRep_YPos(Ez,y+3.9),'_______ mA' ); | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new3')-75, qRep_Ypos(EZ, y+3.9), qRep_SAnfang(EZ, 'new3')-25, qRep_Ypos(EZ, y+4.9))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldEdit(EZ, 'Beruehrungsstrom', oValues); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')-75,qRep_YPos(Ez,y+5.2),'ja nein -> Gerät nicht in Betrieb nehmen!' ); | |||
oValues.Reset(); | |||
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new3')-100, qRep_Ypos(EZ,y+5.2)+1, qRep_SAnfang(EZ,'new3') -88, qRep_Ypos(EZ,y+6.2)-2)); | |||
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new3')-50, qRep_Ypos(EZ,y+5.2)+1, qRep_SAnfang(EZ,'new3') - 38, qRep_Ypos(EZ,y+6.2)-2)); | |||
oValues.lAtleastOneSelectedItem := False; | |||
qRep_PDFFormFieldRadioButton(EZ, 'Bestanden', oValues); | |||
//Rechts | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y),'ja nein' ); | |||
oValues.Reset(); | |||
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'newM2')-20, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'newM2') -8, qRep_Ypos(EZ,y+1)-2)); | |||
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'newM2')+30, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'newM2') +42, qRep_Ypos(EZ,y+1)-2)); | |||
oValues.lAtleastOneSelectedItem := False; | |||
qRep_PDFFormFieldRadioButton(EZ, 'VDE_Pruefung', oValues); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+1.3),'2. Schutzleiterwiderstand'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+2.6),'4. Schutzleiterstrom'); | |||
qSetRepFontSize(EZ,iFontgroesse-4); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new5')+30,qRep_YPos(Ez,y+2.9),'Diff / Dir / EA'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+4.2),'Messgerät BENNING ST 720 Ser.Nr.: 05F-0198 13F-0975 46G-0253 13F-0970'); | |||
qSetRepFontSize(EZ,iFontgroesse); | |||
//Rechts J/N | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')-75,qRep_YPos(Ez,y+1.3),'_______ Ohm'); | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6')-75, qRep_Ypos(EZ, y+1.3), qRep_SAnfang(EZ, 'new6')-25, qRep_Ypos(EZ, y+2.3))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldEdit(EZ, 'Schutzleiterwiderstand', oValues); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')-75,qRep_YPos(Ez,y+2.6),'_______ mA'); | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6')-75, qRep_Ypos(EZ, y+2.6), qRep_SAnfang(EZ, 'new6')-25, qRep_Ypos(EZ, y+3.6))); | |||
oValues.cValue := ''; | |||
oValues.lIsMultiline := False; | |||
qRep_PDFFormFieldEdit(EZ, 'Schutzleiterstrom', oValues); | |||
y := y + 7.5; | |||
qx_PrintRect(EZ,qRep_SAnfang(EZ,'newL'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+3),StrToInt(PMode_Var(600))); | |||
y := y + 0.5; | |||
//Links | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y),'Wegezeit' ); | |||
//Wegezeit | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+60, qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new2')+100, qRep_Ypos(EZ, y+1))); | |||
oValues.cJavaScript := 'AFTime_Format\(0\);'; | |||
oValues.cJavaScriptK := 'AFTime_KeyStroke\(0\);'; | |||
oValues.cValue := '00:00'; | |||
qRep_PDFFormFieldTimeEdit(EZ, 'WegezeitVon', oValues); | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+130, qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new2')+170, qRep_Ypos(EZ, y+1))); | |||
oValues.cJavaScript := 'AFTime_Format\(0\);'; | |||
oValues.cJavaScriptK := 'AFTime_KeyStroke\(0\);'; | |||
oValues.cValue := '00:00'; | |||
qRep_PDFFormFieldTimeEdit(EZ, 'WegezeitBis', oValues); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+1.3),'Arbeitscode' ); | |||
qSetRepFontSize(EZ,iFontgroesse-4); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')+38,qRep_YPos(Ez,y+0.075),'von : bis :' ); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')+38,qRep_YPos(Ez,y+1.475),'Sym.: Urs.: Akt.:' ); | |||
qSetRepFontSize(EZ,iFontgroesse); | |||
//FehlerCode | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+60, qRep_Ypos(EZ, y+1.3), qRep_Sanfang(EZ,'new2')+100, qRep_Ypos(EZ, y+2.3))); | |||
oValues.cBoxItems := '|B01|B02|B03|B04|B05|B06|B07|B08|B09|B10|B11|B12|B13|B14|B15|B16|B17|B18|B19|B20'; | |||
oValues.cBoxItems := oValues.cBoxItems+'|B21|B22|B23|B24|B25|M01|M02|M03|M04|M05|M06|M07|M08|M09|M10|P01|P02|P03|P04|P05'; | |||
oValues.cBoxItems := oValues.cBoxItems+'|P06|P07|S01|S02|S03|S04|S05|S06|S07|S08|S09|S10'; | |||
oValues.nSelectedItemIndex := 0; | |||
qRep_PDFFormFieldComboBox(EZ, 'Fehlercode', oValues); | |||
//Ersatzscode | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+130, qRep_Ypos(EZ, y+1.3), qRep_Sanfang(EZ,'new2')+170, qRep_Ypos(EZ, y+2.3))); | |||
oValues.cBoxItems := '|E01|E02|E03|E04|E05|E06|E07|E08|E09|E10|E11|E12|E13|E14|E15'; | |||
oValues.nSelectedItemIndex := 0; | |||
qRep_PDFFormFieldComboBox(EZ, 'Ersatzcode', oValues); | |||
//Arbeitscode | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+200, qRep_Ypos(EZ, y+1.3), qRep_Sanfang(EZ,'new2')+240, qRep_Ypos(EZ, y+2.3))); | |||
oValues.cBoxItems := '|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16'; | |||
oValues.nSelectedItemIndex := 0; | |||
qRep_PDFFormFieldComboBox(EZ, 'Arbeitscode', oValues); | |||
//Rechts | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y),'Arbeitszeit' ); | |||
//Arbeitszeit | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6')-50, qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new6')-10, qRep_Ypos(EZ, y+1))); | |||
oValues.cJavaScript := 'AFTime_Format\(0\);'; | |||
oValues.cJavaScriptK := 'AFTime_KeyStroke\(0\);'; | |||
oValues.cValue := '00:00'; | |||
qRep_PDFFormFieldTimeEdit(EZ, 'ArbeitszeitVon', oValues); | |||
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6')+10, qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new6')+50, qRep_Ypos(EZ, y+1))); | |||
oValues.cJavaScript := 'AFTime_Format\(0\);'; | |||
oValues.cJavaScriptK := 'AFTime_KeyStroke\(0\);'; | |||
oValues.cValue := '00:00'; | |||
qRep_PDFFormFieldTimeEdit(EZ, 'ArbeitszeitBis', oValues); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+1.3),'Arbeit abgeschlossen' ); | |||
qSetRepFontSize(EZ,iFontgroesse-4); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')-75,qRep_YPos(Ez,y),'von : bis :' ); | |||
qSetRepFontSize(EZ,iFontgroesse); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')-75,qRep_YPos(Ez,y+1.3),'ja FR' ); | |||
//qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y),'ja nein' ); | |||
oValues.Reset(); | |||
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new6')-50, qRep_Ypos(EZ,y+1.3)+1, qRep_SAnfang(EZ,'new6') -38, qRep_Ypos(EZ,y+2.3)-2)); | |||
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new6')+10, qRep_Ypos(EZ,y+1.3)+1, qRep_SAnfang(EZ,'new6') +22, qRep_Ypos(EZ,y+2.3)-2)); | |||
oValues.lAtleastOneSelectedItem := False; | |||
qRep_PDFFormFieldRadioButton(EZ, 'abgeschlossen', oValues); | |||
y := y + 3.5; | |||
//X | |||
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newL'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newM1'),qRep_Ypos(EZ,y),StrToInt(PMode_Var(600))); | |||
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newL'),qRep_Ypos(EZ,y+3.5),qRep_Sanfang(EZ,'newM1'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600))); | |||
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newM2'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y),StrToInt(PMode_Var(600))); | |||
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newM2'),qRep_Ypos(EZ,y+3.5),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600))); | |||
//Y | |||
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newL'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newL'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600))); | |||
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newM1'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newM1'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600))); | |||
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newM2'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newM2'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600))); | |||
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600))); | |||
qSetRepFontSize(EZ,iFontgroesse-2); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+2.6),'Unterschrift Service-Engineer'); | |||
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+2.6),'Datum, Unterschrift Kunde'); | |||
qSetRepFontSize(EZ,iFontgroesse); | |||
myFreeandNil(oValues); | |||
end; | |||
... | |||
</syntaxhighlight> | |||
=== Reparaturauftrag Beispiel 2 === | |||
[[Datei:PDF Repa.png|rand|765x765px]] | [[Datei:PDF Repa.png|rand|765x765px]] | ||
Aktuelle Version vom 18. September 2024, 14:57 Uhr
Interaktive PDF
Interaktive PDF sind PDF Dokumente, die es erlauben bestimmte Werte direkt einzutragen oder zu ändern.
OBS bietet ebenfalls die Möglichkeiten diese PDF nach der Ausfüllung wieder einzulesen und die eingetragenen Daten zu verarbeiten.
Mithilfe von interaktiven/ausfüllbaren PDF ist es möglich Dokumente außerhalb von OBS zu bearbeiten um zum Beispiel bei einem Kundenbesuch diese über ein Tablet oder Laptop direkt auszufüllen.
Die ausgefüllten Daten können dann direkt in OBS importiert werden und erspart Ihnen eine manuelle Datenerfassung.
Eine Beschreibung inklusive Anwendungs-Beispiel von interaktiven PDF finden Sie unter: Interaktive PDF
Besonderheiten PDF/A
PDF/A ist ein spezielles PDF Format zum langfristigen archivieren von Dokumenten. Dabei ist unter anderem die Unveränderbarkeit des Dokumentes sehr wichtig.
Diese Eigenschaft von PDF/A steht im direkten Kontrast zu interaktiven PDF und hat zur Folge, dass PDF/A interaktive Elemente nur zum teil oder gar nicht unterstützt.
Im besten Fall sollten für interaktive PDF die Formulare 001, 002, 003, 004 und 006 gemieden werden, da diese immer PDF/A erstellen.
Mögliche Steuerelemente
Eingabefled/Textfeld
Einfache Eingabefelder die normalen Text beinhalten.
Numerische Felder
Eingabefelder, die nur die Eingabe von Zahlen zulassen
Datumsfelder
Felder zum eintragen eines Datums
Schaltfläche
Drückbare Schaltflächen
Neben den einfachen zurücksetzen des Dokumentes (Reset), bieten diese Schaltflächen auch die Einreichung des Dokumentes an eine externe Website (Submit)
oder das ausführen eines Javascripts für komplexe Aufgaben.
Checkbox
Felder zum ankreuzen
Verbundene Checkbox (Radiobox)
Mehrere Felder zum ankreuzen eines Feldes
Auswahlbox (Combobox)
Eine Liste vordefinierter auswählbarer Einträge
Anmerkungen
Kommentar- und Hinweisfelder
Freihand Unterschriften
Im PDF gibt es kein Steuerelement, welches ein Freihand Unterschriften Feld definiert.
Lediglich ein Steuerelement für eine Digitale Signatur ist möglich.
Wenn Sie Freihand Unterschriften eines Kunden hinzufügen wollen, muss diese Funktion vom jeweiligen PDF-Viewer unterstützt werden. (z.B.: Adobe Acrobat Reader oder Xodo)
Erstellung über Druckdateien
Die interaktiven Steuerelemente werden direkt über die Druckdatei von OBS hinzugefügt
Dafür können je nach Komplexität kosten zum anpassen der jeweiligen Drucke anfallen.
Beim Export von Durcken als PDF werden diese interaktiv. Sollte ein solcher Druck "normal" ausgedruckt werden, werden die Steuerelemte nach Möglichkeit zu druckbaren Elementen konvertiert.
Implementierung im Druck
Bei der Implementierung stehen folgende Funktionen zur Verfügung:
//Eingabefeld
qRep_PDFFormFieldEdit(EZ, 'EditField1', oValues);
//Nummerisches Feld
qRep_PDFFormFieldNumEdit(EZ, 'EditField2', oValues);
//Datumsfeld
qRep_PDFFormFieldDateEdit(EZ, 'EditField3', oValues);
//Zeitfeld
qRep_PDFFormFieldTimeEdit(EZ, 'EditField4', oValues);
//Schaltfläche
qRep_PDFFormFieldButton(EZ, 'Schaltfläche', oValues);
//Checkbox
qRep_PDFFormFieldCheckBox(EZ, 'CheckBox', oValues);
//Radiobutton
qRep_PDFFormFieldRadioButton(EZ, 'RadioButton1', oValues);
//Combobox
qRep_PDFFormFieldCombobox(EZ, 'Combobox', oValues);
//Kommentar
qRep_PDFFormFieldTextAnnot(EZ, 'TextAnot1', oValues);
Die spezifischen Eigenschaften der einzelnen Elemente werden über das oValues Objekt definiert und übergeben.
Dieses Objekt ist vom Typ "TFormFieldValue" und muss vor dem Hinzufügen der einzelnen Werte erstellt und am Ende wieder freigegeben werden.
Das Objekt bietet eine Reset Funktion, die alle Werte des Objekt auf Standard zurück setzt. Dadurch ist es möglich das Objekt mehrfach zu nutzen.
oValues := TFormFieldValue.Create(Rect(10, 10, 50, 20));
oValues.cValue := 'dies ist ein Textfeld';
oValues.lIsMultiline := False;
oValues.oFont.Size := 10;
qRep_PDFFormFieldEdit(EZ, 'EditField1', oValues);
oValues.Reset(Rect(10, 30, 26, 46));
oValues.lChecked := True;
qRep_PDFFormFieldCheckBox(EZ, 'CheckBox', oValues);
MyFreeAndNil(oValues);
Für das Create und Reset wird jeweils ein Rect übergeben, welches die Position im Dokument definiert
Rect(left, top, right, bottom)
oValues.Reset(Rect(qRep_SAnfang(EZ,'pk1'), qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'pk2'), qRep_Ypos(EZ,y+1)));
Verfügbare Werte
Wert | Für Typ | Werte | Standard Wert | Beschreibung | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
aRect: TRect | alle | Rect für die Positionierung im Dokument | ||||||||||||||||||||||||||
cPreferences: String | alle | 'afpreadonly'
'afprequired' |
[] | Definition des Feldes (nur Lesen oder ausfüllen erforderlich) | ||||||||||||||||||||||||
oBackgroundColor: TColor | alle | $FFD7CC | Farbe des Hintergrunds | |||||||||||||||||||||||||
oBorderColor: TColor | alle | clBlack | Farbe dess Rahmens | |||||||||||||||||||||||||
oFont: TFont | alle | oFont.Name := 'Arial';
oFont.Size := 10;
oFont.Color := clBlack;
|
Definition der Schriftart
(Schriftstile wie "Fett" oder Kursiv" werden wie folgt definiert):qSetRepStyle(EZ, [fsBold]);
oValues.Reset(Rect(10, 10, 30, 20));
qRep_PDFFormFieldEdit(EZ, 'Textfeld', oValues);
qSetRepStyle(EZ, []);
Die schriftart von Checkboxen und Radioboxen ist nicht änderbar | |||||||||||||||||||||||||
lPrintable: Boolean | alle | True, False | True | True: Das Feld wird bei normalen Drucken angezeigt | ||||||||||||||||||||||||
cJavaScript: String
cJavaScriptK: String |
Textfeld | Textfelder können JavaScript enthalten, um ein bestimmtes Verhalten zu erzeugen.
Nummernfelder und Datumsfelder sind Textfelder mit JavaScript. Zwei Werte können gesetzt werden: cJavaScript: Enthält den auszuführenden Code JavascriptK (KeyStroke): enthält den Code, der beim Tastenanschlag ausgeführt wird. //Ein Feld mit dem Währungszeichen € (u20AC)
oValues.Reset(Rect(qRep_SAnfang(EZ,'2'), qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'2') + 180, qRep_Ypos(EZ,y+1)));
oValues.cJavaScriptF := 'AFNumber_Format\(2, 2, 0, 0, "\\u20AC", false\);';
oValues.cJavaScriptK := 'AFNumber_Keystroke\(2, 2, 0, 0, "\\u20AC", false\);';
qRep_PDFFormFieldEdit(EZ, 'EditField5' + astr(lP2), oValues);
| ||||||||||||||||||||||||||
cValue: String | Textfeld
Numerisches Feld Datumsfeld |
Der initialwert eines Feldes | ||||||||||||||||||||||||||
cHAlignment: String | Textfeld
Numerisches Feld Datumsfeld |
'tacenter'
'taright' 'taleft' |
'taleft' | die Textausrichtung eines Feldes
mitte, rechts-, linksbündig | ||||||||||||||||||||||||
lIsMultiline: Boolean | Textfeld
Numerisches Feld Datumsfeld |
True, False | False | Einzeilig oder mehrzeilige Felder | ||||||||||||||||||||||||
lIsPassword: Boolean | Textfeld
Numerisches Feld Datumsfeld |
True, False | False | Anzeige von Punkten statt der Eingabe | ||||||||||||||||||||||||
lIsFileSelect: Boolean | Textfeld
Numerisches Feld Datumsfeld |
True, False | False | Auswahl einer Datei zum speichern des Pfades | ||||||||||||||||||||||||
lIsDoNotSpellCheck: Boolean | Textfeld
Numerisches Feld Datumsfeld |
True, False | False | Rechtschreibung für das Feld ignorieren | ||||||||||||||||||||||||
lIsDoNotScroll: Boolean | Textfeld
Numerisches Feld Datumsfeld |
True, False | False | Keine Scrollbar anzeigen | ||||||||||||||||||||||||
lIsBorder: Boolean | Textfeld
Numerisches Feld Datumsfeld |
True, False | False | Rahmen anzeigen | ||||||||||||||||||||||||
nMaxLength: Integer | Textfeld
Numerisches Feld Datumsfeld |
-1 | Maximale länge der Eingabe | |||||||||||||||||||||||||
nXTextOffsetPtn: Double | Textfeld
Numerisches Feld Datumsfeld Schaltflächen |
0 | Korrektur des anzuzeigenden Textes auf der X-Achse in Punkte
Für bestimmte Fonts kann es nötig sein diese anzupassen, da der Text nicht korrekt Positioniert wird | |||||||||||||||||||||||||
nYTextOffsetPtn: Double | Textfeld
Numerisches Feld Datumsfeld Schaltflächen |
0 | Korrektur des anzuzeigenden Textes auf der Y-Achse in Punkte
Für bestimmte Fonts kann es nötig sein diese anzupassen, da der Text nicht korrekt Positioniert wird | |||||||||||||||||||||||||
nBorderWidth: Integer | Schaltflächen | 1 | Rahmenbreite | |||||||||||||||||||||||||
lVisible: Boolean | Schaltflächen | True, False | True | Sichbarkeit der Schaltfläche | ||||||||||||||||||||||||
cNormalCaption: String | Schaltflächen | Text bei normaler Anzeige der Schaltfläche | ||||||||||||||||||||||||||
cRolloverCaption: String | Schaltflächen | cNormalCaption | Text beim berühren der Schaltfläche mit der Maus | |||||||||||||||||||||||||
cDownCaption: String | Schaltflächen | cNormalCaption | Text beim betätigen der Schaltfläche | |||||||||||||||||||||||||
cJavaScript: String | Schaltflächen | Hinterlegtes Javascript bei Typ 'pbajavascript'cJavaScript := 'app.alert("Hello World")';
cJavaScript :=
' var tf1 = this.getField("tfName"); ' +
' var btn1 = this.getField("pbValidate"); ' +
' var btn2 = this.getField("pbSubmit"); ' +
' if (tf1.valueAsString.length > 3) { ' +
' tf1.value = tf1.valueAsString.toUpperCase(); ' +
' btn2.buttonSetCaption("Submit"); ' +
' btn1.display = display.hidden; ' +
' btn1.setFocus(); ' +
' } else { ' +
' app.alert("Please enter a valid name."); ' +
' tf1.setFocus(); ' +
' }';
| ||||||||||||||||||||||||||
cAction: String | Schaltflächen | 'pbaNone'
'pbasubmit' 'pbareset' 'pbajavascript' |
'pbaNone' | Typ der Schaltfläche | ||||||||||||||||||||||||
cSubmitURL: String | Schaltflächen | URL bei Typ 'pbasubmit'cSubmitURL :=
'http://www.bergau.de/200804/forms_test.asp';
| ||||||||||||||||||||||||||
cFormSubmitFormat: String | Schaltflächen | 'fsfhtml'
'fsffdf' 'fsfxml' |
'fsfhtml' | Format der Einreichung | ||||||||||||||||||||||||
lAtleastOneSelectedItem: Boolean | Radiobox | True, False | False | Mindestens ein Feld muss ausgefüllt sein | ||||||||||||||||||||||||
AddRadioItem
(qr_printer: TQR_Printer; Rect:TRect) |
Radiobox | Methode zum hinzufügen von Werten | ||||||||||||||||||||||||||
lChecked: Boolean | CheckBox
Radiobox |
True, False | False | Checkbox ist bei der Erstellung angehakt | ||||||||||||||||||||||||
cSymbol: String | CheckBox
Radiobox |
'pfcsCross'
'pfcscheck' 'pfcscircle' 'pfcsdiamond' 'pfcssquare' 'pfcsstar' |
'pfcsCross' | Symbol für die Checkbox | ||||||||||||||||||||||||
lIsEditable: Boolean | ComboBox | True, False | False | Einträge können hinzugefügt werden | ||||||||||||||||||||||||
lIsSortList: Boolean | ComboBox | True, False | False | Einträge werden Sortiert.
nSelectedItemIndex wird dann aber unter Umständen nicht mehr korrekt funktionieren | ||||||||||||||||||||||||
cBoxItems: String | ComboBox | Einträge der ComboboxoValue.cBoxItems := oValue.cBoxItems + 'Test' + '|' + 'Test2';
| ||||||||||||||||||||||||||
nSelectedItemIndex: Integer | ComboBox
Radiobox |
-1 | vorausgewählter Eintrag | |||||||||||||||||||||||||
cTitel: String | Anmerkungen | Titel der Anmerkung | ||||||||||||||||||||||||||
cSubject: String | Anmerkungen | Betreff der Anmerkung | ||||||||||||||||||||||||||
cContents: String | Anmerkungen | Inhalt der Anmerkung | ||||||||||||||||||||||||||
lOpen: Boolean | Anmerkungen | True, False | False | Anmerkung wird beim öffnen des PDF angezeigt | ||||||||||||||||||||||||
cTyp: String | Anmerkungen | 'tncomment'
'tninsert' 'tnparagraph' tnnewparagraph' 'tnhelp' 'tnnote' 'tnkey' |
'tncomment' | Typ der Anmerkung |
Beispiele
Reparaturauftrag Beispiel 1
...
procedure Kopf();
var cBuffer : String;
cLK : String;
cOrt : String;
cPLZ : String;
cVorname : String;
cName : String;
cZusatz1 : String;
cZusatz2 : String;
cWhere : String;
i : integer;
oQRCode : TBitMap;
nRunMater : Double;
oValues : TFormFieldValue;
qQuery : TxQuery;
begin
nRunMater := 7.5;
//nRunMater := 5;
with EZ do begin
QRCode('OBSRA'+A_Query.A2C('a_nr'),-1,-1,3,oQRCode);
qRep_BildPrint(EZ,oQRCode,'',qRep_SAnfang(EZ,'newM1'),80,80,qRep_Ypos(EZ,y+2.1));
oQRCode.Free;
oValues := TFormFieldValue.Create();
qSetRepFontSize(EZ,iFontgroesse+2);
qSetRepStyle(EZ,[fsBold]);
qRep_Stext(EZ,'new5' ,'Dienstleistungsauftrag',qRep_Ypos(EZ,y+1.5));
qSetRepStyle(EZ,[]);
qSetRepFontSize(EZ,iFontgroesse);
qRep_Stext(EZ,'new5' ,'Auftragsnummer',qRep_Ypos(EZ,y+3.5));
qRep_Stext(EZ,'new5' ,'Kunden-Nr.' ,qRep_Ypos(EZ,y+4.5));
qRep_Stext(EZ,'new5' ,'Auftragsdatum' ,qRep_Ypos(EZ,y+5.5));
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y+3.5),': ' + A_Query.A2C('a_nr'));
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y+4.5),': ' + A_Query.A2C('a_knr'));
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y+5.5),': ' + A_Query.A2C('a_datum'));
nUnterBox := y+7;
qx_PrintRect(EZ,qRep_SAnfang(EZ,'new4')+77,qRep_Ypos(EZ,y+1),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+6.5),StrToInt(PMode_Var(600)));
cBuffer := DB_ReadSQLValue(oDB,'S_ANRED','ar_name','ar_nr='+DB_SQLVal(A_Query.A2C('a_anrede'),'C'));
if (not empty(cbuffer)) then begin
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cBuffer);
y := y + 1;
cBuffer := '';
end;
cVorname := A_Query.A2C('a_vorname');
cName := A_Query.A2C('a_name');
if (not(empty(cVorname))) then begin
cBuffer := cVorname + ' ';
end;
if (not(empty(cName))) then begin
cBuffer := cBuffer + cName;
end;
if (not empty(cBuffer)) then begin
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cBuffer);
y := y + 1;
cBuffer := '';
end;
cZusatz1 := A_Query.A2C('a_zusatz1');
cZusatz2 := A_Query.A2C('a_zusatz2');
if (not(empty(cZusatz1))) then begin
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cZusatz1);
y := y + 1;
end;
if (not(empty(cZusatz2))) then begin
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cZusatz2);
y := y + 1;
end;
cBuffer := A_Query.A2C('a_postf');
if (not empty(cBuffer)) then begin
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Postfach '+cBuffer);
y := y + 2;
cBuffer := '';
end else begin
cBuffer := A_Query.A2C('a_strasse');
if (not empty(cBuffer)) then begin
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cBuffer);
y := y + 2;
cBuffer := '';
end;
end;
cLK := A_Query.A2C('a_LK');
cPLZ := A_Query.A2C('a_PLZ');
cOrt := A_Query.A2C('a_Ort');
if (not(empty(cLK))) then begin
cBuffer := cLK + ' ';
end;
if (not(empty(cPLZ))) then begin
cBuffer := cBuffer + cPLZ + ' ';
end;
if (not(empty(cOrt))) then begin
cBuffer := cBuffer + cOrt;
end;
if (not empty(cBuffer)) then begin
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),cBuffer);
cBuffer := '';
y := y + 2;
end;
y := nUnterBox;
if (not(empty(cZusatz1))) and (not(empty(cZusatz2))) then begin
y := y + 2;
end else if (not(empty(cZusatz1))) or (not(empty(cZusatz2))) then begin
y := y + 1;
end;
cBuffer := DB_ReadSQLValue(oDB,'S_VERK','v_name','v_nr='+DB_SQLVal(A_Query.A2C('a_verk'),'C'));
if (not empty(cbuffer)) then begin
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Sachbearbe.');
qRep_Stext(EZ,'2',':',qRep_Ypos(EZ,y));
qRep_Stext(EZ,'3',cBuffer,qRep_Ypos(EZ,y));
cBuffer := '';
end;
y := y + 1.3;
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Gerät');
qRep_Stext(EZ,'2',':',qRep_Ypos(EZ,y));
qRep_Stext(EZ,'3',A_Query.A2C('a_gnr')+' '+A_Query.A2C('a_geraet'),qRep_Ypos(EZ,y));
y := y + 1;
qRep_Stext(EZ,'3',A_Query.A2C('a_modell'),qRep_Ypos(EZ,y));
y := y + 1;
if (A_Query.A2C('a_mwart') = '1') then begin
qRep_Stext(EZ,'3','WARTUNGSVERTRAG',qRep_Ypos(EZ,y));
end;
y := y + 1;
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Techniker');
qRep_Stext(EZ,'2',':',qRep_Ypos(EZ,y));
//Techniker
cWhere := 'a_nr=' + DB_SQLVal(A_Query.A2C('a_nr'));
cBuffer := DB_ReadSQLValue(oDB,'RAUFSTA','a_techni',cWhere);
cWhere := 'm_nr=' + DB_SQLVal(cBuffer);
cBuffer := DB_ReadSQLValue(oDB,'MITARB','m_vorname',cWhere);
cBuffer := cBuffer + ' ' + DB_ReadSQLValue(oDB,'MITARB','m_name',cWhere);
oValues.Reset(Rect(qRep_SAnfang(EZ, '3'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'4')-50, qRep_Ypos(EZ, y+1)));
cSQL := 'SELECT * FROM mitarb WHERE m_inaktiv <> "1" ORDER BY m_name';
if (DB_SOPen(oDB,cSQL,qQuery,False)) then begin
i := 0;
while (not qQuery.EOF) do begin
if not empty(oValues.cBoxItems) then begin
oValues.cBoxItems := oValues.cBoxItems + '|';
end;
oValues.cBoxItems := oValues.cBoxItems + qQuery.A2C('m_vorname') + ' ' + qQuery.A2C('m_name');
if (cBuffer = qQuery.A2C('m_vorname') + ' ' + qQuery.A2C('m_name')) then begin
oValues.nSelectedItemIndex := i;
end;
i := i + 1;
qQuery.Next;
end;
end;
DB_Close(qQuery);
qRep_PDFFormFieldComboBox(EZ, 'Techniker', oValues);
y := y + 1.2;
qRep_Text3(EZ,iLinkerRand,qRep_Ypos(EZ,y),'Störung');
qRep_Stext(EZ,'2',':',qRep_Ypos(EZ,y));
cBuffer := A_Query.A2C('a_stoer1');
if (not empty(cBuffer)) then begin
qRep_Stext(EZ,'3',cBuffer,qRep_Ypos(EZ,y));
cBuffer := '';
nRunMater := nRunMater + 1;
end;
y := y + 1;
cBuffer := A_Query.A2C('a_stoer2');
if (not empty(cBuffer)) then begin
qRep_Stext(EZ,'3',cBuffer,qRep_Ypos(EZ,y));
cBuffer := '';
nRunMater := nRunMater + 1;
end;
y := y + 1;
cBuffer := A_Query.A2C('a_stoer3');
if (not empty(cBuffer)) then begin
qRep_Stext(EZ,'3',cBuffer,qRep_Ypos(EZ,y));
cBuffer := '';
nRunMater := nRunMater + 1;
end;
y := nUnterBox;
if (not(empty(Alltrim(A_Query.A2C('a_anspr'))))) then begin
qRep_Stext(EZ,'new5','Ansprechpart.',qRep_Ypos(EZ,y));
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_anspr'));
end;
y := y + 1;
qRep_Stext(EZ,'new5','Telefon',qRep_Ypos(EZ,y));
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_tel1'));
y := y + 1;
qRep_Stext(EZ,'new5','Serien-Nr',qRep_Ypos(EZ,y));
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_sernr'));
y := y + 1;
if (not(empty(Alltrim(A_Query.A2c('a_terminstr'))))) then begin
qRep_Stext(EZ,'new5','Termin',qRep_Ypos(EZ,y));
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_terminstr'));
end else begin
if (not(empty(Alltrim(A_Query.A2C('a_termin'))))) then begin
qRep_Stext(EZ,'new5','Termin',qRep_Ypos(EZ,y));
if ((not(empty(Alltrim(A_Query.A2C('a_zeit'))))) and (Alltrim(A_Query.A2C('a_zeit')) <> ':')) then begin
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_termin')+' / '+A_Query.A2C('a_zeit'));
end else begin
qRep_Text3(EZ,qRep_SAnfang(EZ,'5')-21,qRep_YPos(Ez,y),': ' + A_Query.A2C('a_termin'));
end;
end;
end;
myFreeandNil(oValues);
y := nUnterBox + nRunMater;
end;
end;
//------------------------------------------------------------------
procedure Material();
var nZeile : Integer;
nInc : Double;
oValues : TFormFieldValue;
begin
oValues := TFormFieldValue.Create();
qSetRepStyle(EZ,[fsBold]);
qRep_Stext(EZ,'newL','Material',qRep_Ypos(EZ,y));
qSetRepStyle(EZ,[]);
y := y + 1;
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y),'Artikelnr.');
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y),'Artikelnr.');
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')+3,qRep_YPos(Ez,y),'Bezeichnung');
qRep_Text3(EZ,qRep_SAnfang(EZ,'new5')+3,qRep_YPos(Ez,y),'Bezeichnung');
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')+3,qRep_YPos(Ez,y),'Menge');
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')+3,qRep_YPos(Ez,y),'Menge');
nInc := MATERIAL_ZEILEN * 1.3 + 1;
for nZeile := 1 to MATERIAL_ZEILEN do begin
y := y + 1.3;
//Artikelnr
oValues.Reset(Rect(qRep_SAnfang(EZ, 'newL'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new2')-20, qRep_Ypos(EZ, y+1)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldEdit(EZ, 'ArtNr' + aStr(nZeile), oValues);
//Bezeichnung
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new3')-20, qRep_Ypos(EZ, y+1)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldEdit(EZ, 'Bezeichnung' + aStr(nZeile), oValues);
//Menge
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new3'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'newM2')-20, qRep_Ypos(EZ, y+1)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldNumEdit(EZ, 'Menge' + aStr(nZeile), oValues);
//Artikelnr
oValues.Reset(Rect(qRep_SAnfang(EZ, 'newM2'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new5')-20, qRep_Ypos(EZ, y+1)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldEdit(EZ, 'ArtNr' + aStr(nZeile + 7), oValues);
//Bezeichnung
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new5'), qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new6')-20, qRep_Ypos(EZ, y+1)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldEdit(EZ, 'Bezeichnung' + aStr(nZeile + 7), oValues);
//Menge
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6'), qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y+1)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldNumEdit(EZ, 'Menge' + aStr(nZeile + 7), oValues);
end;
y := y +1;
myFreeandNil(oValues);
end;
//------------------------------------------------------------------
procedure Stunden();
var nZeile : Integer;
nInc : Double;
oValues : TFormFieldValue;
begin
oValues := TFormFieldValue.Create();
y := y + 1;
qSetRepStyle(EZ,[fsBold]);
qRep_Stext(EZ,'newL','Ausgeführte Tätigkeiten',qRep_Ypos(EZ,y-0.5));
qSetRepStyle(EZ,[]);
y := y + 0.5;
//MultiLine
oValues.Reset(Rect(qRep_SAnfang(EZ, 'newL'), qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y+7.5)));
oValues.cValue := 'Hier ausgeführte Arbeiten erfassen';
oValues.lIsMultiline := True;
qRep_PDFFormFieldEdit(EZ, 'RepText', oValues);
myFreeandNil(oValues);
y := y + 7.5;
end;
//------------------------------------------------------------------
procedure Fuss();
var cBuffer : String;
iZeilen : Integer;
i : Integer;
nYtmp : Double;
cResultVor : String;
oValues : TFormFieldValue;
begin
oValues := TFormFieldValue.Create();
qx_PrintRect(EZ,qRep_SAnfang(EZ,'newL'),qRep_Ypos(EZ,y+1),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+8),StrToInt(PMode_Var(600)));
y := y + 1.5;
//Links
qSetRepStyle(EZ,[fsBold]);
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y),'VDE-Prüfung');
qSetRepStyle(EZ,[]);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')-5,qRep_YPos(Ez,y),'nach DIN VDE 0701-0702 durchgeführt');
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+1.3),'1. Sichtprüfung i.O.');
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+2.6),'3. Isolationswiderstand');
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+3.9),'5. Berührungsstrom' );
qSetRepFontSize(EZ,iFontgroesse-4);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')+27,qRep_YPos(Ez,y+4.2),'Diff / Dir / EA');
qSetRepFontSize(EZ,iFontgroesse);
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+5.2),'Prüfung bestanden' );
//Links J/N
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')-75,qRep_YPos(Ez,y+1.3),'ja nein' );
oValues.Reset();
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new3')-100, qRep_Ypos(EZ,y+1.3)+1, qRep_SAnfang(EZ,'new3') -88, qRep_Ypos(EZ,y+2.3)-2));
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new3')-50, qRep_Ypos(EZ,y+1.3)+1, qRep_SAnfang(EZ,'new3') - 38, qRep_Ypos(EZ,y+2.3)-2));
oValues.lAtleastOneSelectedItem := False;
qRep_PDFFormFieldRadioButton(EZ, 'Sichtpruefung', oValues);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')-75,qRep_YPos(Ez,y+2.6),'_______ MOhm' );
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new3')-75, qRep_Ypos(EZ, y+2.6), qRep_SAnfang(EZ, 'new3')-25, qRep_Ypos(EZ, y+3.6)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldEdit(EZ, 'Isolationswiderstand', oValues);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')-75,qRep_YPos(Ez,y+3.9),'_______ mA' );
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new3')-75, qRep_Ypos(EZ, y+3.9), qRep_SAnfang(EZ, 'new3')-25, qRep_Ypos(EZ, y+4.9)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldEdit(EZ, 'Beruehrungsstrom', oValues);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new3')-75,qRep_YPos(Ez,y+5.2),'ja nein -> Gerät nicht in Betrieb nehmen!' );
oValues.Reset();
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new3')-100, qRep_Ypos(EZ,y+5.2)+1, qRep_SAnfang(EZ,'new3') -88, qRep_Ypos(EZ,y+6.2)-2));
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new3')-50, qRep_Ypos(EZ,y+5.2)+1, qRep_SAnfang(EZ,'new3') - 38, qRep_Ypos(EZ,y+6.2)-2));
oValues.lAtleastOneSelectedItem := False;
qRep_PDFFormFieldRadioButton(EZ, 'Bestanden', oValues);
//Rechts
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y),'ja nein' );
oValues.Reset();
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'newM2')-20, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'newM2') -8, qRep_Ypos(EZ,y+1)-2));
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'newM2')+30, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'newM2') +42, qRep_Ypos(EZ,y+1)-2));
oValues.lAtleastOneSelectedItem := False;
qRep_PDFFormFieldRadioButton(EZ, 'VDE_Pruefung', oValues);
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+1.3),'2. Schutzleiterwiderstand');
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+2.6),'4. Schutzleiterstrom');
qSetRepFontSize(EZ,iFontgroesse-4);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new5')+30,qRep_YPos(Ez,y+2.9),'Diff / Dir / EA');
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+4.2),'Messgerät BENNING ST 720 Ser.Nr.: 05F-0198 13F-0975 46G-0253 13F-0970');
qSetRepFontSize(EZ,iFontgroesse);
//Rechts J/N
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')-75,qRep_YPos(Ez,y+1.3),'_______ Ohm');
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6')-75, qRep_Ypos(EZ, y+1.3), qRep_SAnfang(EZ, 'new6')-25, qRep_Ypos(EZ, y+2.3)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldEdit(EZ, 'Schutzleiterwiderstand', oValues);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')-75,qRep_YPos(Ez,y+2.6),'_______ mA');
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6')-75, qRep_Ypos(EZ, y+2.6), qRep_SAnfang(EZ, 'new6')-25, qRep_Ypos(EZ, y+3.6)));
oValues.cValue := '';
oValues.lIsMultiline := False;
qRep_PDFFormFieldEdit(EZ, 'Schutzleiterstrom', oValues);
y := y + 7.5;
qx_PrintRect(EZ,qRep_SAnfang(EZ,'newL'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+3),StrToInt(PMode_Var(600)));
y := y + 0.5;
//Links
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y),'Wegezeit' );
//Wegezeit
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+60, qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new2')+100, qRep_Ypos(EZ, y+1)));
oValues.cJavaScript := 'AFTime_Format\(0\);';
oValues.cJavaScriptK := 'AFTime_KeyStroke\(0\);';
oValues.cValue := '00:00';
qRep_PDFFormFieldTimeEdit(EZ, 'WegezeitVon', oValues);
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+130, qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new2')+170, qRep_Ypos(EZ, y+1)));
oValues.cJavaScript := 'AFTime_Format\(0\);';
oValues.cJavaScriptK := 'AFTime_KeyStroke\(0\);';
oValues.cValue := '00:00';
qRep_PDFFormFieldTimeEdit(EZ, 'WegezeitBis', oValues);
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+1.3),'Arbeitscode' );
qSetRepFontSize(EZ,iFontgroesse-4);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')+38,qRep_YPos(Ez,y+0.075),'von : bis :' );
qRep_Text3(EZ,qRep_SAnfang(EZ,'new2')+38,qRep_YPos(Ez,y+1.475),'Sym.: Urs.: Akt.:' );
qSetRepFontSize(EZ,iFontgroesse);
//FehlerCode
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+60, qRep_Ypos(EZ, y+1.3), qRep_Sanfang(EZ,'new2')+100, qRep_Ypos(EZ, y+2.3)));
oValues.cBoxItems := '|B01|B02|B03|B04|B05|B06|B07|B08|B09|B10|B11|B12|B13|B14|B15|B16|B17|B18|B19|B20';
oValues.cBoxItems := oValues.cBoxItems+'|B21|B22|B23|B24|B25|M01|M02|M03|M04|M05|M06|M07|M08|M09|M10|P01|P02|P03|P04|P05';
oValues.cBoxItems := oValues.cBoxItems+'|P06|P07|S01|S02|S03|S04|S05|S06|S07|S08|S09|S10';
oValues.nSelectedItemIndex := 0;
qRep_PDFFormFieldComboBox(EZ, 'Fehlercode', oValues);
//Ersatzscode
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+130, qRep_Ypos(EZ, y+1.3), qRep_Sanfang(EZ,'new2')+170, qRep_Ypos(EZ, y+2.3)));
oValues.cBoxItems := '|E01|E02|E03|E04|E05|E06|E07|E08|E09|E10|E11|E12|E13|E14|E15';
oValues.nSelectedItemIndex := 0;
qRep_PDFFormFieldComboBox(EZ, 'Ersatzcode', oValues);
//Arbeitscode
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new2')+200, qRep_Ypos(EZ, y+1.3), qRep_Sanfang(EZ,'new2')+240, qRep_Ypos(EZ, y+2.3)));
oValues.cBoxItems := '|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16';
oValues.nSelectedItemIndex := 0;
qRep_PDFFormFieldComboBox(EZ, 'Arbeitscode', oValues);
//Rechts
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y),'Arbeitszeit' );
//Arbeitszeit
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6')-50, qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new6')-10, qRep_Ypos(EZ, y+1)));
oValues.cJavaScript := 'AFTime_Format\(0\);';
oValues.cJavaScriptK := 'AFTime_KeyStroke\(0\);';
oValues.cValue := '00:00';
qRep_PDFFormFieldTimeEdit(EZ, 'ArbeitszeitVon', oValues);
oValues.Reset(Rect(qRep_SAnfang(EZ, 'new6')+10, qRep_Ypos(EZ, y), qRep_Sanfang(EZ,'new6')+50, qRep_Ypos(EZ, y+1)));
oValues.cJavaScript := 'AFTime_Format\(0\);';
oValues.cJavaScriptK := 'AFTime_KeyStroke\(0\);';
oValues.cValue := '00:00';
qRep_PDFFormFieldTimeEdit(EZ, 'ArbeitszeitBis', oValues);
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+1.3),'Arbeit abgeschlossen' );
qSetRepFontSize(EZ,iFontgroesse-4);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')-75,qRep_YPos(Ez,y),'von : bis :' );
qSetRepFontSize(EZ,iFontgroesse);
qRep_Text3(EZ,qRep_SAnfang(EZ,'new6')-75,qRep_YPos(Ez,y+1.3),'ja FR' );
//qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y),'ja nein' );
oValues.Reset();
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new6')-50, qRep_Ypos(EZ,y+1.3)+1, qRep_SAnfang(EZ,'new6') -38, qRep_Ypos(EZ,y+2.3)-2));
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'new6')+10, qRep_Ypos(EZ,y+1.3)+1, qRep_SAnfang(EZ,'new6') +22, qRep_Ypos(EZ,y+2.3)-2));
oValues.lAtleastOneSelectedItem := False;
qRep_PDFFormFieldRadioButton(EZ, 'abgeschlossen', oValues);
y := y + 3.5;
//X
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newL'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newM1'),qRep_Ypos(EZ,y),StrToInt(PMode_Var(600)));
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newL'),qRep_Ypos(EZ,y+3.5),qRep_Sanfang(EZ,'newM1'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600)));
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newM2'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y),StrToInt(PMode_Var(600)));
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newM2'),qRep_Ypos(EZ,y+3.5),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600)));
//Y
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newL'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newL'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600)));
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newM1'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newM1'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600)));
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newM2'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newM2'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600)));
qx_PrintLine(EZ,qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y),qRep_Sanfang(EZ,'newR'),qRep_Ypos(EZ,y+3.5),StrToInt(PMode_Var(600)));
qSetRepFontSize(EZ,iFontgroesse-2);
qRep_Text3(EZ,qRep_SAnfang(EZ,'newL')+3,qRep_YPos(Ez,y+2.6),'Unterschrift Service-Engineer');
qRep_Text3(EZ,qRep_SAnfang(EZ,'newM2')+3,qRep_YPos(Ez,y+2.6),'Datum, Unterschrift Kunde');
qSetRepFontSize(EZ,iFontgroesse);
myFreeandNil(oValues);
end;
...
Reparaturauftrag Beispiel 2
procedure Kopf();
var cBuffer : String;
cLK : String;
cOrt : String;
cPLZ : String;
cVorname : String;
cName : String;
oValues : TFormFieldValue;
procedure _printText(nVon, nBis: Integer; cName: String);
begin
oValues.Reset(Rect(nVon, qRep_Ypos(EZ, y), nBis - 10, qRep_Ypos(EZ, y+1)));
qRep_PDFFormFieldEdit(EZ, cName, oValues);
y := y + 1;
qx_PrintLine(EZ, nVon, qRep_Ypos(EZ, y), nBis - 10, qRep_Ypos(EZ, y), 5);
y := y - 1;
end;
begin
with EZ do begin
oValues := TFormFieldValue.Create();
cBuffer := '';
qSetRepFontSize(EZ,iFontgroesse+4);
qSetRepStyle(EZ,[fsBold]);
qSetRepStyle(EZ,[]);
qSetRepFontSize(EZ,iFontgroesse);
y := 1;
qSetRepStyle(EZ,[fsBold]);
qRep_Stext(EZ,'pk1','Reparaturauftragsnr.: '+A_Query.A2C('a_nr'),qRep_Ypos(EZ,y));
qRep_Stext(EZ,'pk4','Maschine / Fabrikat / Modell',qRep_Ypos(EZ,y));
qSetRepStyle(EZ,[]);
y := y + 1;
cVorname := A_Query.A2C('a_vorname');
cName := A_Query.A2C('a_name');
if (not(empty(cVorname))) then begin
cBuffer := cVorname + ' ';
end;
if (not(empty(cName))) then begin
cBuffer := cBuffer + cName;
end;
cBuffer := cBuffer + ' ('+A_Query.A2C('a_knr')+')';
qSetRepStyle(EZ,[fsBold]);
qRep_Stext(EZ,'pk1',cBuffer,qRep_Ypos(EZ,y));
qSetRepStyle(EZ,[]);
cBuffer := '';
qRep_Stext(EZ,'pk4',A_Query.A2C('a_geraet')+' '+A_Query.A2C('a_modell'),qRep_Ypos(EZ,y));
y := y + 1;
if (not(empty(A_Query.A2C('a_zusatz1')))) then begin
cBuffer := cBuffer + A_Query.A2C('a_zusatz1');
end;
qRep_Stext(EZ,'pk1',cBuffer,qRep_Ypos(EZ,y));
qRep_Stext(EZ,'pk4','Seriennummer : '+A_Query.A2C('a_sernr'),qRep_Ypos(EZ,y));
y := y + 1;
qRep_Stext(EZ,'pk4','Auftragsdatum : '+A_Query.A2C('a_datum'),qRep_Ypos(EZ,y));
if (not(empty(A_Query.A2C('a_zusatz2')))) then begin
cBuffer := cBuffer + A_Query.A2C('a_zusatz2');
qRep_Stext(EZ,'pk1',cBuffer,qRep_Ypos(EZ,y));
end;
y := y + 1;
qRep_Stext(EZ,'pk1',A_Query.A2C('a_strasse'),qRep_Ypos(EZ,y));
y := y + 1;
cBuffer := '';
cLK := A_Query.A2C('a_LK');
cPLZ := A_Query.A2C('a_PLZ');
cOrt := A_Query.A2C('a_Ort');
if (not(empty(cLK))) then begin
cBuffer := cLK + ' ';
end;
if (not(empty(cPLZ))) then begin
cBuffer := cBuffer + cPLZ + ' ';
end;
if (not(empty(cOrt))) then begin
cBuffer := cBuffer + cOrt;
end;
qRep_Stext(EZ,'pk1',cBuffer,qRep_Ypos(EZ,y));
cBuffer := '';
qRep_Stext(EZ,'pk4','Fehlerangabe : '+A_Query.A2C('a_stoer1'),qRep_Ypos(EZ,y));
y := y + 1;
qRep_Stext(EZ,'pk1','Abteilung : '+A_Query.A2C('a_standort'),qRep_Ypos(EZ,y));
qRep_Stext(EZ,'pk4',' ' +A_Query.A2C('a_stoer2'),qRep_Ypos(EZ,y));
y := y + 1;
qRep_Stext(EZ,'pk1','Telefon : '+A_Query.A2C('a_tel1'),qRep_Ypos(EZ,y));
qRep_Stext(EZ,'pk4',' '+A_Query.A2C('a_stoer3'),qRep_Ypos(EZ,y));
y := y + 1;
qRep_Stext(EZ,'pk1','Termin : ' +A_Query.A2C('a_terminstr'),qRep_Ypos(EZ,y));
qRep_Stext(EZ,'pk4','Ersatzgerät : '+A_Query.A2C('a_leih'),qRep_Ypos(EZ,y));
y := y + 1;
qRep_Stext(EZ,'pk1','Ansprechpartner : '+A_Query.A2C('a_anspr'),qRep_Ypos(EZ,y));
y := y + 1;
oValues.Reset();
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'pk4')+50, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'pk4') + 12 + 50, qRep_Ypos(EZ,y+1)-2));
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'pk4')+83, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'pk4') + 12 + 83, qRep_Ypos(EZ,y+1)-2));
oValues.lAtleastOneSelectedItem := False;
if (A_Query.A2C('a_mgar') <> '1') then begin
oValues.nSelectedItemIndex := -1;
end else begin
oValues.nSelectedItemIndex := 0;
end;
qRep_PDFFormFieldRadioButton(EZ, 'Garantie', oValues);
qRep_Stext(EZ,'pk4','Garantie Ja Nein',qRep_Ypos(EZ,y));
oValues.Reset();
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'pk1')+110, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'pk1') + 12 + 110, qRep_Ypos(EZ,y+1)-2));
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'pk1')+143, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'pk1') + 12 + 143, qRep_Ypos(EZ,y+1)-2));
oValues.lAtleastOneSelectedItem := False;
if (A_Query.A2C('a_mkv') <> '1') then begin
oValues.nSelectedItemIndex := -1;
end else begin
oValues.nSelectedItemIndex := 0;
end;
qRep_PDFFormFieldRadioButton(EZ, 'Kostenvoranschlag', oValues);
y := y - 0.1;
_printText(qRep_SAnfang(EZ, 'pk1') + 190, qRep_SAnfang(EZ, 'pk1') + 280, 'KostenvoranschlagBetr');
y := y + 0.1;
qRep_Stext(EZ,'pk1','Kostenvoranschlag Ja Nein €',qRep_Ypos(EZ,y));
oValues.Reset();
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'pk5')+90, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'pk5') + 12 + 90, qRep_Ypos(EZ,y+1)-2));
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'pk5')+123, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'pk5') + 12 + 123, qRep_Ypos(EZ,y+1)-2));
oValues.lAtleastOneSelectedItem := False;
if (A_Query.A2C('a_mwart') <> '1') then begin
oValues.nSelectedItemIndex := -1;
end else begin
oValues.nSelectedItemIndex := 0;
end;
qRep_PDFFormFieldRadioButton(EZ, 'ServiceVertrag', oValues);
qRep_Stext(EZ,'pk5','Service-Vertrag Ja Nein',qRep_Ypos(EZ,y));
y := y + 1;
oValues.Reset(Rect(qRep_SAnfang(EZ,'pk4'), qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'pk4') + 12, qRep_Ypos(EZ,y+1) -2));
qRep_PDFFormFieldCheckBox(EZ, cName, oValues);
qRep_Stext(EZ,'pk4',' Kulanz',qRep_Ypos(EZ,y));
qSetRepStyle(EZ,[fsBold]);
qRep_Stext(EZ,'pk5','Service-Nr. : '+A_Query.A2C('a_gnr'),qRep_Ypos(EZ,y));
qSetRepStyle(EZ,[]);
y := y + 1;
oValues.Reset();
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'pk4'), qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'pk4') + 12, qRep_Ypos(EZ,y+1)-2));
oValues.AddRadioItem(EZ, Rect(qRep_SAnfang(EZ,'pk4') + 58, qRep_Ypos(EZ,y)+1, qRep_SAnfang(EZ,'pk4') + 12 + 58, qRep_Ypos(EZ,y+1)-2));
oValues.lAtleastOneSelectedItem := False;
qRep_PDFFormFieldRadioButton(EZ, 'ET', oValues);
qRep_Stext(EZ,'pk4',' nur ET ohne ET',qRep_Ypos(EZ,y));
y := y +1;
qRep_Stext(EZ,'pk1','Modell:',qRep_Ypos(EZ,y));
qRep_Stext(EZ,'pk2','Seriennummer:',qRep_Ypos(EZ,y));
qRep_Stext(EZ,'pk4','Zählerstand bk:',qRep_Ypos(EZ,y));
qRep_Stext(EZ,'pk5','Zählerstand color:',qRep_Ypos(EZ,y));
y := y + 2;
_printText(qRep_SAnfang(EZ, 'pk1'), qRep_SAnfang(EZ, 'pk2'), 'Modell');
_printText(qRep_SAnfang(EZ, 'pk2'), qRep_SAnfang(EZ, 'pk4'), 'Seriennummer');
_printText(qRep_SAnfang(EZ, 'pk4'), qRep_SAnfang(EZ, 'pk5'), 'ZaehlerBK');
_printText(qRep_SAnfang(EZ, 'pk5'), iRechterRand, 'ZaehlerColor');
y := y + 2;
// Rep-Text
qRep_Stext(EZ,'pk1','Rep.Text',qRep_Ypos(EZ,y));
y := y + 1;
//MultiLine
oValues.Reset(Rect(qRep_SAnfang(EZ, 'pk1'), qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y+6)));
oValues.cValue := '';
oValues.lIsMultiline := True;
qRep_PDFFormFieldEdit(EZ, 'RepText', oValues);
y := y + 6;
MyFreeAndNil(oValues);
end;
end;
Dokument (Antrag)
procedure Positionen();
var yStart : Double;
yStart2 : Double;
oValues : TFormFieldValue;
nCheckOffset: Integer;
nCheckboxGap: Integer;
cTmp : String;
procedure _printCheckbox(cName: String);
begin
oValues.Reset(Rect(qRep_SAnfang(EZ,'s2') + nCheckboxGap + nCheckOffset, qRep_Ypos(EZ,y) + nCheckOffset, qRep_SAnfang(EZ,'s2') + 12 + nCheckboxGap + nCheckOffset, qRep_Ypos(EZ,y+1) -2 + nCheckOffset));
oValues.oFont.Size := 10;
qRep_PDFFormFieldCheckBox(EZ, cName, oValues);
end;
begin
yStart := y;
qSetRepFontSize(EZ,iFontgroesse);
y := y + 0.5;
// Name
qSetRepStyle(EZ, [fsBold]);
qRep_Stext(EZ, 's2', '1', qRep_Ypos(EZ, y));
qSetRepStyle(EZ,[]);
qRep_Stext(EZ, 's2', ' Name (as shown on your income tax return). Name is requered on this line; do not leave this blank.', qRep_Ypos(EZ, y));
y := y + 0.6;
qSetRepStyle(EZ, [fsBold]);
oValues := TFormFieldValue.Create(Rect(qRep_SAnfang(EZ,'s2'), qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3') - 5, qRep_Ypos(EZ,y+1)));
oValues.cValue := 'John Doe';
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
qRep_PDFFormFieldEdit(EZ, 'Name', oValues);
qSetRepStyle(EZ, []);
y := y - 1;
//Sec Number
qSetRepStyle(EZ, [fsBold]);
qRep_Stext(EZ, 's3', 'Social security number', qRep_Ypos(EZ, y));
qSetRepStyle(EZ, []);
y := y + 0.6;
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3'), qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')+12, qRep_Ypos(EZ,y+1)));
oValues.lIsBorder := True;
oValues.nMaxLength := 1;
qRep_PDFFormFieldNumEdit(EZ, 'Sec1', oValues);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3') + 12, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')+24, qRep_Ypos(EZ,y+1)));
oValues.lIsBorder := True;
oValues.nMaxLength := 1;
qRep_PDFFormFieldNumEdit(EZ, 'Sec2', oValues);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3')+24, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')+36, qRep_Ypos(EZ,y+1)));
oValues.lIsBorder := True;
oValues.nMaxLength := 1;
qRep_PDFFormFieldNumEdit(EZ, 'Sec3', oValues);
qSetRepStyle(EZ, [fsBold]);
qRep_Text(EZ, qRep_SAnfang(EZ,'s3') + 38, qRep_Ypos(EZ,y + 0.3), '-');
qSetRepStyle(EZ, []);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3')+42, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')+54, qRep_Ypos(EZ,y+1)));
oValues.lIsBorder := True;
oValues.nMaxLength := 1;
qRep_PDFFormFieldNumEdit(EZ, 'Sec4', oValues);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3')+54, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')+66, qRep_Ypos(EZ,y+1)));
oValues.lIsBorder := True;
oValues.nMaxLength := 1;
qRep_PDFFormFieldNumEdit(EZ, 'Sec5', oValues);
qSetRepStyle(EZ, [fsBold]);
qRep_Text(EZ, qRep_SAnfang(EZ,'s3') + 68, qRep_Ypos(EZ,y + 0.3), '-');
qSetRepStyle(EZ, []);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3')+72, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')+84, qRep_Ypos(EZ,y+1)));
oValues.lIsBorder := True;
oValues.nMaxLength := 1;
qRep_PDFFormFieldNumEdit(EZ, 'Sec6', oValues);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3')+84, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')+96, qRep_Ypos(EZ,y+1)));
oValues.lIsBorder := True;
oValues.nMaxLength := 1;
qRep_PDFFormFieldNumEdit(EZ, 'Sec7', oValues);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3')+96, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')+108, qRep_Ypos(EZ,y+1)));
oValues.lIsBorder := True;
oValues.nMaxLength := 1;
qRep_PDFFormFieldNumEdit(EZ, 'Sec8', oValues);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3')+108, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')+120, qRep_Ypos(EZ,y+1)));
oValues.lIsBorder := True;
oValues.nMaxLength := 1;
qRep_PDFFormFieldNumEdit(EZ, 'Sec9', oValues);
y := y + 1.4;
qx_PrintLine(EZ, qRep_SAnfang(EZ,'s2') - 2, qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y), 5);
// Business Name
qSetRepStyle(EZ, [fsBold]);
qRep_Stext(EZ, 's2', '2', qRep_Ypos(EZ, y));
qSetRepStyle(EZ,[]);
qRep_Stext(EZ, 's2', ' Business name/disregarded entity name, if different from above', qRep_Ypos(EZ, y));
y := y + 0.6;
qSetRepStyle(EZ, [fsBold]);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s2'), qRep_Ypos(EZ,y), iRechterRand, qRep_Ypos(EZ,y+1)));
oValues.cValue := 'Ernst Bergau GmbH';
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
qRep_PDFFormFieldEdit(EZ, 'Business', oValues);
qSetRepStyle(EZ, []);
y := y + 1;
qx_PrintLine(EZ, qRep_SAnfang(EZ,'s2') - 2, qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y), 5);
yStart2 := y;
// checkboxes Text
qSetRepStyle(EZ, [fsBold]);
qRep_Stext(EZ, 's2', '3', qRep_Ypos(EZ, y));
qSetRepStyle(EZ,[]);
qRep_Stext(EZ, 's2', ' Check appropriate box for federal tax classification; check only one of the seven boxes:', qRep_Ypos(EZ, y));
y := y + 0.8;
// checkboxes
nCheckOffset := 3;
nCheckboxGap := 0;
_printCheckbox('CheckBox1');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20, qRep_Ypos(EZ,y + 0.3), 'Individual/sole proprietor or');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20, qRep_Ypos(EZ,y + 0.9), 'single-member LLC');
//----
nCheckboxGap := 150;
_printCheckbox('CheckBox2');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20 + nCheckboxGap, qRep_Ypos(EZ,y + 0.3), 'C Corporation');
//----
nCheckboxGap := 250;
_printCheckbox('CheckBox3');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20 + nCheckboxGap, qRep_Ypos(EZ,y + 0.3), 'S Corporation');
//----
nCheckboxGap := 350;
_printCheckbox('CheckBox4');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20 + nCheckboxGap, qRep_Ypos(EZ,y + 0.3), 'Partnership');
//----
nCheckboxGap := 450;
_printCheckbox('CheckBox5');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20 + nCheckboxGap, qRep_Ypos(EZ,y + 0.3), 'Trust/estate');
y := y + 2;
//----
nCheckboxGap := 0;
_printCheckbox('CheckBox6');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20 + nCheckboxGap, qRep_Ypos(EZ,y + 0.3), 'Limeted liability company. Enter the Tax classification (C=C corporation, S=S corporation. P=partnership)');
y := y + 0.1;
cTmp := qSetRepFont(EZ, 'Webdings');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 460 + nCheckboxGap, qRep_Ypos(EZ,y + 0.3), '4');
QSetRepFont(EZ, cTmp);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s2') + 470, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s4') - 10, qRep_Ypos(EZ,y+1)));
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
qRep_PDFFormFieldEdit(EZ, 'Limited1', oValues);
y := y + 1;
qx_PrintLine(EZ, qRep_SAnfang(EZ,'s2') + 470, qRep_Ypos(EZ, y), qRep_SAnfang(EZ,'s4') - 10, qRep_Ypos(EZ, y), 5);
//----
y := y + 0.5;
qSetRepStyle(EZ, [fsBold]);
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20, qRep_Ypos(EZ,y), 'Note.');
qSetRepStyle(EZ, []);
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20, qRep_Ypos(EZ,y), ' For a single-member LLC that is disregarded, do not check LLC; check the appropriate boy in the line above for');
y := y + 0.6;
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20, qRep_Ypos(EZ,y), 'the tax classification of the single-member owner.');
y := y + 0.9;
//----
_printCheckbox('Other');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 20 + nCheckboxGap, qRep_Ypos(EZ,y + 0.3), 'Other (see instructions)');
y := y + 0.1;
cTmp := qSetRepFont(EZ, 'Webdings');
qRep_Text(EZ, qRep_SAnfang(EZ,'s2') + 120 + nCheckboxGap, qRep_Ypos(EZ,y + 0.2), '4');
QSetRepFont(EZ, cTmp);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s2') + 130, qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s4') - 10, qRep_Ypos(EZ,y+1)));
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
qRep_PDFFormFieldEdit(EZ, 'Other1', oValues);
y := y + 1;
qx_PrintLine(EZ, qRep_SAnfang(EZ, 's2') - 2, qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y), 5);
qx_PrintLine(EZ, qRep_SAnfang(EZ, 's4')-3, qRep_Ypos(EZ, yStart2), qRep_SAnfang(EZ, 's4')-3, qRep_Ypos(EZ, y), 5);
// Exceptions
qSetRepStyle(EZ, [fsBold]);
qRep_Stext(EZ, 's4', '4', qRep_Ypos(EZ, yStart2));
qSetRepStyle(EZ,[]);
qRep_Stext(EZ, 's4', ' Exeptions (codes apply only to', qRep_Ypos(EZ, yStart2));
yStart2 := yStart2 + 0.6;
qRep_Stext(EZ, 's4', 'certain entities, not individuals; see', qRep_Ypos(EZ, yStart2));
yStart2 := yStart2 + 0.6;
qRep_Stext(EZ, 's4', 'instructions on page 3):', qRep_Ypos(EZ, yStart2));
//Payee code
yStart2 := yStart2 + 0.8;
qRep_Stext(EZ, 's4', 'Exempt payee code (if any)', qRep_Ypos(EZ, yStart2));
yStart2 := yStart2 - 0.2;
oValues.Reset(Rect(qRep_SAnfang(EZ,'s4')+120, qRep_Ypos(EZ,yStart2), iRechterRand, qRep_Ypos(EZ,yStart2+1)));
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
qRep_PDFFormFieldEdit(EZ, 'Payee', oValues);
yStart2 := yStart2 + 1;
qx_PrintLine(EZ, qRep_SAnfang(EZ,'s4') +120, qRep_Ypos(EZ, yStart2), iRechterRand, qRep_Ypos(EZ, yStart2), 5);
yStart2 := yStart2 + 0.3;
qRep_Stext(EZ, 's4', 'Exemption from FATCA reporting', qRep_Ypos(EZ, yStart2));
yStart2 := yStart2 + 0.9;
qRep_Stext(EZ, 's4', 'code (if any)', qRep_Ypos(EZ, yStart2));
yStart2 := yStart2 - 0.2;
oValues.Reset(Rect(qRep_SAnfang(EZ,'s4')+70, qRep_Ypos(EZ,yStart2), iRechterRand, qRep_Ypos(EZ,yStart2+1)));
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
qRep_PDFFormFieldEdit(EZ, 'FATCA', oValues);
yStart2 := yStart2 + 1;
qx_PrintLine(EZ, qRep_SAnfang(EZ,'s4') +70, qRep_Ypos(EZ, yStart2), iRechterRand, qRep_Ypos(EZ, yStart2), 5);
yStart2 := yStart2 + 0.5;
qSetRepFontSize(EZ,4);
qRep_Stext(EZ, 's4', '(Applied to accounts managed outside the U.S.)', qRep_Ypos(EZ, yStart2));
qSetRepFontSize(EZ,iFontgroesse);
yStart2 := y;
// Address
qSetRepStyle(EZ, [fsBold]);
qRep_Stext(EZ, 's2', '5', qRep_Ypos(EZ, y));
qSetRepStyle(EZ,[]);
qRep_Stext(EZ, 's2', ' Address (number, street, and apt. or suit no)', qRep_Ypos(EZ, y));
y := y + 0.6;
qSetRepStyle(EZ, [fsBold]);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s2'), qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3') - 1, qRep_Ypos(EZ,y+1)));
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
qRep_PDFFormFieldEdit(EZ, 'Address', oValues);
qSetRepStyle(EZ, []);
y := y + 1;
qx_PrintLine(EZ, qRep_SAnfang(EZ,'s2') - 2, qRep_Ypos(EZ, y), qRep_SAnfang(EZ,'s3'), qRep_Ypos(EZ, y), 5);
// City
qSetRepStyle(EZ, [fsBold]);
qRep_Stext(EZ, 's2', '6', qRep_Ypos(EZ, y));
qSetRepStyle(EZ,[]);
qRep_Stext(EZ, 's2', ' City, state, and ZIP code', qRep_Ypos(EZ, y));
y := y + 0.6;
qSetRepStyle(EZ, [fsBold]);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s2'), qRep_Ypos(EZ,y), qRep_SAnfang(EZ,'s3')-1, qRep_Ypos(EZ,y+1)));
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
qRep_PDFFormFieldEdit(EZ, 'City', oValues);
qSetRepStyle(EZ, []);
y := y + 1;
qx_PrintLine(EZ, qRep_SAnfang(EZ,'s2') - 2, qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y), 5);
//Requester
qRep_Stext(EZ, 's3', 'Requester''s name and address (optional)', qRep_Ypos(EZ, yStart2));
yStart2 := yStart2 + 0.6;
oValues.Reset(Rect(qRep_SAnfang(EZ,'s3') +1 , qRep_Ypos(EZ,yStart2), iRechterRand, qRep_Ypos(EZ,y)));
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
oValues.lIsMultiline := True;
qRep_PDFFormFieldEdit(EZ, 'Requester', oValues);
qx_PrintLine(EZ, qRep_SAnfang(EZ, 's3'), qRep_Ypos(EZ, yStart2-0.6), qRep_SAnfang(EZ, 's3'), qRep_Ypos(EZ, y), 5);
// Accountnumber
qSetRepStyle(EZ, [fsBold]);
qRep_Stext(EZ, 's2', '7', qRep_Ypos(EZ, y));
qSetRepStyle(EZ,[]);
qRep_Stext(EZ, 's2', ' List account number(s) here (optional)', qRep_Ypos(EZ, y));
y := y + 0.6;
qSetRepStyle(EZ, [fsBold]);
oValues.Reset(Rect(qRep_SAnfang(EZ,'s2'), qRep_Ypos(EZ,y), iRechterRand, qRep_Ypos(EZ,y+1)));
oValues.oFont.Size := iFontgroesse + 2;
oValues.lIsBorder := False;
qRep_PDFFormFieldEdit(EZ, 'Accountnumber', oValues);
qSetRepStyle(EZ, []);
y := y + 1;
qx_PrintLine(EZ, iLinkerRand, qRep_Ypos(EZ, y), iRechterRand, qRep_Ypos(EZ, y), 5);
qx_PrintLine(EZ, qRep_SAnfang(EZ, 's2')-2, qRep_Ypos(EZ, yStart), qRep_SAnfang(EZ, 's2')-2, qRep_Ypos(EZ, y), 5);
y := y + 1;
MyFreeAndNil(oValues);
end;