{$if not def AP_DRUCKMENÜ_H} CONST AP_DRUCKMENÜ_H = 0; {$ incl 'tooltype.h'} PROCEDURE kommentare(gad:p_gadget;zustand:INTEGER); {$ incl 'kommentare.h'} BEGIN CASE cyclezustand(fordruck,gad,zustand) OF 0:k0; 1:k1; 2:k2; 3:k3; 4:k4; 5:k5; 6:k6; 7:k7; ELSE END; END; FUNCTION dateivorhanden(s:STRING):BOOLEAN;{string256} { prüft nach, ob eine Datei vorhanden ist } VAR fi:TEXT; BEGIN reset(fi,s); IF (IORESULT=0) THEN BEGIN dateivorhanden:=TRUE; close(fi); END ELSE dateivorhanden:=FALSE; END; {*******************************************************} TYPE labels=ARRAY[0..12] OF STR; VAR Absender,absend,Briefname,pata,pats:STRING200;STATIC; absendfor,absendser:STRING200;STATIC; { Absenderstrings } Cyclelabels:labels;STATIC; i1,iok,zustand7:Integer;STATIC; out :text;STATIC; dgads : ARRAY[1..10] OF p_Gadget;STATIC; { das Array mit den gadgets } temp : STRING[256];STATIC; anf,zeilenlaenge:INTEGER; codestring:STRING[4]; {*} merker:STRING; { zum merken } {********************************************************} FUNCTION druckerok:BOOLEAN; { Thanks to Diesel ! } CONST PRA = $BFD000; { * Basis-Addresse CIA-B * } TYPE BytePtr = ^Byte; VAR CIA_Byte : BytePtr; CIA_Data : Byte; druckername:STRING[6]; BEGIN druckername:=druckerausgabe; FOR i:= 1 TO 5 DO druckername[i]:=upcase(druckername[i]); IF (druckername='PRT:') OR (druckername='PAR:') THEN BEGIN CIA_Byte := ptr(PRA); CIA_Data := ( CIA_Byte^ ) MOD 4 ; druckerok:=FALSE; CASE CIA_Data of 3 : umeld("Der Drucker ist entweder aus oder offline und hat kein Papier mehr."); 1 : umeld("Der Drucker ist offline."); 2 : umeld("Der Drucker hat kein Papier mehr."); 0 : druckerok:=TRUE; END; END ELSE druckerok:=TRUE; END; PROCEDURE druckcodebearbeitung; { wandelt den ascii code in eine Zahl um der Code kann als /1 /23 /456 vorliegen} VAR dcode: BYTE; BEGIN codestring[1]:=s[anf]; codestring[2]:=chr(0); inc(anf); val(s[anf],i1,iok); IF (iok=0) AND (anf<>zeilenlaenge) THEN BEGIN codestring[2]:=s[anf]; codestring[3]:=chr(0); inc(anf); val(s[anf],i1,iok); IF (iok=0) AND (anf<>zeilenlaenge) THEN BEGIN codestring[3]:=s[anf]; codestring[4]:=CHR(0); inc(anf); END; END; val(codestring,i1,iok); write(out,chr(i1)); {code als char drucken} END; PROCEDURE feldfilter; { sucht die zu ersetzenden Felder raus und ersetzt sie mit dem aktuellen Datensatz } BEGIN IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.name); anf:=anf+6; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.vorname); anf:=anf+9; END ELSE IF pos('',s)=anf THEN BEGIN CASE aktuelleperson^.anrede OF 1: write(out,'Herr'); 2: write(out,'Frau'); 3: write(out,'Firma') ELSE write(out,aktuelleperson^.anrede_s); END; anf:=anf+8; END ELSE IF pos('',s)=anf THEN BEGIN IF anf=2 THEN write(out,'Sehr geehrte') { Zeilenanfang } ELSE write(out,'sehr geehrte'); CASE aktuelleperson^.anrede OF 1: write(out,'r Herr'); 2: write(out,' Frau'); 3: write(out,' Damen und Herren') ELSE write(out,'(r)'); END; anf:=anf+11; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.strasse); anf:=anf+9; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.plz); anf:=anf+5; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.ort); anf:=anf+5; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.email1); anf:=anf+8; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.email2); anf:=anf+8; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.geb); anf:=anf+8; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.tel); anf:=anf+9; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.fax); anf:=anf+5; END ELSE IF pos('',s)=anf THEN BEGIN write(out,aktuellePerson^.kommentar) anf:=anf+11; END ELSE IF pos('',s)=anf THEN BEGIN write(out,absender); anf:=anf+10; END ELSE BEGIN write(out,'/',s[anf]); inc(anf); END; END; PROCEDURE checkzeile; { parsed eine Zeile durch und sucht nach dem Steuerzeichen "/" zweigt, falls eine Zahl folgt nach druckcodebearbeitung, sonst nach feldfilter ab } BEGIN IF ((anf+1)=zeilenlaenge) THEN writeln(out,'/') {wenn am ende der Zeile} ELSE REPEAT IF (s[anf]='/') AND ((anf+1)<>zeilenlaenge) THEN BEGIN inc(anf); IF s[anf] in ['1','2','3','4','5','6','7','8','9','0'] THEN druckcodebearbeitung ELSE feldfilter; END ELSE IF (anf<>zeilenlaenge) THEN BEGIN write(out,s[anf]); inc(anf); END; UNTIL anf>=zeilenlaenge; writeln(out); END; PROCEDURE druckschleife; BEGIN seek(f,0); WHILE NOT eof(f) DO BEGIN readln(f,s); anf:=pos('/',s); IF anf<>0 THEN BEGIN write(out,copy(s,1,anf-1)); zeilenlaenge:=length(s)+1; { +1 war der K(n)ackpunkt } checkzeile; END ELSE writeln(out,s); END; END; PROCEDURE und_los; VAR zustand:INTEGER; BEGIN zustand:=cyclezustand(serdruck,dgads[7],zustand7); IF (zustand=0) THEN druckschleife { aktuelle person drucken } ELSE IF zustand=1 THEN BEGIN { alle Datensätze drucken } dperson:=aktuelleperson; aktuelleperson:=p_person(Plist^.lh_head); druckschleife; WHILE aktuelleperson^.pn.ln_succ^.ln_succ<>NIL DO BEGIN aktuelleperson:=p_Person(aktuelleperson^.pn.ln_succ); druckschleife; END; aktuelleperson:=dperson; END ELSE BEGIN { Selectionsmenge x drucken } dperson:=aktuelleperson; aktuelleperson:=p_person(Plist^.lh_head); dec(zustand); IF aktuelleperson<>NIL THEN IF aktuelleperson^.select[zustand] THEN druckschleife; WHILE aktuelleperson^.pn.ln_succ^.ln_succ<>NIL DO BEGIN aktuelleperson:=p_Person(aktuelleperson^.pn.ln_succ); IF aktuelleperson^.select[zustand] THEN druckschleife; END; aktuelleperson:=dperson; END; END; PROCEDURE kurzvorschau; VAR ok:LONG;STATIC; executestring:STRING[300];STATIC; kvreq:Requester;STATIC; BEGIN IF anzahl>0 THEN BEGIN { Setbusywindow(serdruck,kvreq);} merker:=druckerausgabe; {alte druckerausgabe merken } si:=dgads[1]^.specialinfo; briefname:=si^.buffer; temp:=pfad+briefname; IF dateivorhanden(temp) THEN IF dateivorhanden(textanzeiger) THEN BEGIN druckerausgabe:='ram:addipro.temp'; rewrite(out,druckerausgabe); druckerausgabe:=merker IF (IORESULT=0) THEN BEGIN reset(f,temp); und_los; close(f); close(out); executestring:=textanzeiger+' ram:addipro.temp'; ok:=execute(executestring,0,0); ok:=deleteFile('ram:addipro.temp'); {temporäre Datei löschen } END ELSE BEGIN executestring:='ups ! konnte keine temporäre Datei anlegen !'+chr(10)+ ' Zu wenig Arbeitsspeicher ?'; umeld(executestring); END; END ELSE BEGIN executestring:='Konnte Textanzeiger '+textanzeiger+chr(10)+'nicht finden'; umeld(executestring); END ELSE BEGIN executestring:='Konnte Datei '+temp+' nicht öffnen !'; umeld(executestring); END; { Unbusywindow(serdruck,kvreq);} END ELSE Umeld('Noch kein Datensatz eingegeben '); { Sinnlos } END; PROCEDURE editier; VAR ok:LONG;STATIC; executestring:STRING[300];STATIC; editreq:Requester;STATIC; BEGIN Setbusywindow(serdruck,editreq); si:=dgads[1]^.specialinfo; briefname:=si^.buffer; briefname:=pfad+briefname; IF dateivorhanden(editor) THEN BEGIN executestring:=editor+' '+briefname; ok:=execute(executestring,0,0); END ELSE BEGIN executestring:='Konnte editor '+editor+chr(10)+'nicht finden'; umeld(executestring); END; Unbusywindow(serdruck,editreq); END; PROCEDURE druck; BEGIN IF anzahl>0 THEN BEGIN IF druckerok THEN BEGIN si:=dgads[1]^.specialinfo; briefname:=si^.buffer; temp:=pfad+briefname; reset(f,temp); IF IORESULT<>0 THEN BEGIN umeld('Serienbrieffile nicht gefunden'); exit; END; buffer(f,10000); rewrite(out,druckerausgabe); temp:=chr(31); write(out,temp); und_los; close(out); close(f); END; END ELSE umeld('Noch kein Datensatz eingegeben'); END; PROCEDURE absenderladenfor; BEGIN IF filereqpattern('Absender Laden',absend,pfad,pata) THEN BEGIN temp:=pfad+absend; reset(f,temp); IF ioresult=0 THEN BEGIN readln(f,absender); t[1]:=TagItem(GTST_String,LONG(^absender)); t[2].ti_tag:=TAG_DONE; GT_SetGadgetAttrsA(dgads[4],fordruck,NIL,^t); refreshglist(dgads[4],fordruck,NIL,1); close(f); END; {Else fehler konnte Datei nicht öffnen} END; END; PROCEDURE absenderladenser; BEGIN IF filereqpattern('Absender Laden',absend,pfad,pata) THEN BEGIN temp:=pfad+absend; reset(f,temp); IF ioresult=0 THEN BEGIN readln(f,absender); t[1]:=TagItem(GTST_String,LONG(^absender)); t[2].ti_tag:=TAG_DONE; GT_SetGadgetAttrsA(dgads[4],serdruck,NIL,^t); refreshglist(dgads[4],serdruck,NIL,1); close(f); END; END; END; PROCEDURE absenderspeichern; BEGIN IF filereqpattern('Absender Speichern',absend,pfad,pata) THEN BEGIN si:=dgads[4]^.specialinfo; absender:=si^.buffer; temp:=pfad+absend; IF length(temp)>3 THEN BEGIN s:=Copy(temp,length(temp)-4,4); IF s<>'.abs' THEN temp:=temp+'.abs'; END ELSE temp:=temp+'.abs'; {.abs anhängen} rewrite(f,temp); IF ioresult=0 THEN BEGIN writeln(f,absender); close(f); END; END; END; PROCEDURE höher(wo:p_window;VAR was:p_GADGET;max,min:INTEGER); VAR hilf:INTEGER; BEGIN si:=was^.specialinfo; hilf:=si^.longint; inc(hilf); IF (hilf>max) OR (hilfmax) THEN hilf:=max; t[1]:=TagItem(GT_Underscore,LONG('_')); t[2]:=TagItem(GTIN_Maxchars,3); t[3]:=TagItem(GTIN_NUMBER,hilf); t[4].ti_tag:=TAG_DONE; GT_SetGadgetAttrsA(was,wo,NIL,^t); refreshglist(was,wo,NIL,1); END; {****************************************************} PROCEDURE formularmodus; VAR Formularname,absender:STRING200; zustand25,zustand26,zustand27,zustand28,zustand29:INTEGER; cycle25,cycle26,cycle27,cycle28,cycle29:labels; int7,int10,int13,int16,int19,int22:INTEGER; buffer:STRING; PROCEDURE formularladen; BEGIN si:=dgads[1]^.specialinfo; formularname:=si^.buffer; IF filereqpattern('Formular wählen',formularname,pfad,pats) THEN BEGIN t[1]:=TagItem(GTST_String,LONG(^formularname)); t[2].ti_tag:=TAG_DONE; GT_SetGadgetAttrsA(dgads[1],fordruck,NIL,^t); refreshgadgets(dgads[1],fordruck,NIL); END; END; BEGIN dummy:=FALSE; Computefont(592,151); ww:=computeX(592); wh:=computeY(151); zustand25:=0; zustand26:=0; zustand27:=0; zustand28:=0; zustand29:=0; IF NOT holettint('RECHTER_RAND',int7) THEN int7 :=0; { rechter Rand } IF NOT holettint('LINKER_RAND',int10) THEN int10:=80; { linker Rand } IF NOT holettint('ANZAHL_KOPIEN',int13) THEN int13:=1; { Anzahl Kopien } IF NOT holettint('ETIKETTENBREITE',int16) THEN int16:=30; { Etikettenbreite } IF NOT holettint('LEERZEILEN',int19) THEN int19:=0; { Leerzeilen } IF NOT holettint('ABSTAND',int22) THEN int22:=2; { Abstand } IF holett('FORMULAR_PFAD',buffer) THEN pfad:=buffer ELSE pfad:='sys:'; { voreingestellter pfad } IF holett('ABSENDER_STRING',buffer) THEN absender:=buffer ELSE absender:=''; IF holett('ABSENDER_DATEI',buffer) THEN absend:=buffer ELSE absend:=''; { dateiname des Absenders } IF holett('FORMULAR_NAME',buffer) THEN formularname:=buffer ELSE formularname:=''; IF holett('PATTERN_FORMULAR',buffer) THEN pats:=buffer ELSE pats:='#?.for'; { Pattern für Filerequester im Formularmodus } IF holett('PATTERN_ABSENDER',buffer) THEN pata:=buffer ELSE pata:='#?.abs'; { Pattern für Filerequester des Absenders } Gl1:=NIL; gl1:=CreateContext(^Gl1); t[1]:=TagItem(GT_Underscore,LONG('_')); t[2]:=TagItem(GTST_Maxchars,200); t[3]:=TagItem(GTST_String,long(^Formularname)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(116,5,224,15,'F_ormularname',mytattr, 1,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[1]:=CreateGadgetA(STRING_KIND,gl1,^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(341,5,120,15,'L_aden',mytattr, 2,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[2]:=CreateGadgetA(BUTTON_KIND,dgads[1],^ng,^t); ng:=NewGadget(462,5,119,15,'Editor _...',mytattr, 3,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[3]:=CreateGadgetA(BUTTON_KIND,dgads[2],^ng,^t); t[1]:=TAGITEM(GT_UNDERSCORE,LONG('_')); t[2]:=TagItem(GTST_Maxchars,200); t[3]:=TagItem(GTST_String,LONG(^Absender)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(116,23,224,15,'Abs_ender',mytattr, 4,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[4]:=CreateGadgetA(STRING_KIND,dgads[3],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(341,23,120,15,'_Laden',mytattr, 5,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[5]:=CreateGadgetA(BUTTON_KIND,dgads[4],^ng,^t); ng:=NewGadget(462,23,120,15,'_Speichern',mytattr, 6,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[6]:=CreateGadgetA(BUTTON_KIND,dgads[5],^ng,^t); t[2]:=TagItem(GTIN_Maxchars,3); t[3]:=TagItem(GTIN_NUMBER,int7); t[4]:=tagItem(STRINGA_Justification,GACT_StringCenter); t[5].ti_tag:=TAG_DONE; ng:=NewGadget(116,41,46,15,'L_inker Rand',mytattr, 7,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[7]:=CreateGadgetA(INTEGER_KIND,dgads[6],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(162,41,20,15,'<',mytattr, 8,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[8]:=CreateGadgetA(BUTTON_KIND,dgads[7],^ng,^t); ng:=NewGadget(182,41,20,15,'>',mytattr, 9,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[9]:=CreateGadgetA(BUTTON_KIND,dgads[8],^ng,^t); t[2]:=TagItem(GTIN_Maxchars,3); t[3]:=TagItem(GTIN_NUMBER,int10); t[4]:=tagItem(STRINGA_Justification,GACT_StringCenter); t[5].ti_tag:=TAG_DONE; ng:=NewGadget(310,41,46,15,'_Rechter Rand',mytattr, 10,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[10]:=CreateGadgetA(INTEGER_KIND,dgads[9],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(356,41,20,15,'<',mytattr, 11,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[11]:=CreateGadgetA(BUTTON_KIND,dgads[10],^ng,^t); ng:=NewGadget(376,41,20,15,'>',mytattr, 12,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[12]:=CreateGadgetA(BUTTON_KIND,dgads[11],^ng,^t); t[2]:=TagItem(GTIN_Maxchars,3); t[3]:=TagItem(GTIN_NUMBER,int13); t[4]:=tagItem(STRINGA_Justification,GACT_StringCenter); t[5].ti_tag:=TAG_DONE; ng:=NewGadget(495,41,46,15,'Ko_pien',mytattr, 13,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[13]:=CreateGadgetA(INTEGER_KIND,dgads[12],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(541,41,20,15,'<',mytattr, 14,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[14]:=CreateGadgetA(BUTTON_KIND,dgads[13],^ng,^t); ng:=NewGadget(561,41,20,15,'>',mytattr, 15,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[15]:=CreateGadgetA(BUTTON_KIND,dgads[14],^ng,^t); t[2]:=TagItem(GTIN_Maxchars,3); t[3]:=TagItem(GTIN_NUMBER,int16); t[4]:=tagItem(STRINGA_Justification,GACT_StringCenter); t[5].ti_tag:=TAG_DONE; ng:=NewGadget(116,59,46,15,'Eti_kettbreite',mytattr, 16,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[16]:=CreateGadgetA(INTEGER_KIND,dgads[15],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(162,59,20,15,'<',mytattr, 17,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[17]:=CreateGadgetA(BUTTON_KIND,dgads[16],^ng,^t); ng:=NewGadget(182,59,20,15,'>',mytattr, 18,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[18]:=CreateGadgetA(BUTTON_KIND,dgads[17],^ng,^t); t[2]:=TagItem(GTIN_Maxchars,3); t[3]:=TagItem(GTIN_NUMBER,int19); t[4]:=tagItem(STRINGA_Justification,GACT_StringCenter); t[5].ti_tag:=TAG_DONE; ng:=NewGadget(310,59,46,15,'Leer_zeilen',mytattr, 19,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[19]:=CreateGadgetA(INTEGER_KIND,dgads[18],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(356,59,20,15,'<',mytattr, 20,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[20]:=CreateGadgetA(BUTTON_KIND,dgads[19],^ng,^t); ng:=NewGadget(376,59,20,15,'>',mytattr, 21,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[21]:=CreateGadgetA(BUTTON_KIND,dgads[20],^ng,^t); t[2]:=TagItem(GTIN_Maxchars,3); t[3]:=TagItem(GTIN_NUMBER,int22); t[4]:=tagItem(STRINGA_Justification,GACT_StringCenter); t[5].ti_tag:=TAG_DONE; ng:=NewGadget(497,59,44,15,'Abs_tand',mytattr, 22,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[22]:=CreateGadgetA(INTEGER_KIND,dgads[21],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(541,59,20,15,'<',mytattr, 23,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[23]:=CreateGadgetA(BUTTON_KIND,dgads[22],^ng,^t); ng:=NewGadget(561,59,20,15,'>',mytattr, 24,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[24]:=CreateGadgetA(BUTTON_KIND,dgads[23],^ng,^t); cycle25:=labels('Pica','Elite','Cond','Proportional', NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL); t[2]:=TagItem(GTCY_ACTIVE,zustand25); t[3]:=TagItem(GTCY_Labels,LONG(^Cycle25)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(116,77,200,15,'Dic_hte',mytattr, 25,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[25]:=CreateGadgetA(CYCLE_KIND,dgads[24],^ng,^t); cycle26:=labels('NLQ','Draft',NIL, NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL); t[2]:=TagItem(GTCY_ACTIVE,zustand26); t[3]:=TagItem(GTCY_Labels,LONG(^Cycle26)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(445,77,136,15,'S_chriftart',mytattr, 26,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[26]:=CreateGadgetA(CYCLE_KIND,dgads[25],^ng,^t); Cycle27:=labels('Aktueller Datensatz', 'Alle Datensätze', Selecttexte[1], Selecttexte[2], Selecttexte[3], Selecttexte[4], Selecttexte[5], Selecttexte[6], Selecttexte[7], Selecttexte[8], Selecttexte[9], Selecttexte[10],NIL); t[2]:=TagItem(GTCY_ACTIVE,zustand27); t[3]:=TagItem(GTCY_Labels,LONG(^Cycle27)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(116,95,200,15,'Datens_ätze',mytattr, 27,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[27]:=CreateGadgetA(CYCLE_KIND,dgads[26],^ng,^t); cycle28:=labels('1 Formular', '2 Formulare', '3 Formulare', '4 Formulare',NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL); t[2]:=TagItem(GTCY_ACTIVE,zustand28); t[3]:=TagItem(GTCY_Labels,LONG(^Cycle28)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(445,95,136,15,'_Nebeneinander',mytattr, 28,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[28]:=CreateGadgetA(CYCLE_KIND,dgads[27],^ng,^t); cycle29:=labels('WARENSENDUNG', 'Büchersendung', 'Päckchen', 'Paket', 'VORSICHT DATENTRÄGER !', 'VORSICHT ZERBRECHLICH !', 'INTEL OUTSIDE !', '...', NIL, NIL, NIL, NIL, NIL); t[2]:=TagItem(GTCY_ACTIVE,zustand29); t[3]:=TagItem(GTCY_Labels,LONG(^Cycle29)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(150,113,250,15,'_Verwendungszweck',mytattr, 29,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[29]:=CreateGadgetA(CYCLE_KIND,dgads[28],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(445,113,136,15,'Preise / In_fo',mytattr, 30,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[30]:=CreateGadgetA(BUTTON_KIND,dgads[29],^ng,^t); ng:=NewGadget(5,134,140,15,'_Drucken',mytattr, 31,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[31]:=CreateGadgetA(BUTTON_KIND,dgads[30],^ng,^t); ng:=NewGadget(446,134,140,15,'Ab_bruch (Esc)',mytattr, 32,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[32]:=CreateGadgetA(BUTTON_KIND,dgads[31],^ng,^t); {** Window Öffnen **} t[1]:=TagItem(WA_InnerWidth,ww); t[2]:=TagItem(WA_InnerHeight,wh); t[3].ti_Tag:=WA_Title; t[3].ti_data:='AddiPro Formular drucken'; t[4]:=TagItem(WA_Idcmp,IDCMP_CLOSEWINDOW+IDCMP_GADGETUP+IDCMP_RAWKEY); t[5]:=TagItem(WA_Flags,WFLG_CLOSEGADGET+WFLG_DRAGBAR+WFLG_ACTIVATE+ WFLG_RMBTRAP+WFLG_DEPTHGADGET+WFLG_SMART_REFRESH+WFLG_NOCAREREFRESH); t[6]:=TagItem(WA_Left,formulardruckwinleft); t[7]:=TagItem(WA_Top,formulardruckwintop); t[8].ti_Tag:=TAG_DONE; IF pubname <> "" THEN BEGIN t[8] := TagItem(WA_PubScreenFallBack, 1); t[9] := TagItem(WA_PubScreenName, LONG(pubname)); t[10].ti_Tag := TAG_DONE; END; fordruck:=OpenWindowTaglist(NIL,^t); IF fordruck=NIL THEN exit; raster(fordruck,0,1,592,150); clearq(fordruck,4,2,584,128); Rahmen(fordruck,4,2,585,129,TRUE); l:=addgList(fordruck,gl1,0,-1,NIL); refreshglist(fordruck^.firstgadget,fordruck,NIL,-1); GT_Refreshwindow(fordruck,NIL); dummy:=FALSE; REPEAT GetMessage(fordruck,class,code,qual,gadnum); CASE Class OF IDCMP_CLOSEWINDOW: dummy:=TRUE; IDCMP_RAWKEY: IF qual in [32768,32769,32770,32772] THEN BEGIN CASE code OF 24 : BEGIN {O} ok:=ActivateGadget(dgads[1],fordruck,NIL); END; 32 : BEGIN {A} Butselecter(fordruck,dgads[2]); formularladen; END; 57 : BEGIN {.} Butselecter(fordruck,dgads[3]); { editier;} END; 18 : BEGIN {E} ok:=ActivateGadget(dgads[4],fordruck,NIL); END; 40 : BEGIN {L} Butselecter(fordruck,dgads[5]); absenderladenfor; END; 33 : BEGIN {S} Butselecter(fordruck,dgads[6]); absenderspeichern; END; 23 : BEGIN {I} ok:=ActivateGadget(dgads[7],fordruck,NIL); END; 19 : BEGIN {R} ok:=ActivateGadget(dgads[10],fordruck,NIL); END; 25 : BEGIN {P} ok:=ActivateGadget(dgads[13],fordruck,NIL); END; 39 : BEGIN {K} ok:=ActivateGadget(dgads[16],fordruck,NIL); END; 21 : BEGIN {Z} ok:=ActivateGadget(dgads[19],fordruck,NIL); END; 20 : BEGIN {T} ok:=ActivateGadget(dgads[22],fordruck,NIL); END; 37 : BEGIN {H} changecycler(fordruck,dgads[25],PTR(^Cycle25),4,zustand25); END; 51 : BEGIN {C} changecycler(fordruck,dgads[26],PTR(^Cycle26),2,zustand26); END; 42 : BEGIN {Ä} changecycler(fordruck,dgads[27],PTR(^Cycle27),12,zustand27); END; 54 : BEGIN {N} changecycler(fordruck,dgads[28],PTR(^Cycle28),4,zustand28); END; 52 : BEGIN {V} changecycler(fordruck,dgads[29],PTR(^Cycle29),5,zustand29); END; 35 : BEGIN {F} Butselecter(fordruck,dgads[30]); kommentare(dgads[29],zustand29); END; 37 : BEGIN {D} Butselecter(fordruck,dgads[31]); END; 53,69 : BEGIN {B, ESC} Butselecter(fordruck,dgads[32]); dummy:=TRUE; END; ELSE END; END; IDCMP_GadgetUP: CASE gadnum OF 2: formularladen; 3: {editier}; 5: absenderladenfor; 6: absenderspeichern; 8: tiefer(fordruck,dgads[7],256,0); 9: höher(fordruck,dgads[7],256,0); 11: tiefer(fordruck,dgads[10],200,0); 12: höher(fordruck,dgads[10],200,0); 14: tiefer(fordruck,dgads[13],999,1); 15: höher(fordruck,dgads[13],999,0); 17: tiefer(fordruck,dgads[16],200,0); 18: höher(fordruck,dgads[16],200,0); 20: tiefer(fordruck,dgads[19],999,0); 21: höher(fordruck,dgads[19],999,0); 23: tiefer(fordruck,dgads[22],200,0); 24: höher(fordruck,dgads[22],200,0); 25:; 26:; 27:; 28:; 29: BEGIN if zustand29<7 THEN inc(zustand29) ELSE zustand29:=0; END; 30:kommentare(dgads[29],zustand29); 31:; 32: dummy:=TRUE; ELSE END; ELSE END; UNTIL dummy; l:=removegList(fordruck,fordruck^.firstgadget,-1); formulardruckwinleft:=fordruck^.leftedge; formulardruckwintop:=fordruck^.topedge; Closewindow(fordruck); Freegadgets(gl1); ComputeFont(MainWinWidth,MainWinHeight); ww := ComputeX(MainWinWidth); wh := ComputeY(MainWinHeight); Unbusywindow(wp,Mainreq); END; PROCEDURE briefladen BEGIN si:=dgads[1]^.specialinfo; briefname:=si^.buffer; IF filereqpattern('Serienbrief wählen',briefname,pfad,pats) THEN BEGIN t[1]:=TagItem(GTST_String,LONG(^briefname)); t[2].ti_tag:=TAG_DONE; GT_SetGadgetAttrsA(dgads[1],serdruck,NIL,^t); refreshgadgets(dgads[1],serdruck,NIL); END; END; {************************************************************} PROCEDURE serienende; { schließt Serienfenster ... } BEGIN druckwin:=FALSE; { WHILE msg<>NIL DO BEGIN msg := GT_GetIMsg(serdruck^.UserPort); GT_ReplyIMsg(msg); END;} l:=removegList(serdruck,serdruck^.firstgadget,-1); seriendruckwinleft:=serdruck^.leftedge; seriendruckwintop:=serdruck^.topedge; { Windowposition merken wird dann auch in den} Fenster_Zu(serdruck); { Preferences abgespeichert } freegadgets(gl1); msg:=NIL; serdruck:=NIL; END; PROCEDURE serienbriefmsg; { verarbeitet die msgs für den serienbriefmodus } BEGIN msg := GT_GetIMsg(serdruck^.UserPort); WHILE (msg<>NIL) DO BEGIN class := msg^.Class; code := msg^.Code; qual := msg^.Qualifier; GT_ReplyIMsg(msg); CASE class OF IDCMP_CLOSEWINDOW: serienende; IDCMP_RAWKEY: IF qual in [32768,32769,32770,32772] THEN BEGIN CASE code OF 54 : BEGIN {N} changecycler(serdruck,dgads[7],PTR(^Cyclelabels),12,zustand7); END; 19 : BEGIN {R} ok:=ActivateGadget(dgads[1],serdruck,NIL); END; 40 : BEGIN {L} Butselecter(serdruck,dgads[5]); absenderladenser; END; 32 : BEGIN {A} Butselecter(serdruck,dgads[2]); briefladen; END; 39 : BEGIN{K} Butselecter(serdruck,dgads[3]); kurzvorschau; END; 34 : BEGIN{D} Butselecter(serdruck,dgads[9]); druck; END; 18 : BEGIN{E} ok:=ActivateGadget(dgads[4],serdruck,NIL); END; 33 : BEGIN Butselecter(serdruck,dgads[6]); absenderspeichern; END; 24 : BEGIN Butselecter(serdruck,dgads[8]); editier; {o} END; 69,53 : BEGIN {ESC,B} Butselecter(serdruck,dgads[10]); serienende; END; ELSE END; END; IDCMP_GADGETUP: BEGIN KlickG := msg^.IAddress; GadNum := KlickG^.GadgetID; CASE Gadnum OF 2 : briefladen; 3 : Kurzvorschau; 5 : absenderladenser; 6 : absenderspeichern; 7 : BEGIN IF Zustand7<11 THEN inc(zustand7) ELSE zustand7:=0; { nur für < OS39 nötig !} END; 8 : editier; 9 : Druck; 10 : serienende; ELSE END; END; ELSE END; IF (msg<>NIL) THEN msg := GT_GetIMsg(serdruck^.UserPort); END; END; PROCEDURE serienbrief; VAR buffer:STRING; hilfi:INTEGER; BEGIN Cyclelabels:=labels('Aktueller Datensatz', 'Alle Datensätze', Selecttexte[1], Selecttexte[2], Selecttexte[3], Selecttexte[4], Selecttexte[5], Selecttexte[6], Selecttexte[7], Selecttexte[8], Selecttexte[9], Selecttexte[10],NIL); dummy:=FALSE; Computefont(551,78); ww:=computeX(551); wh:=computeY(78); gl1:=NIL; gl1:=CreateContext(^gl1); IF holett('FORMULAR_PFAD',buffer) THEN pfad:=buffer ELSE pfad:='sys:'; { voreingestellter pfad } IF holett('ABSENDER_STRING',buffer) THEN absender:=buffer ELSE absender:=''; IF holett('ABSENDER_DATEI',buffer) THEN absend:=buffer ELSE absend:=''; { dateiname des Absenders } IF holett('BRIEF_NAME',buffer) THEN briefname:=buffer ELSE briefname:=''; IF holett('PATTERN_SERIENBRIEF',buffer) THEN pats:=buffer ELSE pats:='#?.ser'; { Pattern für Filerequester } IF holett('PATTERN_ABSENDER',buffer) THEN pata:=buffer ELSE pata:='#?.abs'; { Pattern für Filerequester des Absenders } IF NOT holettint('DATENSÄTZE_BRIEF',hilfi) THEN zustand7:=0 ELSE CASE hilfi OF 1: zustand7:=2; 2: zustand7:=3; 3: zustand7:=4; 4: zustand7:=5; 5: zustand7:=6; 6: zustand7:=7; 7: zustand7:=8; 8: zustand7:=9; 9: zustand7:=10; 10: zustand7:=11; 11: zustand7:=0; 12: zustand7:=1 ELSE zustand7:=0; END; { OF CASE } t[1]:=TagItem(GT_Underscore,LONG('_')); t[2]:=TagItem(GTST_Maxchars,200); t[3]:=TagItem(GTST_String,long(^Briefname)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(100,5,200,15,'B_riefname',mytattr, 1,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[1]:=CreateGadgetA(STRING_KIND,gl1,^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(301,5,120,15,'L_aden',mytattr, 2,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[2]:=CreateGadgetA(BUTTON_KIND,dgads[1],^ng,^t); ng:=NewGadget(422,5,120,15,'_Kurzvorschau',mytattr, 3,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[3]:=CreateGadgetA(BUTTON_KIND,dgads[2],^ng,^t); t[1]:=TAGITEM(GT_UNDERSCORE,LONG('_')); t[2]:=TagItem(GTST_Maxchars,200); t[3]:=TagItem(GTST_String,LONG(^Absender)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(100,23,200,15,'Abs_ender',mytattr, 4,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[4]:=CreateGadgetA(STRING_KIND,dgads[3],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(301,23,120,15,'_Laden',mytattr, 5,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[5]:=CreateGadgetA(BUTTON_KIND,dgads[4],^ng,^t); ng:=NewGadget(422,23,120,15,'_Speichern',mytattr, 6,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[6]:=CreateGadgetA(BUTTON_KIND,dgads[5],^ng,^t); zustand7:=0; t[2]:=TagItem(GTCY_ACTIVE,zustand7); t[3]:=TagItem(GTCY_Labels,LONG(^Cyclelabels)); t[4].ti_tag:=TAG_DONE; ng:=NewGadget(100,41,200,14,'Date_nsätze',mytattr, 7,PLACETEXT_LEFT, vi,NIL); sensitivgadget(ng); dgads[7]:=CreateGadgetA(CYCLE_KIND,dgads[6],^ng,^t); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(422,41,120,15,'... Edit_or',mytattr, 8,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[8]:=CreateGadgetA(BUTTON_KIND,dgads[7],^ng,^t); ng:=NewGadget(5,61,140,15,'_Drucken',mytattr, 9,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[9]:=CreateGadgetA(BUTTON_KIND,dgads[8],^ng,^t); ng:=NewGadget(406,61,140,15,'Ab_bruch (Esc)',mytattr, 10,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[10]:=CreateGadgetA(BUTTON_KIND,dgads[9],^ng,^t); t[1]:=TagItem(WA_InnerWidth,ww); t[2]:=TagItem(WA_InnerHeight,wh); t[3].ti_Tag:=WA_Title; t[3].ti_data:='AddiPro Serienbrief drucken'; t[4]:=TagItem(WA_Idcmp,IDCMP_CLOSEWINDOW+IDCMP_GADGETUP+IDCMP_RAWKEY); t[5]:=TagItem(WA_Flags,WFLG_CLOSEGADGET+WFLG_DRAGBAR+WFLG_ACTIVATE+ WFLG_DEPTHGADGET+WFLG_SMART_REFRESH+WFLG_NOCAREREFRESH); t[6]:=TagItem(WA_Left,seriendruckwinleft); t[7]:=TagItem(WA_Top,seriendruckwintop); t[8].ti_Tag:=TAG_DONE; IF pubname <> "" THEN BEGIN t[8] := TagItem(WA_PubScreenFallBack, 1); t[9] := TagItem(WA_PubScreenName, LONG(pubname)); t[10].ti_Tag := TAG_DONE; END; serdruck:=OpenWindowTaglist(NIL,^t); IF serdruck<>NIL THEN BEGIN raster(serdruck,{0,0,551,78}0,1,551,77); clearq(serdruck,4,2,543,55{56}); Rahmen(serdruck,4,2,543,56,TRUE); l:=addgList(serdruck,gl1,0,-1,NIL); refreshglist(serdruck^.firstgadget,serdruck,NIL,-1); { Gagets refreshen } druckmask := LONG(1) SHL LONG(serdruck^.UserPort^.mp_SigBit); druckwin:=TRUE; END; END; { { Zuerst wird ein Fenster geöffnet mit den 3 Druckmöglichkeiten Formulare+Listenmodus+Serienbrief } PROCEDURE dreimöglichkeiten; PROCEDURE mach_zu; BEGIN l:=removegList(wp1,wp1^.firstgadget,-1); druckwinleft:=wp1^.leftedge; druckwintop:=wp1^.topedge; Fenster_Zu(wp1); freegadgets(gl1); unbusywindow(wp,mainreq); END; BEGIN dummy:=FALSE; Computefont(440,44); ww:=computeX(440); wh:=computeY(44); gl1:=NIL; gl1:=CreateContext(^gl1); t[1]:=TagItem(GT_Underscore,LONG('_')); t[2].ti_tag:=TAG_DONE; ng:=NewGadget(9,5,140,15,'_Formularmodus',mytattr, 1,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[1]:=CreateGadgetA(BUTTON_KIND,gl1,^ng,^t); {} t[2]:=TagItem(GA_disabled,LONG(TRUE)); {} t[3].ti_tag:=TAG_DONE; ng:=NewGadget(150,5,140,15,'_Listenmodus',mytattr, 2,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[2]:=CreateGadgetA(BUTTON_KIND,dgads[1],^ng,^t); {} t[2].ti_tag:=TAG_DONE; ng:=NewGadget(291,5,140,15,'_Serienbriefmodus',mytattr, 3,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[3]:=CreateGadgetA(BUTTON_KIND,dgads[2],^ng,^t); ng:=NewGadget(291,26,140,15,'Ab_bruch (Esc)',mytattr, 4,PLACETEXT_IN, vi,NIL); sensitivgadget(ng); dgads[4]:=CreateGadgetA(BUTTON_KIND,dgads[3],^ng,^t); t[1]:=TagItem(WA_InnerWidth,ww); t[2]:=TagItem(WA_InnerHeight,wh); t[3].ti_Tag:=WA_Title; t[3].ti_data:='AddiPro Druckmodi'; t[4]:=TagItem(WA_Idcmp,IDCMP_CLOSEWINDOW+IDCMP_GADGETUP+IDCMP_RAWKEY); t[5]:=TagItem(WA_Flags,WFLG_CLOSEGADGET+WFLG_DRAGBAR+WFLG_ACTIVATE+ WFLG_DEPTHGADGET+WFLG_SMART_REFRESH+WFLG_NOCAREREFRESH); t[6]:=TagItem(WA_Left,druckwinleft); t[7]:=TagItem(WA_Top,druckwintop); t[8].ti_Tag:=TAG_DONE; IF pubname <> "" THEN BEGIN t[8] := TagItem(WA_PubScreenFallBack, 1); t[9] := TagItem(WA_PubScreenName, LONG(pubname)); t[10].ti_Tag := TAG_DONE; END; wp1:=OpenWindowTaglist(NIL,^t); IF wp1<>NIL THEN BEGIN raster(wp1,0,1,439{0,440},44); clearq(wp1,4,2,432,{21}20); Rahmen(wp1,4,2,432,21,TRUE); l:=addgList(wp1,gl1,0,-1,NIL); refreshglist(wp1^.firstgadget,wp1,NIL,-1); { Gagets refreshen } REPEAT GetMessage(wp1,class,code,qual,gadnum); CASE class OF IDCMP_CLOSEWINDOW: BEGIN dummy:=TRUE; mach_zu; END; IDCMP_RAWKEY: IF qual in [32768,32769,32770,32772] THEN BEGIN CASE code OF 35 : BEGIN ButSelecter(wp1,dgads[1]); mach_zu; Formularmodus; dummy:=TRUE; END; 40 : BEGIN ButSelecter(wp1,dgads[2]); mach_zu; dummy:=TRUE; END; 33 : BEGIN Butselecter(wp1,dgads[3]); mach_zu; Serienbrief; dummy:=TRUE; END; 69,53 : BEGIN {ESC,B} Butselecter(wp1,dgads[4]); mach_zu; dummy:=TRUE; END; ELSE END; END; IDCMP_GADGETUP: CASE Gadnum OF 1 : BEGIN mach_zu; formularmodus; dummy:=TRUE; END; 2 : BEGIN mach_zu; {Listenmodus;} dummy:=TRUE; END; 3 : BEGIN mach_zu; serienbrief; dummy:=TRUE; END; 4 : BEGIN mach_zu; dummy:=TRUE; END; ELSE END; ELSE END; UNTIL dummy; END; END; PROCEDURE drucken; { der eigentliche Druckanfang } BEGIN IF serdruck=NIL THEN dreimöglichkeiten ELSE unbusywindow(wp,mainreq); END; } {$endif}