{$if not def AP_Etikettdruck_H}

 CONST
  AP_EtikettDRUCK_H = 0;

VAR 
     elistdz,elistsz:LONG; {Zähler für Anzahl der elemente}
     etikettname:STRING200;
     string31:STRING200;
     zustand28,zustand29,zustand30:INTEGER;
     cycle28,cycle29,cycle30:labels;
     int7,int10,int13,int16,int19,int22,int25:INTEGER;

PROCEDURE etikettdruck(vonmain:BOOLEAN);

 CONST Esc=CHR(27);
   
 VAR Lrand:STRING[256];   { linker Rand }
     abstand,etikettlaenge:STRING[100]; { Zeilenabstand,Etikettlänge}
     fetton,fettoff,schmalon,schmaloff,unteron,unteroff:STRING[10];
  
  
  
  PROCEDURE elementeinfuegen(welcher:p_person;
    VAR position :INTEGER; codemask,nebeneinander,ebreite,gruppe:INTEGER);
  { schreibt eine Zeile !}
  {** position: 1. oder ..4 Etikett in der Zeile
      codemask: codemask d.h. Code für Ort, name, ...
      nebeneinander: wieviele Etiketten nebeneinander
      ebreite: Etikettbreite
      gruppe: Gibt an, welche Gruppe gedruckt werden soll {von zustand29}
  
     davor muß initialisiert sein: 
       ls mit 256 Leerzeichen,
       Procedure holealles        **}

   CONST engcpi    = 17; {Schriftbreite eng}
         normalcpi = 10; {standarteingestellte Schriftbreite}
   
   VAR dbegin: p_person; {um übergebene Person nicht zu löschen}
       cstring: STRING[300]; { zu kopierender String}
       steuercodes:INTEGER;  { gibt an, wie viele Steuercodes im String. Wegen Breite}
       steuercodesgesamt:INTEGER; { dito, aber insgesamt pro Zeile}
       start,engstart:INTEGER;
       {start: startpunkt, um Text in x.tes Etikett zu drucken}
       Zbreite:INTEGER; {Zeilenbreite}  
       pzähler:INTEGER; { Personenzähler d.h. wieviele Personen pro Zeile sind
                          schon gedruckt}
 
   FUNCTION ist_in_gruppe(gruppe:INTEGER):BOOLEAN;
    BEGIN
     ist_in_gruppe:=FALSE;
     CASE gruppe OF
       1 :ist_in_gruppe:=TRUE; {alle Datensätze}
       0 :; {ist immer falsch, da es nur eine aktuelle Person gibt}
       2..10 : IF dbegin^.select[gruppe-1] THEN ist_in_Gruppe:=TRUE;  
     END; {OF CASE}
    END;

   BEGIN
   zbreite:=int10-int7;                    {zeilenbreite=rechter-linker rand}
   dbegin:=welcher;
    IF (gruppe<>0) THEN 
     BEGIN
      WHILE ((NOT ist_in_gruppe(gruppe)) AND (dbegin<>NIL)) DO
       dbegin:=p_person(dbegin^.pn.ln_succ)
     END
    steuercodesgesamt:=0;
    start:=1;
    pzähler:=0;
    {Etikettbreite notfalls aus Zeilenbreite und Anzahl der Etiketten berechnen}
    IF (zbreite-(nebeneinander*ebreite))<0 THEN ebreite:=zbreite DIV nebeneinander;
    IF Position>1 THEN FOR i:=1 TO position DO start:=start+ebreite; 
       {Wenn nicht 1. Etikett in Zeile, dann Leerzeichen einfuegen}
    REPEAT
     IF dbegin<>NIL THEN
     BEGIN
      steuercodes:=0;
      CASE codemask OF
       d_co               : cstring:=dbegin^.co;
       d_name             : cstring:=dbegin^.name;
       d_vname            : cstring:=dbegin^.vorname;
       d_strasse          : cstring:=dbegin^.strasse;
       d_ort              : cstring:=dbegin^.ort;
       d_Land             : cstring:=dbegin^.land;
       d_plz              : cstring:=dbegin^.plz;
       d_absender         : cstring:=absender;
       d_absenderschmal   : BEGIN
                             steuercodes:=length(schmalon)+length(unteron)+
                                          length(schmaloff)+length(unteroff);
                             cstring:=schmalon+unteron+absender+schmaloff+unteroff;
                            END;
       d_verwendungszweck : cstring:=string31;
       d_vname_name       : cstring:=dbegin^.vorname+' '+dbegin^.name;
       d_anrede           : cstring:=dbegin^._anrede
       d_plz_ort          : cstring:=dbegin^.plz+' '+dbegin^.ort; 
       d_plz_ort_fett     : BEGIN
                             steuercodes:=length(fetton)+length(fettoff);
                             cstring:=fetton+dbegin^.plz+' '+dbegin^.ort+fettoff;
                            END;
       d_ort_fett         : BEGIN
                             steuercodes:=length(fetton)+length(fettoff);
                             cstring:=fetton+dbegin^.ort+fettoff;
                            END;
       d_leerzeile        : cstring:=' ';
      ELSE END;{OF CASE}
     IF codemask<>d_absenderschmal THEN
       BEGIN
        { zu langen String kürzen }
        cstring[ebreite]:=CHR(0);
        { Feld in Etikett einfügen }
        delete(ls,start,length(cstring)+1);
        insert(cstring,ls,start);
        ls[start+length(cstring)]:=CHR(0);
       END
      ELSE  {schmalschrift? mit engcpi statt normalcpi}
       BEGIN
        engstart:=round((normalcpi/engcpi)*start); {engstart berechnen}
       IF engstart=0 THEN engstart:=1;    
        delete(ls,engstart,length(cstring)+1);
        insert(cstring,ls,engstart) 
        ls[engstart+length(cstring)]:=CHR(0);
       END;
      WHILE ((NOT ist_in_gruppe(gruppe)) AND (dbegin<>NIL)) DO
       dbegin:=p_person(dbegin^.pn.ln_succ)
    END;
    UNTIL (position=nebeneinander) OR (dbegin=NIL) {wie Seriendruck}
    writeln(f,lrand,ls);
   END;
  
  PROCEDURE schreibe1etikett(welcher:p_person;etikett:p_list);
  {** druckt ein Etikett **}
  VAR p:p_etstr;
      eins:INTEGER;
   BEGIN
    p:=p_etstr(etikett^.lh_head);
    eins:=1;
    FOR i:=1 TO anzahlenodes(elistd) DO
     BEGIN
      for i:=1 TO 255 DO ls[i]:=' ';
      elementeinfuegen(welcher,eins ,p^.mask,zustand30+1,int19 ,zustand29);
      p:=p_etstr(p^.en.ln_succ);
     END;
     for i:=1 TO (int22-1) DO writeln(f); {etikettabstand}
   END;
  
 PROCEDURE und_los;
 VAR zustand:INTEGER;
 BEGIN
    l:=int25;
    WHILE l>1 DO      {Leeretiketten vorschieben}
     BEGIN 
      dec(l);
      for i:=1 TO (int22-1) DO writeln(f); {etikettabstand}
{**}      for i:=1 TO anzahlEnodes(elistd) DO writeln(f); {etikettlaenge}
     END; 
  
   IF zustand28=0 THEN ls:=esc+'[2"z'  {NLQ}
                  ELSE ls:=esc+'[1"z'; {draft} 
    write(f,ls);
  
    zustand:=zustand29
    IF (zustand=0) THEN schreibe1Etikett(aktuelleperson,elistd) { aktuelle person drucken }
{       ELSE IF zustand=1 THEN
    BEGIN                                      { alle Datensätze drucken }
     dperson:=aktuelleperson;
     aktuelleperson:=p_person(Plist^.lh_head);
     schreibe1Etikett(aktuelleperson,elistd);
     WHILE aktuelleperson^.pn.ln_succ^.ln_succ<>NIL DO
      BEGIN
       aktuelleperson:=p_Person(aktuelleperson^.pn.ln_succ);
       schreibe1Etikett(aktuelleperson,elistd);
      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 schreibe1Etikett(aktuelleperson,elistd);
     END;
     aktuelleperson:=dperson;
    END;
}   close(f);
  END;

    
 BEGIN
  lrand:='';
  fetton:=Esc+'[1m';
  fettoff:=esc+'[22m';
  schmalon:=esc+'[4w';
  schmaloff:=esc+'[3w';
  unteron:=esc+'[4m';
  unteroff:=esc+'[24m';
  for i:=0 TO (int7) DO lrand:=lrand+' '; {linken Rand kreieren}
  rewrite(f,druckerausgabe);  
  IF IORESULT=0 THEN und_los;
{  ELSE fehlermeldung}
 END;



