home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------- *)
- (* DIABOX.PAS *)
- (* *)
- (* ■ DialogBox: Eine Dialogbox (z.B. à la Works, TC++...)*)
- (* Nach Init werden die Einträge mit Add "hinzugefügt",*)
- (* Run oder RunBy lassen die Eingabe/Wahl laufen, mit *)
- (* Close muss das Fenster explizit geschlossen werden, *)
- (* damit z.B. nach Wahl von Help oder Fehleingabe Run *)
- (* nochmal gestartet werden kann. *)
- (* ■ EndButDialogBox: Hängt automatisch 3 oder 2 End- *)
- (* buttons an sowie einen Trennstrich; keine Prüfung, *)
- (* ob sich die andern Einträge am richtigen Ort befin- *)
- (* den. *)
- (* ■ SaveBox: Ein Eingabefeld zur Eingabe des Dateinamens*)
- (* und eine Pickliste mit den Verzeichnissen sowie die *)
- (* Anzeige des vollständigen aktuellen Pfads. *)
- (* ■ LoadBox: Das Eingabefeld ist zur Eingabe der Such- *)
- (* maske da, und eine Pickliste mit den Dateien. *)
- (* Anwendung und Auswahl: siehe Demo. *)
- (* *)
- (* (c) 1991 by R.Reichert & toolbox *)
- (* ----------------------------------------------------- *)
- UNIT DiaBoxes;
-
- INTERFACE
-
- USES Stuff, MouKey, Lists,
- WinVSM, SAAWin,
- SAASched, DBxItems, DBxSched;
-
- CONST
- DiaBoxBackCol= $70; { DialogBoxBackColor }
- SchOk = 0; { alles Ok }
- SchEvNotMine = 1; { Event nicht meins }
- SchActNext = 2; { aktiviere nächsten Scheduler }
- SchActPrev = 3; { aktiviere vorhergehenden Scheduler }
- SchEvAccepted= 4; { Event akzeptiert }
-
- SBSave = 10; { SaveBox: Speichern }
- SBCancel = 11; { SaveBox: Abbruch }
- SBHelp = 12; { SaveBox: Hilfe verlangt }
-
- LBLoad = 13; { LoadBox: Laden }
- LBCancel = 14;
- LBHelp = 15;
-
-
- TYPE
- DialogBoxPtr = ^DialogBox;
- DialogBox = OBJECT (SAAScheduler)
-
- ItemList : DListCollectionPtr;
- Win : SAAWindowPtr;
- BackColor: BYTE;
- Opened : BOOLEAN;
-
- CONSTRUCTOR Init (x1, y1, x2, y2 : BYTE;
- Title : STRING;
- NewVSM: WExtVSMPtr);
- PROCEDURE Open; VIRTUAL;
- PROCEDURE Run; VIRTUAL;
- PROCEDURE RunBy (Nr : BYTE); VIRTUAL;
- PROCEDURE SetActiveItem (NewAI : BYTE); VIRTUAL;
- PROCEDURE Close (QuitRC : BYTE); VIRTUAL;
- PROCEDURE Add (NewSched : SAASchedulerPtr); VIRTUAL;
- PROCEDURE SetXY (x1, y1, x2, y2 : BYTE); VIRTUAL;
- PROCEDURE Display; VIRTUAL;
- PROCEDURE DisplayHotKeys; VIRTUAL;
- PROCEDURE CheckEvent (VAR Ev : EventObj); VIRTUAL;
- PROCEDURE SetActive; VIRTUAL;
- PROCEDURE SetPassive; VIRTUAL;
- PROCEDURE SetBackColor (BC : BYTE); VIRTUAL;
- PROCEDURE SetXYRel (dx, dy : INTEGER); VIRTUAL;
-
- FUNCTION GetSchedNr (n:WORD):SAASchedulerPtr; VIRTUAL;
- FUNCTION GetWinPtr : SAAWindowPtr; VIRTUAL;
- FUNCTION GetItem (Nr:WORD) : SAASchedulerPtr; VIRTUAL;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- EndButDialogBoxPtr = ^EndButDialogBox;
- EndButDialogBox = OBJECT (DialogBox)
-
- EndButNum : BYTE;
- EBIns : BOOLEAN;
- VSM : WExtVSMPtr;
-
- CONSTRUCTOR Init (x1, y1, x2, y2 : BYTE;
- Title : STRING;
- EBNum : BYTE;
- NewVSM : WExtVSMPtr);
- PROCEDURE Open; VIRTUAL;
- PROCEDURE DrawLine; VIRTUAL;
- END;
-
- SaveBoxPtr = ^SaveBox;
- SaveBox = OBJECT (SAAScheduler)
-
- RetByFin : BOOLEAN;
- Attr : BYTE;
- Mask,
- Path : STRING;
- Result : STRING;
- Box : DialogBoxPtr;
- NameF : InputFieldPtr;
- Dirs : DirListPtr;
- VSM : WExtVSMPtr;
-
- CONSTRUCTOR Init (x1, y1 : BYTE;
- HelpAvail : BOOLEAN;
- NewVSM : WExtVSMPtr);
- PROCEDURE DisplayHotKeys; VIRTUAL;
- PROCEDURE Open; VIRTUAL;
- PROCEDURE Run; VIRTUAL;
- PROCEDURE RunBy (Nr : BYTE); VIRTUAL;
- PROCEDURE Close; VIRTUAL;
- PROCEDURE ShowPath; VIRTUAL;
-
- FUNCTION GetActiveItem : BYTE; VIRTUAL;
- FUNCTION GetResult : STRING; VIRTUAL;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- LoadBoxPtr = ^LoadBox;
- LoadBox = OBJECT (SaveBox)
-
- Files : FileListPtr;
-
- CONSTRUCTOR Init (x1, y1 : BYTE;
- HelpAvail : BOOLEAN;
- NewVSM : WExtVSMPtr);
- PROCEDURE Open; VIRTUAL;
- PROCEDURE Run; VIRTUAL;
- END;
-
- IMPLEMENTATION
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von DialogBox *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR DialogBox.Init (x1, y1, x2, y2 : BYTE;
- Title : STRING;
- NewVSM: WExtVSMPtr);
- BEGIN
- SAAScheduler.Init;
- Opened := FALSE;
- BackColor:= DiaBoxBackCol;
- ItemList := New (DListCollectionPtr, Init);
- Win := New (SAAWindowPtr, Init (NewVSM));
- IF (ItemList=NIL) OR (Win=NIL) THEN
- Fail
- ELSE BEGIN
- Win^.SetXY (x1, y1, x2, y2);
- Win^.SetClearWin (TRUE);
- Win^.SetBackColor (BackColor);
- Win^.SetColors (BackColor, BackColor, 0, 0);
- Win^.SetShadow (FALSE);
- Win^.SetTitles (Title, '');
- Win^.SetFrame (1);
- END;
- END;
-
- PROCEDURE DialogBox.Open;
- BEGIN
- IF NOT Opened THEN BEGIN
- Win^.Open;
- IF Win^.IsOpened THEN BEGIN
- Opened := TRUE;
- Display;
- ActiveItem := 1;
- ItemList^.SetActNodeTo (ActiveItem);
- SAASchedulerPtr (ItemList^.GetActData)^.SetActive;
- END;
- END;
- END;
-
- PROCEDURE DialogBox.Run;
- VAR Ev : EventObj;
- OldX, OldY : BYTE;
- WinAnswer : BYTE;
- BEGIN
- IF NOT Opened THEN Open;
- ItemList^.SetActNodeTo (ActiveItem);
- SAASchedulerPtr (ItemList^.GetActData)^.SetActive;
- REPEAT
- ReturnCode := SchEvNotMine;
- EvHand^.WaitForEvent (EvAll, Ev);
- IF (Ev.EventType=EvKeyState) AND
- (Ev.StateKey=Alt) THEN BEGIN
- DisplayHotKeys;
- ReturnCode := SchEvAccepted;
- END;
- IF NOT (Ev.EventType=EvKeyUnknown) AND
- NOT ((Ev.EventType=EvMouMove) AND
- (Ev.Buttons=0)) THEN BEGIN
- CheckEvent (Ev);
- { Mausbewegung ohne Betätigung der Tasten
- auszuwerten, wäre Zeitverschwendung }
-
- IF (ReturnCode=SchEvNotMine) THEN BEGIN
- OldX := Win^.GetX1; OldY := Win^.GetY1;
- Win^.CheckEvent (Ev);
- WinAnswer := Win^.GetReturnCode;
- IF WinAnswer=MovedWin THEN BEGIN
- SetXYRel (Win^.GetX1-OldX, Win^.GetY1-OldY);
- ReturnCode := SchEvAccepted;
- END ELSE IF WinAnswer=ClosedWin THEN BEGIN
- ReturnCode := SchCancel; Close (ReturnCode);
- END;
- END;
- END;
- UNTIL (ReturnCode=SchFinish) OR
- (ReturnCode=SchCancel) OR
- (ReturnCode=SchHelp);
- END;
-
- PROCEDURE DialogBox.RunBy (Nr : BYTE);
- BEGIN
- IF NOT Opened THEN
- Open;
- IF ActiveItem>0 THEN
- SAASchedulerPtr (ItemList^.GetActData)^.SetPassive;
- SetActiveItem (Nr);
- Run;
- END;
-
- PROCEDURE DialogBox.SetActiveItem (NewAI : BYTE);
- BEGIN
- IF NewAI<1 THEN NewAI := 1;
- IF NewAI>ItemNum THEN NewAI := ItemNum;
- ActiveItem := NewAI;
- { ItemList^.SetActNodeTo (ActiveItem); }
- END;
-
- PROCEDURE DialogBox.Close (QuitRC : BYTE);
- VAR Sched : SAASchedulerPtr;
- BEGIN
- IF Opened THEN BEGIN
- Sched := SAASchedulerPtr (ItemList^.GotoFirstData);
- IF QuitRC=SchCancel THEN
- SAASchedulerPtr (ItemList^.GetActData)^.
- RestoreConfiguration;
- WHILE NOT (ItemList^.IsOnLast) DO BEGIN
- Sched := SAASchedulerPtr (ItemList^.GotoNextData);
- IF QuitRC=SchCancel THEN
- SAASchedulerPtr (ItemList^.GetActData)^.
- RestoreConfiguration;
- END;
- Win^.Close;
- Opened := FALSE;
- END;
- END;
-
- PROCEDURE DialogBox.Add (NewSched : SAASchedulerPtr);
- BEGIN
- IF (NewSched<>NIL) AND (NOT Opened) THEN BEGIN
- ItemList^.Put (NewSched); Inc (ItemNum);
- END;
- END;
-
- PROCEDURE DialogBox.SetXY (x1, y1, x2, y2 : BYTE);
- BEGIN
- Win^.SetXY (x1, y1, x2, y2);
- END;
-
- PROCEDURE DialogBox.Display;
- BEGIN
- IF (NOT Displayed) AND (Opened) THEN BEGIN
- SAAScheduler.Display;
- SAASchedulerPtr (ItemList^.GotoFirstData)^.Display;
- SAASchedulerPtr (ItemList^.GetActData)^.
- SaveConfiguration;
- WHILE NOT (ItemList^.IsOnLast) DO BEGIN
- SAASchedulerPtr (ItemList^.GotoNextData)^.Display;
- SAASchedulerPtr (ItemList^.GetActData)^.
- SaveConfiguration;
- END;
- END;
- END;
-
- PROCEDURE DialogBox.DisplayHotKeys;
- VAR p : DListNodePtr;
- BEGIN
- IF (NOT HKDisplayed) AND (Opened) THEN BEGIN
- p := ItemList^.GetActNode;
- SAAScheduler.DisplayHotKeys;
- SAASchedulerPtr (ItemList^.GotoFirstData)^.
- DisplayHotKeys;
- WHILE NOT (ItemList^.IsOnLast) DO
- SAASchedulerPtr (ItemList^.GotoNextData)^.
- DisplayHotKeys;
- ItemList^.SetActNode (p);
- END;
- END;
-
- PROCEDURE DialogBox.CheckEvent (VAR Ev : EventObj);
- VAR i, Answer : WORD;
- BEGIN
- ReturnCode := SchEvNotMine;
- WITH SAASchedulerPtr (ItemList^.GetActData)^ DO BEGIN
- CheckEvent (Ev);
- Answer := GetReturnCode;
- END;
- CASE Answer OF
- SchActNext : BEGIN
- SAASchedulerPtr (ItemList^.
- GetActData)^.
- SetPassive;
- SAASchedulerPtr (ItemList^.
- GotoNextData)^.
- SetActive;
- Inc (ActiveItem);
- IF ActiveItem>ItemNum THEN
- ActiveItem := 1;
- ReturnCode := SchEvAccepted;
- END;
- SchActPrev : BEGIN
- SAASchedulerPtr (ItemList^.
- GetActData)^.
- SetPassive;
- SAASchedulerPtr (ItemList^.
- GotoPrevData)^.
- SetActive;
- Dec (ActiveItem);
- IF ActiveItem<1 THEN
- ActiveItem := ItemNum;
- ReturnCode := SchEvAccepted;
- END;
- END;
- IF Answer=SchEvNotMine THEN BEGIN
- i := 1; Answer := SchOk;
- WITH ItemList^ DO BEGIN
- SAASchedulerPtr (GotoFirstData)^.CheckEvent (Ev);
- Answer := SAASchedulerPtr (GetActData)^.
- GetReturnCode;
- WHILE (NOT (IsOnLast)) AND
- (Answer=ItEvNotMine) DO BEGIN
- SAASchedulerPtr (GotoNextData)^.CheckEvent (Ev);
- Answer := SAASchedulerPtr (GetActData)^.
- GetReturnCode;
- Inc (i);
- END;
- IF (Answer=SchEvAccepted) OR
- (Answer=SchFinish) OR
- (Answer=SchCancel) OR
- (Answer=SchHelp) THEN BEGIN
- GetSchedNr (ActiveItem)^.SetPassive;
- SetActNodeTo (i);
- Self.ActiveItem := i;
- {^^^ sonst fühlt sich ItemList angesprochen }
-
- END ELSE
- SetActNodeTo (ActiveItem);
- SAASchedulerPtr (GetActData)^.SetActive;
- END;
- END;
- ReturnCode := Answer;
- END;
-
- PROCEDURE DialogBox.SetActive;
- BEGIN
- { die Dialogbox ist immer aktiv,
- solange sie geöffnet ist }
- END;
-
- PROCEDURE DialogBox.SetPassive;
- BEGIN
- { daher auch nie passiv }
- END;
-
- PROCEDURE DialogBox.SetBackColor (BC : BYTE);
- BEGIN
- IF NOT Opened THEN BEGIN
- BackColor := BC;
- Win^.SetBackColor (BackColor);
- END;
- END;
-
- PROCEDURE DialogBox.SetXYRel (dx, dy : INTEGER);
- VAR p : DListNodePtr;
- BEGIN
- IF (Displayed) THEN BEGIN
- p := ItemList^.GetActNode;
- SAASchedulerPtr (ItemList^.GotoFirstData)^.
- SetXYRel (dx, dy);
- WHILE NOT (ItemList^.IsOnLast) DO
- SAASchedulerPtr (ItemList^.GotoNextData)^.
- SetXYRel (dx, dy);
- ItemList^.SetActNode (p);
- SAASchedulerPtr (ItemList^.GetActData)^.SetActive;
- { der Aufruf des schon aktiven Items setzt
- den Cursor richtig }
- END;
- END;
-
-
- FUNCTION DialogBox.GetSchedNr (n:WORD):SAASchedulerPtr;
- VAR i : WORD;
- BEGIN
- i := 1;
- GetSchedNr := SAASchedulerPtr (ItemList^.GotoFirstData);
- WHILE (i<ItemNum) AND (i<n) DO BEGIN
- GetSchedNr := SAASchedulerPtr (ItemList^.GotoNextData);
- Inc (i);
- END;
- END;
-
- FUNCTION DialogBox.GetWinPtr : SAAWindowPtr;
- BEGIN
- GetWinPtr := Win;
- END;
-
- FUNCTION DialogBox.GetItem (Nr : WORD) : SAASchedulerPtr;
- BEGIN
- GetItem := GetSchedNr (Nr);
- END;
-
- DESTRUCTOR DialogBox.Done;
- BEGIN
- Dispose (Win, Done);
- Dispose (ItemList, Done)
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von EndButDialogBox *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR EndButDialogBox.Init (x1, y1, x2, y2 : BYTE;
- Title : STRING;
- EBNum : BYTE;
- NewVSM : WExtVSMPtr);
- BEGIN
- IF DialogBox.Init (x1,y1,x2,y2,Title,NewVSM) THEN BEGIN
- EndButNum := EBNum; EBIns := FALSE; VSM := NewVSM;
- END ELSE
- Fail;
- END;
-
- PROCEDURE EndButDialogBox.Open;
- VAR x, y, dx : BYTE;
- BEGIN
- IF NOT EBIns THEN BEGIN
- x := Win^.GetX2; y := Pred (Win^.GetY2);
- IF EndButNum>2 THEN dx := 32
- ELSE dx := 22;
- Add (New (EndButtonPtr,
- Init (SchFinish, New (EndButPtr,
- Init (x-dx, y,
- ' #Ok ',
- AltO, Enter,
- VSM)))));
- IF EndButNum>2 THEN
- Add (New (EndButtonPtr,
- Init (SchHelp, New (EndButPtr,
- Init (x-24, y,
- ' #Hilfe ',
- AltH, 59,
- VSM)))));
- Add (New (EndButtonPtr,
- Init (SchCancel, New (EndButPtr,
- Init (x-13, y,
- ' #Abbruch ',
- AltA, ESC,
- VSM)))));
- EBIns := TRUE;
- END;
- DialogBox.Open;
- DrawLine;
- END;
-
- PROCEDURE EndButDialogBox.DrawLine;
- VAR i : BYTE;
- BEGIN
- FOR i := Succ (Win^.GetX1) TO Pred (Win^.GetX2) DO
- VSM^.WriteChr (i, Win^.GetY2-2,
- Win^.GetBackColor,
- '─');
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von SaveBox *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR SaveBox.Init (x1, y1 : BYTE;
- HelpAvail : BOOLEAN;
- NewVSM : WExtVSMPtr);
- VAR EndButNum : BYTE;
- BEGIN
- IF (SAAScheduler.Init) AND (NewVSM<>NIL) THEN BEGIN
- IF HelpAvail THEN EndButNum := 3
- ELSE EndButNum := 2;
- VSM := NewVSM;
- GetDir (0, Path);
- Mask := '*.*';
- Attr := Dos.AnyFile;
- Result := '';
- RetByFin := FALSE;
- Box := New (EndButDialogBoxPtr,
- Init (x1, y1, x1+49, y1+19,
- ' Datei speichern ',
- EndButNum,
- VSM));
- IF Box<>NIL THEN BEGIN
- NameF := New (InputFieldPtr,
- Init (New (StringFieldPtr,
- Init (x1+18, y1+2,
- 12, 12,
- '·',
- '',
- x1+4, y1+2,
- ' Datei#name: ',
- AltN,
- VSM))));
- Box^.Add (NameF);
- Dirs := New (DirListPtr,
- Init (New (PickListPtr,
- Init (x1+13, y1+6,
- x1+32, y1+15,
- ' #Verzeich'+
- 'nisse ',
- AltV,
- VSM))));
- Box^.Add (Dirs);
- IF Box^.ItemNum<>2 THEN
- Fail;
- END ELSE
- Fail;
- END ELSE
- Fail;
- END;
-
- PROCEDURE SaveBox.DisplayHotKeys;
- BEGIN
- SAAScheduler.DisplayHotKeys;
- Box^.DisplayHotKeys;
- END;
-
- PROCEDURE SaveBox.Open;
- BEGIN
- IF NOT Displayed THEN BEGIN
- Dirs^.MakeList (Path);
- Box^.Open;
- IF Box^.Win^.IsOpened THEN BEGIN
- Displayed := TRUE;
- ShowPath;
- END;
- END;
- END;
-
- PROCEDURE SaveBox.Run;
- VAR Answer : BYTE;
- Str : STRING;
- Drive : STRING;
- BEGIN
- Open;
- IF NOT Displayed THEN Exit;
- REPEAT
- ReturnCode := SchEvNotMine;
- Box^.Run;
- Answer := Box^.GetReturnCode;
- IF Answer=SchFinish THEN BEGIN
- IF Box^.GetActiveItem=2 THEN BEGIN
- Str := KillSpaces (Dirs^.GetResult);
- IF Str='..' THEN
- Path := CutLastPath (Path)
- ELSE
- Path := Path+'\'+Str;
- Dirs^.MakeList (Path);
- Dirs^.Display;
- ShowPath;
- ReturnCode := SchEvAccepted;
- END ELSE
- IF (Box^.GetActiveItem=1) OR
- (Box^.GetActiveItem=3) THEN BEGIN
- Str := NameF^.GetFPtr^.Result;
- Result := Path+'\'+KillSpaces (Str);
- ReturnCode := SBSave;
- END;
- END;
- IF Answer=SchCancel THEN ReturnCode := SBCancel;
- IF Answer=SchHelp THEN ReturnCode := SBHelp;
- UNTIL (ReturnCode=SBHelp) OR
- (ReturnCode=SBSave) OR
- (ReturnCode=SBCancel) OR
- (RetByFin AND (Answer=SchFinish));
- END;
-
- PROCEDURE SaveBox.RunBy (Nr : BYTE);
- BEGIN
- Box^.SetActiveItem (Nr);
- Run;
- END;
-
- PROCEDURE SaveBox.Close;
- BEGIN
- Box^.Close (Box^.GetReturnCode);
- END;
-
- PROCEDURE SaveBox.ShowPath;
- BEGIN
- IF Displayed THEN
- WITH Box^.Win^ DO BEGIN
- VSM^.FillPart (Succ (GetX1), GetY1+4,
- Pred (GetX2), GetY1+4,
- GetBackColor, ' ');
- VSM^.WriteStr (GetX1+2, GetY1+4,
- GetBackColor,
- 'Verzeichnis: '+Path);
- END;
- END;
-
- FUNCTION SaveBox.GetActiveItem : BYTE;
- BEGIN
- GetActiveItem := Box^.GetActiveItem;
- END;
-
- FUNCTION SaveBox.GetResult : STRING;
- BEGIN
- GetResult := Result;
- END;
-
- DESTRUCTOR SaveBox.Done;
- BEGIN
- Dispose (Box, Done);
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von LoadBox *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR LoadBox.Init (x1, y1 : BYTE;
- HelpAvail : BOOLEAN;
- NewVSM : WExtVSMPtr);
- VAR EndButNum : BYTE;
- BEGIN
- IF (SaveBox.Init (x1,y1,HelpAvail,NewVSM)) THEN BEGIN
- IF HelpAvail THEN EndButNum := 3
- ELSE EndButNum := 2;
- VSM := NewVSM;
- GetDir (0, Path);
- Mask := '*.*';
- Attr := Dos.AnyFile-Dos.Directory;
- Result := '';
- RetByFin := FALSE;
- Box := New (EndButDialogBoxPtr,
- Init (x1, y1, x1+49, y1+19,
- ' Datei laden ',
- EndButNum,
- VSM));
- IF Box<>NIL THEN BEGIN
- NameF := New (InputFieldPtr,
- Init (New (StringFieldPtr,
- Init (x1+19, y1+2,
- 12, 12,
- '·',
- '*.*',
- x1+4, y1+2,
- ' Suche #nach: ',
- AltN,
- VSM))));
- Box^.Add (NameF);
- Dirs := New (DirListPtr,
- Init (New (PickListPtr,
- Init (x1+3, y1+6,
- x1+22, y1+15,
- ' #Verzeich'+
- 'nisse ',
- AltV,
- VSM))));
- Box^.Add (Dirs);
- Files := New (FileListPtr,
- Init (New (PickListPtr,
- Init (x1+27, y1+6,
- x1+46, y1+15,
- ' #Dateien: ',
- AltD,
- VSM))));
- Box^.Add (Files);
- IF Box^.ItemNum<>3 THEN
- Fail;
- END ELSE
- Fail;
- END ELSE
- Fail;
- END;
-
- PROCEDURE LoadBox.Open;
- BEGIN
- IF NOT Displayed THEN BEGIN
- SaveBox.Open;
- IF Displayed THEN BEGIN
- Files^.MakeList (Path, Mask, Attr);
- Files^.Display;
- END;
- END;
- END;
-
- PROCEDURE LoadBox.Run;
- VAR Answer : BYTE;
- Str : STRING;
- BEGIN
- Open;
- IF NOT Displayed THEN Exit;
- REPEAT
- ReturnCode := SchEvNotMine;
- Box^.Run;
- Answer := Box^.GetReturnCode;
- IF Answer=SchFinish THEN BEGIN
- IF Box^.GetActiveItem=2 THEN BEGIN
- Str := KillSpaces (Dirs^.GetResult);
- IF Str='..' THEN
- Path := CutLastPath (Path)
- ELSE
- Path := Path+'\'+Str;
- Dirs^.MakeList (Path);
- Dirs^.Display;
- Str := KillSpaces (NameF^.GetFPtr^.Result);
- IF Str='' THEN
- Str := Mask;
- Files^.MakeList (Path, Str, Attr);
- Files^.Display;
- ReturnCode := SchEvAccepted;
- ShowPath;
- ReturnCode := SchEvAccepted;
- END;
- IF (Box^.ActiveItem=3) OR
- (Box^.ActiveItem=4) THEN BEGIN
- Str := Files^.GetResult;
- Result := Path+'\'+KillSpaces (Str);
- ReturnCode := LBLoad;
- END;
- IF (Box^.GetActiveItem=1) THEN BEGIN
- Str := KillSpaces (NameF^.GetFPtr^.Result);
- IF Str='' THEN
- Str := Mask;
- Files^.MakeList (Path, Str, Attr);
- Files^.Display;
- ReturnCode := SchEvAccepted;
- END;
- END;
- IF Answer=SchCancel THEN ReturnCode := LBCancel;
- IF Answer=SchHelp THEN ReturnCode := LBHelp;
- UNTIL (ReturnCode=LBHelp) OR
- (ReturnCode=LBLoad) OR
- (ReturnCode=LBCancel) OR
- (RetByFin AND (Answer=SchFinish));
- END;
-
- END.
- (* ----------------------------------------------------- *)
- (* Ende von DIABOX.PAS *)
- (* ----------------------------------------------------- *)