home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / tvision / install / neu_stdd.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1993-03-08  |  18.2 KB  |  552 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {       Turbo Pascal Version 6.0                        }
  4. {       Turbo Vision Unit                               }
  5. {       Copyright (c) 1990 Borland International        }
  6. {       und Dieter Craasmann (geändert 1991)            }
  7. {*******************************************************}
  8.  
  9. UNIT NEU_STDD; 
  10.  
  11. {$F+,O+,V-,X+,D-}
  12.  
  13. INTERFACE
  14.  
  15.  
  16. USES Crt, Dos, Objects, Drivers, Memory, Views,
  17.      Menus, Dialogs, MsgBox,
  18.      App, Buffers; 
  19.  
  20. CONST
  21.  
  22. { Commands }
  23.  
  24.   cmOpen       = 100; 
  25.   cmNew        = 101; 
  26.   cmHelp       = 102; 
  27.   cmHelpD      = 103; 
  28.   cmHelp1      = 801; 
  29.   cmHelp2      = 802; 
  30.   cmYes        = 104; 
  31.  
  32. { Messages }
  33.  
  34.   cmFileFocused = 806;    { Eine neue Datei wurde in TFileList eingestellt}
  35.  
  36. TYPE
  37.  
  38.   { TSearchRec }
  39.   {  Record um die Directory-Information mit TFileDialog zu speichern}
  40.  
  41.   TSearchRec = RECORD
  42.                  Attr: Byte; 
  43.                  Time: Longint; 
  44.                  Size: Longint; 
  45.                  Name: STRING[12]; 
  46.                END; 
  47.  
  48. TYPE
  49.  
  50.   { TFileInputLine ist eine spezielle Eingabe-Zeile, die von          }
  51.   { TFileDialog benutzt wird um seinen Inhalt zu erneuern als Antwort }
  52.   { auf einen Befehl von cmFileFocused von TFileList.                   }
  53.  
  54.   PFileInputLine = ^TFileInputLine; 
  55.   TFileInputLine = object(TInputLine)
  56.                      constructor Init(VAR Bounds: TRect; AMaxLen: Integer); 
  57.                      PROCEDURE HandleEvent(VAR Event: TEvent); virtual; 
  58.                    END; 
  59.  
  60.   { TFileDialog isi ein normaler Datei-Eingabe-Dialog-Name }
  61.  
  62.   TWildStr = PathStr; 
  63.  
  64. CONST
  65.   fdOkButton      = $0001;  { Gibt ein OK-Symbol (button) in den Dialog }
  66.   fdOpenButton    = $0002;  { Gibt ein Öffne-Symbol (Open button) in den Dialog }
  67.   fdReplaceButton = $0004;  { Gibt ein Ersetze-Symbol (Replace button) in den Dialog }
  68.   fdClearButton   = $0008;  { Gibt ein Lösche-Symbol (Clear button) in den Dialog }
  69.   fdHelpButton    = $0010;  { Gibt ein Hilfe-Symbol (Help button) in den Dialog }
  70.   fdNoLoadDir     = $0100;  { Lade nicht den Inhalt des derzeitigen Direktories }
  71.                             { in den Dialog beim Initiieren (Init). }
  72.                             { Das bedeutet, daß du beabsichtigst WildCard zu verändern}
  73.                             { indem du SetData benutzt oder den Dialog in einem }
  74.                             { stream speicherst. }
  75.  
  76. TYPE
  77.  
  78.   PFileDialog = ^TFileDialog; 
  79.   TFileDialog = object(TDialog)
  80.                   WildCard: TWildStr; 
  81.                   constructor NewParameter(LaufW, LaufW1, SubD : STRING); 
  82.                   PROCEDURE Installiere(LaufWZu : STRING); virtual; 
  83.                   PROCEDURE Fehler; virtual; 
  84.                   PROCEDURE HandleEvent(VAR Event: TEvent); virtual; 
  85.                   PROCEDURE OutOfMemory; virtual; 
  86.                   PROCEDURE Hilfe; virtual; 
  87.                   PROCEDURE HilfeD; virtual; 
  88.                 END; 
  89.  
  90.   {────────────────────────────────────────────OParaDialog──}
  91.   PParaDialog = ^OParaDialog; 
  92.   OParaDialog = object(TDialog)
  93.                 END; 
  94.  
  95.   {───────────────────────────────────────────────ParaData──}
  96.   ParaDataRec = RECORD              {DatenRec für Dialogfeld}
  97.                   FarbData: Word; 
  98.                   DruckerData : Word; 
  99.                   LW11        : STRING[3]; 
  100.                   LW2         : STRING[3]; 
  101.                   SubData: STRING[8]; 
  102.                 END; 
  103.  
  104. VAR {────────────────────────────────────Globale Variablen──}
  105.   ParaData        : ParaDataRec;                 {Fürs Dialogfenster}
  106.   Pfad,LW22,LW33  : STRING[8]; 
  107.   Farben, Drucker : Word; 
  108.   Laufwerk        : STRING[3]; 
  109.   LW1,LW12,LWData : STRING[3]; 
  110.   LaufWerkDa      : Boolean; 
  111.  
  112.  
  113. IMPLEMENTATION
  114.  
  115. TYPE
  116.   PSearchRec = ^TSearchRec; 
  117.  
  118. { TFileInputLine }
  119.  
  120. constructor TFileInputLine.Init(VAR Bounds: TRect; AMaxLen: Integer); 
  121. BEGIN
  122.   TInputLine.Init(Bounds, AMaxLen); 
  123.   EventMask := EventMask OR evBroadcast; 
  124. END; 
  125.  
  126. PROCEDURE TFileInputLine.HandleEvent(VAR Event: TEvent); 
  127. VAR
  128.   Dir: DirStr; 
  129.   Name: NameStr; 
  130.   Ext: ExtStr; 
  131. BEGIN
  132.   TInputLine.HandleEvent(Event); 
  133.   IF (Event.What = evBroadcast) AND (Event.Command = cmFileFocused) AND
  134.      (State AND sfSelected = 0) 
  135.   THEN
  136.     BEGIN
  137.       IF PSearchRec(Event.InfoPtr)^.Attr AND Directory <> 0 THEN
  138.         Data^ := PSearchRec(Event.InfoPtr)^.Name + '\'+
  139.         PFileDialog(Owner)^.WildCard
  140.       ELSE Data^ := PSearchRec(Event.InfoPtr)^.Name; 
  141.       DrawView; 
  142.     END; 
  143. END; 
  144.  
  145. { TFileDialog }
  146.  
  147. PROCEDURE TFileDialog.Hilfe; 
  148. VAR
  149. Msg  : STRING; 
  150. Msg2 : STRING; 
  151. Msg3 : STRING; 
  152. BEGIN
  153.   Msg :=^C'Installations-Hinweise'#13 +
  154.   ^C'Wählen Sie aus den Laufwerken das aus, in das das Programm installiert  '#13 +
  155.   ^C'werden soll. Als Beispiel "C:\" oder "D:\",  etc. wie vorgegeben. Mit   '#13 +
  156.   ^C'dem Cursor treffen Sie die Wahl und mit "Return" erfolgt die Gesamtwahl.'; 
  157.   Msg2 :=^C'Mit der Tabulator-Taste können Sie in das nächste Auswahlfeld wechseln '#13 +
  158.   ^C'oder durch anklicken der Punkte und der Wahlknöpfe mit der Mouse wird  '#13 +
  159.   ^C'der entsprechende Befehl ausgeführt.'#13 +
  160.   ^C'Wechsel zum Einfügen/Überschreiben mit der Einfügetaste.'; 
  161.   Msg3 :=^C'Durch die Anwahl mit den Tasten "ALT" + "gekennzeichnetem" Buchstaben'#13 +
  162.   ^C'kann auch ein Feld oder Befehlsknopf direkt angesprochen werden.'#13 +
  163.   ^C'Wählen Sie den Monitor ihres PCs und Ihren entsprechenden Drucker aus.'#13 +
  164.   ^C'Druckerhilfen siehe Hilfe 2 im Menü.'; 
  165.   MessageBoxGross(Msg, NIL,Msg2, NIL,Msg3, NIL,80,23, mfHelp + mfOkButton); 
  166. END; 
  167.  
  168. PROCEDURE TFileDialog.HilfeD;
  169. VAR
  170. Msg  : STRING; 
  171. Msg2 : STRING; 
  172. Msg3 : STRING; 
  173. BEGIN
  174.   Msg :=^C'AUSWAHL DRUCKER/MODUS:   SCHRIFTARTEN:        ZEILEN JE SEITE:             '#13 +
  175.   ^C''#13 +
  176.   ^C'1. Epson       Schmalschrift #15    #27,#67,#72       '#13 +
  177.   ^C'               Normalschrift #18    (#72 = Zeilenzahl)'#13 +
  178.   ^C'               Blattvorschub #12                       '; 
  179.   Msg2 :=^C'2. IBM         Schmalschrift #15    #27,#91,72,#116   '#13 +
  180.   ^C'               Normalschrift #18    (72 = Zeilenzahl) '#13 +
  181.   ^C'               Blattvorschub #12                      '; 
  182.   Msg3 :=^C'3. Laser KYOCERA EPSON über Font: !R! FRPO U7,5; EXIT;'#13 +
  183.   ^C'           Sonst wie unter 1. Epson (#72 =Zeilenzahl) '#13 +
  184.   ^C'    '#13 +
  185.   ^C'    '; 
  186.   MessageBoxGross(Msg, NIL,Msg2, NIL,Msg3, NIL,80,23, mfHelp + mfOkButton); 
  187. END; 
  188.  
  189. PROCEDURE TFileDialog.OutOfMemory; 
  190. VAR
  191. Msg : STRING; 
  192. BEGIN
  193.   Msg :=^C'Nicht genug Arbeitsspeicher'#13 +
  194.   ^C'vorhanden'; 
  195.   MessageBox(Msg, NIL,36,9, mfError + mfOkButton); 
  196. END; 
  197.  
  198. PROCEDURE TFileDialog.HandleEvent(VAR Event: TEvent); 
  199. BEGIN
  200.   TDialog.HandleEvent(Event); 
  201.   IF Event.What = evCommand THEN
  202.     CASE Event.Command OF
  203.       cmOK, cmCancel:
  204.                        BEGIN
  205.                          EndModal(Event.Command); 
  206.                          ClearEvent(Event); 
  207.                        END; 
  208.       cmHelp1 : Hilfe; 
  209.       cmHelp2 : HilfeD; 
  210.     END; 
  211. END; 
  212.  
  213. {┌─────────────────────────────────────────────────────────┐
  214.  │ TFileDialog.Fehler                                      │
  215.  ├─────────────────────────────────────────────────────────┤
  216.  │ Gibt in einem Dialogfenster über ein TDialog-Objekt     │
  217.  │ eine DOS-Fehlermeldung heraus                           │
  218.  └─────────────────────────────────────────────────────────┘}
  219. PROCEDURE TFileDialog.Fehler; 
  220. VAR
  221.  Falsch,Msg,Botschaft : STRING; 
  222.  
  223. BEGIN
  224.   Str(DosError,Falsch); 
  225.   IF DosError = 2 THEN BEGIN
  226.     Botschaft:= ^C'Programm/-teil nicht gefunden !'; 
  227.   END 
  228.   ELSE
  229.     IF DosError = 3 THEN BEGIN
  230.       Botschaft:= ^C'Kann den Pfad nicht finden !'; 
  231.     END 
  232.     ELSE
  233.       IF DosError = 4 THEN BEGIN
  234.         Botschaft:= ^C'Zuviel Dateien geöffnet !'; 
  235.       END 
  236.       ELSE
  237.         IF DosError = 5 THEN BEGIN
  238.           Botschaft:= ^C'Dateizugriff verweigert !'; 
  239.         END 
  240.         ELSE
  241.           IF DosError = 8 THEN BEGIN
  242.             Botschaft:= ^C'Zuwenig Speicher !'; 
  243.           END 
  244.           ELSE BEGIN
  245.             Botschaft := ^C'Unbekannter Fehler !'; 
  246.           END; 
  247.   Msg:=^C'ES LIEGT FOLGENDER DOS-FEHLER VOR'#13 +
  248.   ^C'Fehler Nr. : '; 
  249.   Msg := Msg + Falsch +''#13 + Botschaft; 
  250.   MessageBox(Msg,NIL,36,9,mfError + mfOkButton); 
  251. END; 
  252.  
  253. {┌─────────────────────────────────────────────────────────┐
  254.  │ TFileDialog.Installiere                                 │
  255.  ├─────────────────────────────────────────────────────────┤
  256.  │ Installiert Dateien wie vorgegeben                      │
  257.  └─────────────────────────────────────────────────────────┘}
  258. PROCEDURE TFileDialog.Installiere(LaufWZu : STRING); 
  259. VAR
  260.   Msg    : STRING; 
  261.   InstLW,S,S1   : STRING; 
  262.   Falsch : Word; 
  263.  
  264. PROCEDURE Meldung(Pfad1 : STRING); 
  265.   BEGIN
  266.     Msg :=^C'Pfad kann nicht angelegt'#13 +
  267.     ^C'werden, da bereits vorhanden, oder Eingabe ist falsch !';
  268.        IF (MessageBox(Msg,
  269.             NIL,60,9, mfInformation + mfOkButton + mfCancelButton))
  270.         <> cmCancel
  271.        THEN BEGIN LaufWerkDa := False END ELSE BEGIN
  272.       LaufWerkDa := True; 
  273.     END; 
  274.   END; 
  275.  
  276. {─────────────────────────────────────────DateienEinlesen──}
  277. PROCEDURE DateienEinlesen(Von,Nach : STRING); 
  278.  
  279. BEGIN
  280.   {Datei von kopieren nach Install.-Laufwerk}
  281.     DoneSysError;
  282.     DoneEvents;
  283.     DoneVideo;
  284.     DoneMemory;
  285.     SetMemTop(HeapPtr);
  286.       PrintStr('         Die Dateien werden wie gewählt installiert...                          ');
  287.       SwapVectors;
  288.          Exec(GetEnv('COMSPEC'),'/C CLS');
  289.          Exec(GetEnv('COMSPEC'),'/C Copy ' + VON + '\*.* ' + Nach);
  290.       SwapVectors;
  291.     SetMemTop(HeapEnd);
  292.     InitMemory;
  293.     InitVideo;
  294.     InitEvents;
  295.     InitSysError;
  296.     IF DosError <> 0 THEN Fehler;
  297. END;
  298.  
  299. PROCEDURE LwWechseln(LaufWerk : STRING); 
  300.  VAR HStr : STRING[19];
  301.        i : Word;
  302.  
  303.  BEGIN
  304.    HStr:= '';                          {Leerstring vorgeben}
  305.    FOR i:= 1 TO Length(Laufwerk) DO
  306.      BEGIN
  307.            IF (Copy(Laufwerk,i,1)) <> ' '
  308.            THEN HStr:= HStr + Copy(Laufwerk,i,1);
  309.       END; {for}
  310.       Laufwerk := HStr;
  311.    {$I-}  ChDir(Laufwerk);  {$I+}      {Lw wechseln}
  312.    Falsch := IOResult;
  313.    IF Falsch <> 0 THEN                 {Fehlerhafte Ausführung}
  314.      BEGIN
  315.        Msg:=^C'ES LIEGT EIN FEHLER VOR'#13 +
  316.        ^C'Laufwerk '+Laufwerk+' nicht vorhanden,'#13 +
  317.        ^C'oder konnte nicht angelegt werden, da ungültige Eingabe !'; 
  318.        MessageBox(Msg,NIL,62,10,mfError + mfOkButton); 
  319.      END; 
  320.  END; 
  321.  
  322.  
  323. PROCEDURE Laufwerkwechsel; 
  324. BEGIN
  325.   IF Drucker = 0 THEN LW22 :='\EPSON' ELSE
  326.     IF Drucker = 1 THEN LW22 :='\IBM' ELSE
  327.       IF Drucker = 2 THEN LW22 :='\LASER'; 
  328.   IF Farben = 0 THEN LW33 :='\FARBE' ELSE
  329.     IF Farben = 1 THEN LW33 :='\SW' ELSE
  330.       IF Farben = 2 THEN LW33 :='\MONO'; 
  331.   LwWechseln(Laufwerk); {in das zu installierende Laufwerk}
  332.   IF Falsch <> 0 THEN Exit; 
  333.   {$I-}
  334.   MkDir(Pfad); 
  335.   IF IOResult <> 0 THEN BEGIN
  336.      Meldung(Pfad);
  337.     IF LaufWerkDa THEN Exit ELSE
  338.   END; 
  339.   InstLW:= Lw1+LaufWZu;                   {Ausgangslaufwerk Pfad INSTALL}
  340.   LwWechseln(InstLW);                     {Ausgangslaufwerk Pfad INSTALL}
  341.   IF Falsch <> 0 THEN Exit;
  342.   DateienEinlesen(InstLW,Laufwerk+Pfad);  {Liest Dateien ein und kopiert sie
  343.                                           in das Laufwerk wie in Klammern}
  344.   LwWechseln(InstLW+LW22);     {Ausgangslaufwerk Pfad INSTALL + DruckerPfad}
  345.   IF Falsch <> 0 THEN Exit;
  346.   DateienEinlesen(InstLW+LW22,Laufwerk+Pfad); {Liest Dateien ein und kopiert sie
  347.                                             in das Laufwerk wie in Klammern}
  348.   LwWechseln(InstLW+LW33);      {Ausgangslaufwerk Pfad INSTALL + FarbenPfad}
  349.   IF Falsch <> 0 THEN Exit;
  350.   DateienEinlesen(InstLW+LW33,Laufwerk+Pfad); {Liest Dateien ein und kopiert sie
  351.                                             in das Laufwerk wie in Klammern}
  352.   LwWechseln(Laufwerk+Pfad);           {in das zu installierende Direktorie}
  353.   IF Falsch <> 0 THEN Exit;
  354.      LwWechseln(LW1);                       {in das Ausgangslaufwerk zurück}
  355.   IF Falsch <> 0 THEN Exit;
  356.     LwWechseln('C:\');                       {in das Haupt-Laufwerk zurück}
  357.   IF Falsch <> 0 THEN Exit;
  358.   {$I+}
  359. END;
  360.  
  361.  BEGIN
  362.    IF Farben = 0 THEN S := 'Farbe       '
  363.    ELSE IF Farben = 1 THEN S := 'Schwarz-Weiß'
  364.    ELSE IF Farben = 2 THEN S := 'Monochrome  '; 
  365.    IF Drucker = 0 THEN S1 := 'Epson       '
  366.    ELSE IF Drucker = 1 THEN S1 := 'IBM         '
  367.    ELSE IF Drucker = 2 THEN S1 := 'Laser       '; 
  368.    Msg := ^C'Es wird nach wie folgt Installiert : '#13 +
  369.    ^C'Laufwerk und Pfad: '+Laufwerk+Pfad+''#13 +
  370.    ^C'Monitor: '+S+''#13 +
  371.    ^C'Drucker: '+S1; 
  372.    IF (MessageBox(Msg,
  373.       NIL,50,10, mfInformation + mfCancelButton + mfOkButton)) <> cmCancel
  374.    THEN BEGIN
  375.      Laufwerkwechsel; 
  376.      IF Falsch <> 0 THEN
  377.        BEGIN
  378.          Falsch := 0; 
  379.          Redraw; 
  380.          Exit; 
  381.        END; 
  382.      IF LaufwerkDa THEN BEGIN
  383.        LaufwerkDa := False; 
  384.        Redraw; 
  385.        Exit; 
  386.      END 
  387.      ELSE
  388.      Redraw;
  389.    END
  390.    ELSE
  391.    Redraw;
  392.  END; 
  393.  
  394. constructor TFileDialog.NewParameter(LaufW, LaufW1, SubD : STRING); 
  395. VAR
  396.   LaufWZu1 : STRING; 
  397.   Parameter: PFileDialog;                      {Dialogobjekt}
  398.   Ptr: PView;                         {Zeiger auf Auswahlbox}
  399.   Dummy: word;                        {Ergebnis von ExecView}
  400.   R: TRect; 
  401.   LABEL Anfang; 
  402.  
  403. PROCEDURE InitParaDataRec; 
  404. VAR
  405.   Suchweg: STRING; 
  406.  
  407. BEGIN
  408.   WITH ParaData DO
  409.     BEGIN
  410.       LaufWerkDa := False; 
  411.       LaufWZU1 := LaufW1; 
  412.       Suchweg:= '';                               {Leerstring}
  413.       {$I-}  GetDir(0,Suchweg);  {$I+}            {Momentan gesetztes Lw}
  414.       IF IOResult = 0 THEN BEGIN                  {Fehlerfreie Ausführung}
  415.         LW11 := Suchweg; 
  416.         LW12 := LW11; 
  417.       END 
  418.       ELSE BEGIN
  419.         LW1 := 'A:\'; 
  420.       END; 
  421.       LW2 := LaufW; 
  422.       FarbData:= 0; 
  423.       DruckerData := 0; 
  424.       SubData:= SubD; 
  425.     END; {with}
  426. END; 
  427.  
  428. BEGIN
  429.   InitParaDataRec; 
  430.   R.Assign(12,2,63,21); 
  431.   Parameter:= New(PFileDialog,Init(R,'INSTALL Installieren')); 
  432.   WITH Parameter^ DO
  433.     BEGIN
  434.       {────────────────────────────────CheckBox installieren──}
  435.       R.Assign(2,3,20,6); 
  436.       Ptr:= New(PRadioButtons,Init(R,       {  LWData: String[3];  }
  437.       {  LW2   : String[3]   }
  438.       {  FarbData: Word;     }
  439.       {  DruckerData : Word; }
  440.       {  SubData: String[8]; }
  441.       
  442.       NewSItem('~F~arbe',
  443.       NewSItem('~S~chwarz-Weiß',
  444.       NewSItem('~M~ono',
  445.       NIL)))
  446.       )); 
  447.       Insert(Ptr); 
  448.       R.Assign(2,2,13,3); 
  449.       Insert(New(PLabel,Init(R,'~B~ildschirm',Ptr))); 
  450.       {────────────────────────────────RadioBox installieren──}
  451.       R.Assign(25,3,45,6); 
  452.       Ptr:= New(PRadioButtons,Init(R,
  453.       NewSItem('~E~pson',
  454.       NewSItem('~I~BM',
  455.       NewSItem('~L~aser',
  456.       NIL)))
  457.       )); 
  458.       Insert(Ptr); 
  459.       R.Assign(25,2,35,3); 
  460.       Insert(New(PLabel,Init(R,'~D~rucker',Ptr))); 
  461.       {─────────────────────────────Derzeitiges Laufwerk----──}
  462.       R.Assign(3,8,8,9); 
  463.       Ptr:= New(PInputLine,Init(R,3)); 
  464.       Insert(Ptr); 
  465.       R.Assign(2,7,30,8); 
  466.       Insert(New(PLabel,Init(R,
  467.       'Installation ~v~om Laufwerk',Ptr))); 
  468.       R.Assign(8,8,40,9); 
  469.       Insert (New (pStaticText,Init (R,
  470.       '(min./max. 3 gültige Zeichen)')));
  471.       {─────────────────────────────Installation nach-------──}
  472.       R.Assign(3,11,8,12); 
  473.       Ptr:= New(PInputLine,Init(R,3)); 
  474.       Insert(Ptr); 
  475.       R.Assign(2,10,30,11); 
  476.       Insert(New(PLabel,Init(R,
  477.       '~I~nstallation nach Laufwerk',Ptr))); 
  478.       R.Assign(8,11,40,12); 
  479.       Insert (New (pStaticText,Init (R,
  480.       '(min./max. 3 gültige Zeichen)')));
  481.       {─────────────────────────────Eingabefeld installieren──}
  482.       R.Assign(3,14,13,15); 
  483.       Ptr:= New(PInputLine,Init(R,8)); 
  484.       Insert(Ptr); 
  485.       R.Assign(2,13,30,14); 
  486.       Insert(New(PLabel,Init(R,'~P~fadname',Ptr))); 
  487.       R.Assign(13,14,40,15); 
  488.       Insert (New (pStaticText,Init (R,
  489.       '(max. 8 gültige Zeichen)')));
  490.       {────────────────────────────────Schalter installieren──}
  491.       R.Assign(2,16,11,18); 
  492.       Insert(New(PButton,Init(R,'Ende',cmCancel,bfNormal))); 
  493.       R.Assign(13,16,23,18); 
  494.       Insert(New(PButton,Init(R,'Hilfe~1~',cmHelp1,bfNormal))); 
  495.       R.Assign(25,16,35,18); 
  496.       Insert(New(PButton,Init(R,'Hilfe~2~',cmHelp2,bfNormal))); 
  497.       R.Assign(37,16,46,18); 
  498.       Insert(New(PButton, Init(R, 'O~K~', cmOK, bfdefault))); 
  499.     END; {with}
  500.   {─────────────Nur wenn genügend Heap, in Gruppe einfügen──}
  501.   BEGIN
  502.     Parameter^.SetData(ParaData);          {Voreinstellungen}
  503.     Anfang:
  504.     Dummy:= DeskTop^.ExecView(Parameter); 
  505.     IF Dummy <> cmCancel
  506.     THEN BEGIN
  507.       Parameter^.GetData(ParaData);  {Geänderte Einträge}
  508.       {──────────────────Den Variablen zuordnen──}
  509.       {  LW1      : String[3];  }
  510.       {  Pfad     : String[8];  }
  511.       {  Drucker  : Word;       }
  512.       {  Farben   : Word;       }
  513.       {  Laufwerk : String[3];  }
  514.       {-----------------------------------------------------------}
  515.       IF Length(ParaData.SubData) < 1 THEN
  516.         Pfad := 'INSTALL'
  517.       ELSE
  518.         Pfad:= ParaData.SubData; 
  519.       {-----------------------------------------------------------}
  520.       IF Length(ParaData.LW11) < 3 THEN
  521.         LW1 := LW12 
  522.       ELSE
  523.         LW1:= ParaData.LW11; 
  524.       {-----------------------------------------------------------}
  525.       IF Length(ParaData.LW2) < 3 THEN
  526.         LaufWerk := 'C:\' 
  527.       ELSE
  528.         LaufWerk:= ParaData.LW2; 
  529.       {-----------------------------------------------------------}
  530.       IF (ParaData.DruckerData < 0) OR (ParaData.DruckerData > 2)
  531.       THEN BEGIN {────────falsche oder Keine Option gewählt──}
  532.         Drucker:= 0; 
  533.       END {if}
  534.       ELSE BEGIN {─────────────Mindestens 1 Option gewählt──}
  535.         WITH ParaData DO
  536.           Drucker:= DruckerData
  537.       END; {else}
  538.       IF (ParaData.FarbData < 0) OR (ParaData.FarbData > 2)
  539.       THEN Farben:= 0
  540.       ELSE Farben :=ParaData.FarbData
  541.     END
  542.     ELSE BEGIN
  543.       Dispose(Parameter,Done);        {Objekt wieder freigeben}
  544.       Exit
  545.     END; {if}
  546.     Dispose(Parameter,Done);        {Objekt wieder freigeben}
  547.   END; 
  548.   Installiere(LaufWZu1); 
  549. END; 
  550.  
  551. END.
  552.