PROCEDURE Etikettmodus;

   VAR  dgads:ARRAY[1..40] OF p_gadget;
        puffer:STRING;

PROCEDURE ladeetikett(s:STRING200);
 BEGIN
  
  reset(f,s);
  IF IORESULT=0 THEN 
   BEGIN
    buffer(f,1000);
    writeln(f,absender);            { absender         }
    writeln(f,string31);            { verwendungszweck }
    writeln(f,intstr(int7));        { linker Rand      }
    writeln(f,intstr(int10));       { rechter Rand     }
    writeln(f,intstr(int13));       { Kopien           }
    writeln(f,intstr(int16));       { Seitenlänge      }
    writeln(f,intstr(int19));       { Etikettbreite    }
    writeln(f,intstr(int22));       { Abstand          }
    writeln(f,intstr(int25));       { 1. Etikett       }
    writeln(f,intstr(zustand28));   { Schriftart       }
    writeln(f,intstr(zustand29));   { Datensätze       }
    writeln(f,intstr(zustand30));   { Nebeneinander    }
    { Listviewinhalte speichern }
    pen:=p_etstr(elistd^.lh_head);
    while NOT eof(f) DO
    BEGIN 
     writeln(f,intstr(pen^.mask))
     pen:=p_etstr(pen^.en.ln_succ);
    END;
    close(f);
  END;
 END;


 PROCEDURE Etikettladen;
  BEGIN
   si:=dgads[1]^.specialinfo;
   Etikettname:=si^.buffer;
   s:=GetLocStr(EDRUCK_ETIKETT_LADEN);
   IF filereqpattern(s,Etikettname,pfad,pats) THEN
   BEGIN
    ladeetikett(etikettname);
    t[1]:=TagItem(GTST_String,LONG(^Etikettname)); 
    t[2].ti_tag:=TAG_DONE;
    GT_SetGadgetAttrsA(dgads[1],fordruck,NIL,^t);
    refreshgadgets(dgads[1],fordruck,NIL);
   END;
  END;

PROCEDURE holalles;
 BEGIN
  holezahl(int7,dgads[7]);
  holezahl(int10,dgads[10]);
  holezahl(int13,dgads[13]);
  holezahl(int16,dgads[16]);
  holezahl(int19,dgads[19]);
  holezahl(int22,dgads[22]);
  holezahl(int25,dgads[25]);
  IF OS39 THEN 
   BEGIN
    berichtigezustand(zustand28,dgads[28],fordruck);
    berichtigezustand(zustand29,dgads[29],fordruck);
    berichtigezustand(zustand30,dgads[30],fordruck);
   END;   
  si:=dgads[4]^.specialinfo;
  absender:=si^.buffer;
  si:=dgads[31]^.specialinfo;
  string31:=si^.buffer;
 END;

PROCEDURE speicheretikett(s:STRING200);
 BEGIN
{  writeln('speicher Etikett: ',s);}
  rewrite(f,s);
  IF IORESULT=0 THEN 
   BEGIN
    buffer(f,1000);
    writeln(f,absender);            { absender         }
    writeln(f,string31);            { verwendungszweck }
    writeln(f,intstr(int7));        { linker Rand      }
    writeln(f,intstr(int10));       { rechter Rand     }
    writeln(f,intstr(int13));       { Kopien           }
    writeln(f,intstr(int16));       { Seitenlänge      }
    writeln(f,intstr(int19));       { Etikettbreite    }
    writeln(f,intstr(int22));       { Abstand          }
    writeln(f,intstr(int25));       { 1. Etikett       }
    writeln(f,intstr(zustand28));   { Schriftart       }
    writeln(f,intstr(zustand29));   { Datensätze       }
    writeln(f,intstr(zustand30));   { Nebeneinander    }
    { Listviewinhalte speichern }
    pen:=p_etstr(elistd^.lh_head);
    FOR i:=1 TO anzahlEnodes(elistd) DO
    BEGIN 
     writeln(f,intstr(pen^.mask))
     pen:=p_etstr(pen^.en.ln_succ);
    END;
    close(f);
  END;
 END;


PROCEDURE Etikettspeichern;
 BEGIN
   si:=dgads[1]^.specialinfo;
   Etikettname:=si^.buffer;
   s:=GetLocStr(EDRUCK_ETIKETT_SPEICHERN);
   IF filereqpattern(s,Etikettname,pfad,pats) THEN
   BEGIN
    t[1]:=TagItem(GTST_String,LONG(^Etikettname)); 
    t[2].ti_tag:=TAG_DONE;
    GT_SetGadgetAttrsA(dgads[1],fordruck,NIL,^t);
    refreshgadgets(dgads[1],fordruck,NIL);
    s:=pfad+Etikettname;
    speicheretikett(s);
   END;  
 END;


PROCEDURE wahl; 
 CONST wahlwidth=302;
       wahlheight=93;

 VAR wgad:ARRAY[1..3] OF p_gadget;
  
 PROCEDURE wahloberfläche;
  BEGIN
   ComputeFont(wahlWidth,wahlHeight);
   ww := ComputeX(wahlWidth);
   wh := ComputeY(wahlHeight);
   gl2:=NIL;
   gl2:=CreateContext(^gl2);

   ng := NewGadget(2,2,298,76,
                   NIL,MyTattr,
                   1,0,
                   vi,NIL);
  SensitivGadget(ng);
  initialisiere_vlist;
  t[1] := TagItem(GTLV_Labels, LONG(vList));
  t[2] := TagItem(GTLV_ShowSelected,0);
  t[3] := TagItem(GTLV_Selected,0);
  t[4].ti_Tag := TAG_DONE;

  wgad[1] := CreateGadgetA(LISTVIEW_KIND,gl2,^ng,^t);
  
  t[1]:=TagItem(GT_Underscore,LONG('_'));
  t[2].ti_Tag := TAG_DONE;

  ng := NewGadget(2,79,145,14,
                  GetLocStr(EDRUCK_EW_OK),MyTattr,
                  2,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[2] := CreateGadgetA(BUTTON_KIND,wgad[1],^ng,^t);
                     
  ng := NewGadget(150,79,150,14,
                  GetLocStr(EDRUCK_EW_ABBRUCH),MyTattr,
                  3,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[3] := CreateGadgetA(BUTTON_KIND,wgad[2],^ng,^t);


   t[1] := TagItem(WA_InnerWidth,ww);
   t[2] := TagItem(WA_InnerHeight,wh);
   t[3] := TagItem(WA_IDCMP,{IDCMP_GADGETUP OR
                            IDCMP_GADGETDOWN OR
                            IDCMP_MOUSEBUTTONS OR
                            IDCMP_CLOSEWINDOW OR
                            IDCMP_INTUITICKS OR
                            IDCMP_CHANGEWINDOW OR
                            IDCMP_MOUSEMOVE OR
                            IDCMP_RAWKEY}mainidcmp);
   t[4] := TagItem(WA_Flags, WFLG_ACTIVATE+
                             WFLG_CLOSEGADGET+
                             WFLG_DRAGBAR+
                             WFLG_DEPTHGADGET+
                             WFLG_HASZOOM);
   t[5] := TagItem(WA_Gadgets, LONG(gl2));
   t[6] := TagItem(WA_MaxWidth, psw);
   t[7] := TagItem(WA_MaxHeight, psh);
   t[8] := TagItem(WA_MinWidth, 200);
   t[9] := TagItem(WA_MinHeight, yoff+1);
   t[10].ti_Tag := WA_Title;
   t[10].ti_Data :=LONG(GetLocStr(EDRUCK_WAHL_TITEL));
   t[11] := TagItem(WA_Left, wahlWinLeft);
   t[12] := TagItem(WA_Top, wahlWinTop); 
   t[13].ti_Tag := TAG_DONE;
   IF pubname <> "" THEN
   BEGIN
     t[13] := TagItem(WA_PubScreenFallBack, 1);
     t[14] := TagItem(WA_PubScreenName, LONG(pubname));
     t[15].ti_Tag := TAG_DONE;
   END;
   wp2 := OpenWindowTagList(NIL,^t);
  END;
 
 PROCEDURE übertragestring31; {schreibt Verwendungszweck ins Gadget}
  BEGIN
   string31:=aktuellere^.en.ln_name
   t[1]:=TagItem(GT_Underscore,LONG('_'));
   t[2]:=TagItem(GTST_Maxchars,200);             
   t[3]:=TagItem(GTST_String,long(^string31));
   t[4].ti_tag:=TAG_DONE;
   GT_SetGadgetAttrsA(dgads[31],fordruck,NIL,^t);
   refreshglist(dgads[31],fordruck,NIL,31);
  END;
 
 BEGIN
  wahloberfläche;
  IF wp2 <> NIL THEN
   GT_RefreshWindow(wp2,NIL);
   BEGIN
   dummy:=FALSE;
   aktuellere:=p_etstr(vlist^.lh_Head); {für Tastaturunterstützung}
   aktuelld:=0;                      {0 ist das erste element }
   REPEAT
   msg:=p_intuimessage(WaitPort(wp2^.userport));
   msg:=GT_GetImsg(wp2^.userport);
   WHILE msg<>NIL DO
   BEGIN
    class:=msg^.class;
    code:=msg^.code;
    qual:=msg^.qualifier;
    secs:=msg^.seconds;
    mics:=msg^.micros;
    IF class IN [IDCMP_GADGETUP, IDCMP_GADGETDOWN] THEN
     BEGIN
      KlickG := msg^.IAddress;
      GadNum := KlickG^.GadgetID;
      IF DoubleClick(oldsecs,oldmics,secs,mics) THEN DoppelKlick := TRUE
       ELSE
       BEGIN
        oldsecs := secs;
        oldmics := mics;
        DoppelKlick := FALSE;
       END;
      END;
   GT_ReplyIMsg(msg);
   CASE Class OF

    IDCMP_CLOSEWINDOW: dummy:=TRUE;
  
    IDCMP_RAWKEY:
       CASE code OF

        76 : BEGIN {Pfeil nach oben}
              IF (aktuelld>0) THEN
              BEGIN
               dec(aktuelld)
               t[1]:=TagItem(GTLV_Selected,aktuelld);
               t[2]:=TagItem(GTLV_MakeVisible,aktuelld); {ab Os3.0}
               t[3].ti_tag:=TAG_DONE;
               IF NOT OS39 THEN 
                 t[2]:=tagItem(GTLV_TOP,aktuelld);
               GT_SetGadgetAttrsA(wgad[1],wp2,NIL,^t);
               Aktuellere := SucheENode(vlist,aktuelld);
              END;
             END;
     
        77 : BEGIN {Pfeil nach unten}
              IF (aktuelld<9) THEN {10 Texte; die 0 ist dabei}
              BEGIN
               inc(aktuelld)
                t[1]:=TagItem(GTLV_Selected,aktuelld);
                t[2]:=TagItem(GTLV_MakeVisible,aktuelld); {SET ab Os3.0}
                t[3].ti_tag:=TAG_DONE;
                IF NOT OS39 THEN 
                 t[2]:=tagItem(GTLV_TOP,aktuelld);
                GT_SetGadgetAttrsA(wgad[1],wp2,NIL,^t);
              END; 
             END;
           ELSE
          BEGIN
           IF (code=locqual[EDRUCK_EW_OK]) OR (code=68) THEN
             BEGIN
              Butselecter(wp2,wgad[2]);
              dummy:=TRUE;
              übertragestring31;
             END
           ELSE
           IF (code=locqual[EDRUCK_EW_ABBRUCH]) OR (code=69) THEN
           BEGIN  
              Butselecter(wp2,wgad[3]);
              dummy:=TRUE;
            END;    
          END;
         END; {OF CASE}
    
     IDCMP_GadgetUP:
        CASE gadnum OF
          1: BEGIN
              Aktuellere := SucheENode(vlist,code);
              aktuelld := code;
              IF (DoppelKlick) AND (aktuelld = oldclicked) THEN
               BEGIN
                oldclicked := -1;
                dummy:=TRUE; 
                { String in Textgadget übertragen! }
                übertragestring31;        
               END ELSE oldclicked := code;
             END;
          2:BEGIN
             dummy:=TRUE;
             übertragestring31;
            END;
          3:dummy:=TRUE;
        ELSE END;      
      ELSE END;
     msg:=GT_GetImsg(wp2^.userport);
    END;
  
   UNTIL dummy;
   dummy:=FALSE;
   l:=removegList(wp2,wp2^.firstgadget,-1);
   wahlwinleft:=wp2^.leftedge;
   wahlwintop:=wp2^.topedge;
   Closewindow(wp2);
   Freegadgets(gl2);  
   END;
  DeleteAllnodes(vlist);     
 END;
 
PROCEDURE entwurf;
 CONST entwurfwidth=427;
       entwurfheight=152;

   VAR wgad  : ARRAY[1..12] OF p_gadget;
         
 PROCEDURE entwurfoberfläche;
  BEGIN
   ComputeFont(entwurfWidth,entwurfHeight);
   ww := ComputeX(entwurfWidth);
   wh := ComputeY(entwurfHeight);
   {gadgets}
   gl2:=NIL;
   gl2:=CreateContext(^gl2);

   ng := NewGadget(3,17,210,76,
                   GetLocStr(EDRUCK_EW_SLISTE),MyTattr,
                   1,PLACETEXT_ABOVE OR NG_HIGHLABEL,
                   vi,NIL);
  SensitivGadget(ng);

  t[1]:=TagItem(GT_Underscore,LONG('_'));
  t[2]:= TagItem(GTLV_Labels,LONG(eLists));
  t[3]:= TagItem(GTLV_ShowSelected,0);
  t[4]:= TagItem(GTLV_Selected, aktuells);  
  t[5]:= TagItem(GTLV_MAKEVISIBLE, aktuells);
  t[6].ti_Tag := TAG_DONE;

  wgad[1] := CreateGadgetA(LISTVIEW_KIND,gl2,^ng,^t);
  
   ng := NewGadget(215,17,210,76,
                   GetLocStr(EDRUCK_EW_DLISTE),MyTattr,
                   2,PLACETEXT_ABOVE+NG_HIGHLABEL,
                   vi,NIL);
  SensitivGadget(ng);

  t[1]:=TagItem(GT_Underscore,LONG('_'));
  t[2]:= TagItem(GTLV_Labels,LONG(eListd));
  t[3]:= TagItem(GTLV_ShowSelected,0);
  t[4]:= TagItem(GTLV_Selected,aktuelld);
  t[5]:= TagItem(GTLV_MAKEVISIBLE, aktuelld);
  t[6].ti_Tag := TAG_DONE;

  wgad[2] := CreateGadgetA(LISTVIEW_KIND,wgad[1],^ng,^t);
  
  t[2].ti_Tag := TAG_DONE;

  ng := NewGadget(3,95,90,14,
                  GetLocStr(EDRUCK_EW_KOPIEREN),MyTattr,
                  3,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  IF NOT OS39 THEN ng.ng_height:=ng.ng_height-fonty-4; {OS2 kompatibel}
  
  wgad[3] := CreateGadgetA(BUTTON_KIND,wgad[2],^ng,^t);
                     
  ng := NewGadget(215,95,70,14,
                  GetLocStr(EDRUCK_EW_AUFWAERTS),MyTattr,
                  4,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  IF NOT OS39 THEN ng.ng_height:=ng.ng_height-fonty-4;
  wgad[4] := CreateGadgetA(BUTTON_KIND,wgad[3],^ng,^t);

  ng := NewGadget(285,95,70,14,
                  GetLocStr(EDRUCK_EW_ABWAERTS),MyTattr,
                  5,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[5] := CreateGadgetA(BUTTON_KIND,wgad[4],^ng,^t);

  ng := NewGadget(355,95,70,14,
                  GetLocStr(EDRUCK_EW_LOESCHEN),MyTattr,
                  6,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[6] := CreateGadgetA(BUTTON_KIND,wgad[5],^ng,^t);

  ng := NewGadget(70,115,0,14,                { verstecktes Gadget }
                  "Etikett",MyTattr,          { für Beschriftung   }
                  7,PLACETEXT_LEFT,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[7] := CreateGadgetA(BUTTON_KIND,wgad[6],^ng,^t); 
                                         

  ng := NewGadget(67,115,80,14,
                  GetLocStr(EDRUCK_EW_SPEICHERN),MyTattr,
                  8,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[8] := CreateGadgetA(BUTTON_KIND,wgad[7],^ng,^t);

  ng := NewGadget(149,115,80,14,
                  GetLocStr(EDRUCK_EW_LADEN),MyTattr,
                  9,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[9] := CreateGadgetA(BUTTON_KIND,wgad[8],^ng,^t);

  ng := NewGadget(entwurfwidth-2-120,115,120,14,
                  GetLocStr(EDRUCK_EW_HILFE),MyTattr,
                  10,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[10] := CreateGadgetA(BUTTON_KIND,wgad[9],^ng,^t);

  ng := NewGadget(4,136,120,14,
                  GetLocStr(EDRUCK_EW_OK),MyTattr,
                  11,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[11] := CreateGadgetA(BUTTON_KIND,wgad[10],^ng,^t);

  ng := NewGadget(entwurfwidth-6-120,136,120,14,
                  GetLocStr(EDRUCK_EW_ABBRUCH),MyTattr,
                  12,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  wgad[12] := CreateGadgetA(BUTTON_KIND,wgad[11],^ng,^t);


   t[1] := TagItem(WA_InnerWidth,ww);
   t[2] := TagItem(WA_InnerHeight,wh);
   t[3] := TagItem(WA_IDCMP,{DRUCKIDCMP}mainidcmp);
   t[4] := TagItem(WA_Flags, WFLG_ACTIVATE+
                             WFLG_CLOSEGADGET+
                             WFLG_DRAGBAR+
                             WFLG_DEPTHGADGET+
                             WFLG_HASZOOM);
   t[5] := TagItem(WA_MaxWidth, psw);
   t[6] := TagItem(WA_MaxHeight, psh);
   t[7] := TagItem(WA_MinWidth, 200);
   t[8] := TagItem(WA_MinHeight, yoff+1);
   t[9].ti_Tag := WA_Title;
   t[9].ti_Data :=LONG(GetLocStr(EDRUCK_EW_TITEL));
   t[10] := TagItem(WA_Left, entwurfWinLeft);
   t[11] := TagItem(WA_Top, entwurfWinTop); 
   t[12].ti_Tag := TAG_DONE;
   IF pubname <> "" THEN
   BEGIN
     t[12] := TagItem(WA_PubScreenFallBack, 1);
     t[13] := TagItem(WA_PubScreenName, LONG(pubname));
     t[14].ti_Tag := TAG_DONE;
   END;
   wp2 := OpenWindowTagList(NIL,^t);

  Linie(wp2,0,111,entwurfwidth);
  raster(wp2,0,131,entwurfwidth-1,entwurfheight-131);
  Linie(wp2,0,131,entwurfwidth);
  l:=addgList(wp2,gl2,0,-1,NIL);
  GT_Refreshwindow(wp2,NIL);
  refreshglist(wp2^.firstgadget,wp2,NIL,-1);
 END;
  
 BEGIN
  msg:=NIL;
  entwurfoberfläche;  
  dummy:=FALSE;
   REPEAT
   msg:=p_intuimessage(WaitPort(wp2^.userport));
   msg:=GT_GetImsg(wp2^.userport);
   WHILE msg<>NIL DO
   BEGIN
    class:=msg^.class;
    code:=msg^.code;
    qual:=msg^.qualifier;
    secs:=msg^.seconds;
    mics:=msg^.micros;
    IF class IN [IDCMP_GADGETUP, IDCMP_GADGETDOWN] THEN
     BEGIN
      KlickG := msg^.IAddress;
      GadNum := KlickG^.GadgetID;
      IF DoubleClick(oldsecs,oldmics,secs,mics) THEN DoppelKlick := TRUE
       ELSE
       BEGIN
        oldsecs := secs;
        oldmics := mics;
        DoppelKlick := FALSE;
       END;
      END;
   GT_ReplyIMsg(msg);
   CASE Class OF

    IDCMP_CLOSEWINDOW: dummy:=TRUE;
    IDCMP_NEWSIZE :
     BEGIN
      Linie(wp2,0,111,entwurfwidth);
      raster(wp2,0,131,entwurfwidth-1,entwurfheight-131);
      Linie(wp2,0,131,entwurfwidth);
      GT_Refreshwindow(wp2,NIL);
      refreshglist(wp2^.firstgadget,wp2,NIL,-1);
     END;
  
    IDCMP_RAWKEY:
      BEGIN
       IF (code=locqual[EDRUCK_EW_OK]) OR (code=68) THEN
         BEGIN
          Butselecter(wp2,wgad[11]);
          dummy:=TRUE;             
         END;
       IF (code=locqual[EDRUCK_EW_ABBRUCH]) OR (code=69) THEN
        BEGIN
         Butselecter(wp2,wgad[12]);
         dummy:=TRUE;
        END;    
       IF (code=locqual[EDRUCK_EW_SLISTE]) THEN
              BEGIN 
              IF qual in [33281,33282,32770,32769] 
               THEN  hoch(wgad[1],aktuellers,elists,aktuells,elistsz)
               ELSE  runter(wgad[1],aktuellers,elists,aktuells,elistsz);
             END ELSE
       IF (code=locqual[EDRUCK_EW_DLISTE]) THEN
            BEGIN 
              IF qual in [33281,33282,32770,32769] 
               THEN  hoch(wgad[2],aktuellerd,elistd,aktuelld,elistdz)
               ELSE  runter(wgad[2],aktuellerd,elistd,aktuelld,elistdz);
             END ELSE
       IF (code=locqual[EDRUCK_EW_KOPIEREN]) THEN
             BEGIN 
              Butselecter(wp2,wgad[3]);
              kopieren(elistd,aktuellers,aktuellerd,aktuelld,elistdz,wgad[2]);
             END ELSE
       IF (code=locqual[EDRUCK_EW_AUFWAERTS]) THEN
             BEGIN 
              Butselecter(wp2,wgad[4]);
              nodehoch(wgad[2],aktuellerd,elistd,aktuelld,elistdz);
             END ELSE
       IF (code=locqual[EDRUCK_EW_ABWAERTS]) THEN
             BEGIN 
              Butselecter(wp2,wgad[5]);
              noderunter(wgad[2],aktuellerd,elistd,aktuelld,elistdz);
             END ELSE
       IF (code=locqual[EDRUCK_EW_LOESCHEN]) THEN
             BEGIN 
              Butselecter(wp2,wgad[6]);
              IF aktuellerd<>NIL THEN löscheEnode(wgad[2],elistd,aktuellerd,aktuelld,elistdz);
             END ELSE
       IF (code=locqual[EDRUCK_EW_SPEICHERN]) THEN
             BEGIN 
              Butselecter(wp2,wgad[8]);
              etikettspeichern;
             END ELSE
       IF (code=locqual[EDRUCK_EW_LADEN]) THEN
             BEGIN 
              Butselecter(wp2,wgad[9]);
              etikettladen;
             END ELSE
       IF (code=locqual[EDRUCK_EW_HILFE]) OR (code=95) THEN
             BEGIN 
              Butselecter(wp2,wgad[10]);
              {Hilfe;}
             END ELSE
       IF (code=76) THEN
             BEGIN {Pfeil nach oben}
              IF qual in [33281,33282,32770,32769] 
               THEN  hoch(wgad[2],aktuellerd,elistd,aktuelld,elistdz)
               ELSE  hoch(wgad[1],aktuellers,elists,aktuells,elistsz);
             END ELSE
       IF (code=77) THEN
             BEGIN {Pfeil nach unten}
              IF qual in [33281,33282,32770,32769] 
               THEN  runter(wgad[2],aktuellerd,elistd,aktuelld,elistdz)
               ELSE  runter(wgad[1],aktuellers,elists,aktuells,elistsz);
             END;
        END;          
   
     IDCMP_GadgetUP:
        CASE gadnum OF
          1: BEGIN
              Aktuellers := SucheENode(elists,code);
              aktuells := code;
              IF (DoppelKlick) AND (aktuells = oldclicked) THEN
               BEGIN
                oldclicked := -1;
                kopieren(elistd,aktuellers,aktuellerd,aktuelld,elistdz,wgad[2]);
               END ELSE oldclicked := code;
             END;
     
          2: BEGIN
              IF elistdz<=code THEN
              BEGIN
                aktuellerd:=sucheEnode(elistd,elistdz);
                t[1]:=TagItem(GTLV_Selected,elistdz);
                t[2].ti_tag:=TAG_DONE;
                GT_SetGadgetAttrsA(wgad[2],wp2,NIL,^t);           
                code:=elistdz;
                aktuelld:=code;
               END
               ELSE
               BEGIN
                Aktuellerd := SucheENode(elistd,code);
                aktuelld := code;
               END;
               IF (DoppelKlick) AND (aktuelld = oldclicked) THEN
                BEGIN
                 oldclicked := -1;
                 IF aktuellerd<>NIL THEN 
                   löscheEnode(wgad[2],elistd,aktuellerd,aktuelld,elistdz);
                END ELSE oldclicked := code;
             END;
           3: kopieren(elistd,aktuellers,aktuellerd,aktuelld,elistdz,wgad[2]);
           4: nodehoch(wgad[2],aktuellerd,elistd,aktuelld,elistdz);
           5: noderunter(wgad[2],aktuellerd,elistd,aktuelld,elistdz);
           6: IF aktuellerd<>NIL THEN 
               löscheEnode(wgad[2],elistd,aktuellerd,aktuelld,elistdz);
           8: etikettspeichern;
           9: etikettladen;
          10:{hilfe};
          11: dummy:=TRUE;
          12: dummy:=TRUE;
        ELSE END;      
      ELSE END;
     msg:=GT_GetImsg(wp2^.userport);
    END;
  
   UNTIL dummy;
   dummy:=FALSE;
  l:=removegList(wp2,wp2^.firstgadget,-1);
  entwurfwinleft:=wp2^.leftedge;
  entwurfwintop:=wp2^.topedge;
  Closewindow(wp2);
  Freegadgets(gl2);  
 END;


CONST etikettheight=151;
      etikettwidth=592;  
  
 BEGIN
  dummy:=FALSE;
  Computefont(etikettwidth,etikettheight);
  ww:=computeX(etikettwidth);
  wh:=computeY(etikettheight);
 IF fordruck1 THEN
 BEGIN 
  fordruck1:=FALSE;
  zustand28:=0;
  zustand29:=0;
  zustand30:=0;
  initialisiere_elists;
  initialisiere_elistd;
  elistdz:=4;{5-1}
  elistsz:=15;{16-1}
  aktuelld:=0;                      {0 ist das erste element }
  aktuells:=0;
  aktuellers:=p_etstr(elists^.lh_head);
  aktuellerd:=p_etstr(elistd^.lh_head);
    
  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',int19) THEN int19:=30; { Etikettenbreite }
  IF NOT holettint('LEERZEILEN',int16)      THEN int16:=0;  {   Leerzeilen    }
  IF NOT holettint('ABSTAND',int22)         THEN int22:=2;  {     Abstand     }   
  int25:=1;
  IF holett('Etikett_PFAD',puffer) THEN pfad:=puffer
                                   ELSE pfad:='sys:';   { voreingestellter pfad }
  IF holett('ABSENDER_STRING',puffer) THEN absender:=puffer
                                      ELSE absender:='';
  IF holett('ABSENDER_DATEI',puffer) THEN absend:=puffer
                                     ELSE absend:='';  { dateiname des Absenders }
  IF holett('Etikett_NAME',puffer) THEN Etikettname:=puffer
                                    ELSE Etikettname:='';
  IF holett('PATTERN_Etikett',puffer) THEN pats:=puffer
                                       ELSE pats:='#?.for';    
                                      { Pattern für Filerequester im Etikettmodus }
  IF holett('PATTERN_ABSENDER',puffer) THEN pata:=puffer
                                       ELSE pata:='#?.abs';
 END;                                 { 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(^Etikettname));
  t[4].ti_tag:=TAG_DONE;
    
  ng:=NewGadget(120,5,220,15,GetLocStr(EDRUCK_ETIKETTNAME),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,GetLocStr(EDRUCK_ELADEN),mytattr,
                2,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[2]:=CreateGadgetA(BUTTON_KIND,dgads[1],^ng,^t);
    
  ng:=NewGadget(462,5,119,15,GetLocStr(EDRUCK_ESPEICHERN),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(120,23,220,15,GetLocStr(EDRUCK_ABSENDER),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,GetLocStr(EDRUCK_ALADEN),mytattr,
                5,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[5]:=CreateGadgetA(BUTTON_KIND,dgads[4],^ng,^t);
    
  ng:=NewGadget(462,23,120,15,GetLocStr(EDRUCK_ASPEICHERN),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(120,41,46,15,GetLocStr(EDRUCK_LINKERRAND),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(166,41,20,15,'<',mytattr,
                8,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[8]:=CreateGadgetA(BUTTON_KIND,dgads[7],^ng,^t);
  
  ng:=NewGadget(186,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(330,41,46,15,GetLocStr(EDRUCK_RECHTERRAND),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(376,41,20,15,'<',mytattr,
                11,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[11]:=CreateGadgetA(BUTTON_KIND,dgads[10],^ng,^t);

  ng:=NewGadget(396,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,GetLocStr(EDRUCK_KOPIEN),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(120,59,46,15,GetLocStr(EDRUCK_SEITENLAENGE),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(166,59,20,15,'<',mytattr,
                17,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[17]:=CreateGadgetA(BUTTON_KIND,dgads[16],^ng,^t);

  ng:=NewGadget(186,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(330,59,46,15,GetLocStr(EDRUCK_ETIKETTBREITE),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(376,59,20,15,'<',mytattr,
                20,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[20]:=CreateGadgetA(BUTTON_KIND,dgads[19],^ng,^t);

  ng:=NewGadget(396,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(495,59,46,15,GetLocStr(EDRUCK_ABSTAND),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);


  t[2]:=TagItem(GTIN_Maxchars,3);             
  t[3]:=TagItem(GTIN_NUMBER,int25);
  t[4]:=tagItem(STRINGA_Justification,GACT_StringCenter);
  t[5].ti_tag:=TAG_DONE;
  
  ng:=NewGadget(120,77,46,15,GetLocStr(EDRUCK_1ETIKETT),mytattr,
                25,PLACETEXT_LEFT,
                vi,NIL);
  sensitivgadget(ng);
  dgads[25]:=CreateGadgetA(INTEGER_KIND,dgads[24],^ng,^t);
  
  t[2].ti_tag:=TAG_DONE;
  ng:=NewGadget(166,77,20,15,'<',mytattr,
                26,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[26]:=CreateGadgetA(BUTTON_KIND,dgads[25],^ng,^t);

  ng:=NewGadget(186,77,20,15,'>',mytattr,
                27,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[27]:=CreateGadgetA(BUTTON_KIND,dgads[26],^ng,^t);



  cycle28:=labels('NLQ','Draft',NIL,
                  NIL,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,77,136,15,GetLocStr(EDRUCK_SCHRIFTART),mytattr,
                28,PLACETEXT_LEFT,
                vi,NIL);
  sensitivgadget(ng);
  dgads[28]:=CreateGadgetA(CYCLE_KIND,dgads[27],^ng,^t);

  
  Cycle29:=labels(GetLocStr(EDRUCK_DS_AKTUELLER),
                     GetLocStr(EDRUCK_DS_ALLE),
                      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,zustand29);
  t[3]:=TagItem(GTCY_Labels,LONG(^Cycle29)); 
  t[4].ti_tag:=TAG_DONE;

  ng:=NewGadget(120,95,200,15,GetLocStr(EDRUCK_DATENSAETZE),mytattr,
                29,PLACETEXT_LEFT,
                vi,NIL);
  sensitivgadget(ng);
  dgads[29]:=CreateGadgetA(CYCLE_KIND,dgads[28],^ng,^t);

  cycle30:=labels('1',
                  '2',
                  '3',
                  '4',NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL);

  t[2]:=TagItem(GTCY_ACTIVE,zustand30);
  t[3]:=TagItem(GTCY_Labels,LONG(^Cycle30)); 
  t[4].ti_tag:=TAG_DONE;

  ng:=NewGadget(445,95,136,15,GetLocStr(EDRUCK_NEBENEINANDER),mytattr,
                30,PLACETEXT_LEFT,
                vi,NIL);
  sensitivgadget(ng);
  dgads[30]:=CreateGadgetA(CYCLE_KIND,dgads[29],^ng,^t);

  t[2]:=TagItem(GTST_Maxchars,200);             
  t[3]:=TagItem(GTST_String,long(^string31));
  t[4].ti_tag:=TAG_DONE;

  ng:=NewGadget(160,113,284,15,GetLocStr(EDRUCK_VERWENDUNGSZWECK),mytattr,
                31,PLACETEXT_LEFT,
                vi,NIL);
  sensitivgadget(ng);
  dgads[31]:=CreateGadgetA(STRING_KIND,dgads[30],^ng,^t);  
  
  t[2].ti_tag:=TAG_DONE;
  ng:=NewGadget(445,113,136,15,GetLocStr(EDRUCK_AUSWAEHLEN),mytattr,
                32,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[32]:=CreateGadgetA(BUTTON_KIND,dgads[31],^ng,^t);

  ng:=NewGadget(5,134,140,15,GetLocStr(EDRUCK_DRUCKEN),mytattr,
                33,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[33]:=CreateGadgetA(BUTTON_KIND,dgads[32],^ng,^t);
  
  ng:=NewGadget(220,134,160,15,GetLocStr(EDRUCK_ETIKETTENTWURF),mytattr,
                34,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[34]:=CreateGadgetA(BUTTON_KIND,dgads[33],^ng,^t);  
  
  ng:=NewGadget(446,134,140,15,GetLocStr(EDRUCK_ABBRUCH),mytattr,
                35,PLACETEXT_IN,
                vi,NIL);
  sensitivgadget(ng);
  dgads[35]:=CreateGadgetA(BUTTON_KIND,dgads[34],^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:=LONG(GetLocStr(EDRUCK_TITEL));
  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,Etikettdruckwinleft); 
  t[7]:=TagItem(WA_Top,Etikettdruckwintop);
  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,130,etikettwidth-1,etikettheight-130);
  Linie(fordruck,0,130,etikettwidth);

{   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
       IF code=locqual[EDRUCK_ETIKETTNAME] THEN
         ok:=ActivateGadget(dgads[1],fordruck,NIL);
   
       IF code=locqual[EDRUCK_ELADEN] THEN        
             BEGIN
              Butselecter(fordruck,dgads[2]);
              Etikettladen;
             END;
       IF code=locqual[EDRUCK_ABSENDER] THEN
         ok:=ActivateGadget(dgads[4],fordruck,NIL);
       IF code=locqual[EDRUCK_ETIKETTENTWURF] THEN
             BEGIN 
              Butselecter(fordruck,dgads[34]);
              entwurf;
             END;
       IF code=locqual[EDRUCK_ALADEN] THEN
             BEGIN
              Butselecter(fordruck,dgads[5]);
              absenderladenser(dgads[4],fordruck);
             END;
       IF code=locqual[EDRUCK_ASPEICHERN] THEN
             BEGIN
              Butselecter(fordruck,dgads[6]);
              absenderspeichern(dgads[4]);
             END;
       IF code=locqual[EDRUCK_LINKERRAND] THEN
         ok:=ActivateGadget(dgads[7],fordruck,NIL);
       IF code=locqual[EDRUCK_RECHTERRAND] THEN
         ok:=ActivateGadget(dgads[10],fordruck,NIL);
       IF code=locqual[EDRUCK_KOPIEN] THEN
         ok:=ActivateGadget(dgads[13],fordruck,NIL);
       IF code=locqual[EDRUCK_ETIKETTBREITE] THEN 
         ok:=ActivateGadget(dgads[19],fordruck,NIL);
       IF code=locqual[EDRUCK_SEITENLAENGE] THEN
         ok:=ActivateGadget(dgads[16],fordruck,NIL);
       IF code=locqual[EDRUCK_DATENSAETZE] THEN
         changecycler(fordruck,dgads[29],PTR(^Cycle29),12,zustand29);
       IF code=locqual[EDRUCK_ABSTAND] THEN  
         ok:=ActivateGadget(dgads[22],fordruck,NIL);
       IF code=locqual[EDRUCK_SCHRIFTART] THEN
         changecycler(fordruck,dgads[28],PTR(^Cycle28),2,zustand28);
       IF code=locqual[EDRUCK_AUSWAEHLEN] THEN
             BEGIN 
              Butselecter(fordruck,dgads[32]);
              wahl;
             END;
       IF code=locqual[EDRUCK_NEBENEINANDER] THEN 
         changecycler(fordruck,dgads[30],PTR(^Cycle30),4,zustand30);
       IF code=locqual[EDRUCK_VERWENDUNGSZWECK] THEN
         ok:=ActivateGadget(dgads[31],fordruck,NIL);
       IF code=locqual[EDRUCK_1ETIKETT] THEN
         ok:=ActivateGadget(dgads[25],fordruck,NIL);   
       IF code=locqual[EDRUCK_DRUCKEN] THEN
             BEGIN
              Butselecter(fordruck,dgads[33]);
              etikettdruck(false);
             END;
       IF code=locqual[EDRUCK_ESPEICHERN] THEN
             BEGIN
              Butselecter(fordruck,dgads[3]);
              Etikettspeichern;
             END;
       IF (code=locqual[EDRUCK_ABBRUCH]) OR (code=69) THEN
             BEGIN
              Butselecter(fordruck,dgads[35]);
              dummy:=TRUE;
             END;    
     END;

     IDCMP_GadgetUP:
        CASE gadnum OF
          1: BEGIN
              si:=dgads[1]^.specialinfo;
              etikettname:=si^.buffer;
             END;
          2: Etikettladen;
          3: etikettspeichern;
          5: absenderladenser(dgads[4],fordruck);
          6: absenderspeichern(dgads[4]);
          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,20);
         21: höher(fordruck,dgads[19],999,20);
         23: tiefer(fordruck,dgads[22],200,0);
         24: höher(fordruck,dgads[22],200,0);
         26: tiefer(fordruck,dgads[25],20,1);
         27: höher(fordruck,dgads[25],20,1);            
         28:BEGIN
              if zustand28<1 THEN inc(zustand29)
                             ELSE zustand28:=0;
             END;
         29: BEGIN
              if zustand29<11 THEN inc(zustand29)
                              ELSE zustand29:=0;
             END;
         30:BEGIN
              if zustand30<4 THEN inc(zustand30)
                             ELSE zustand30:=0;
             END;
         31:;
         32: wahl;
         33: BEGIN        {drucken}
              holalles;
              etikettdruck(FALSE);
             END;
         34: entwurf;
         35: dummy:=TRUE;
        ELSE END;      
      ELSE END;
  
  UNTIL dummy;
  
  holalles;
  l:=removegList(fordruck,fordruck^.firstgadget,-1);
  Etikettdruckwinleft:=fordruck^.leftedge;
  Etikettdruckwintop:=fordruck^.topedge;
  Closewindow(fordruck);
  fordruck:=NIL;
  Freegadgets(gl1);
{  Unbusywindow(wp,Mainreq);}
 END;

{$ENDIF} 