home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------- *)
- (* DBXSCHED.PAS *)
- (* *)
- (* ■ RadioButtons: "Sammelt" Einträge vom Type "RadioBut"*)
- (* da diese nur in Gruppe Sinn machen. Daher ist aber *)
- (* auch die Eventprüfung komplexer ausgefallen, kann *)
- (* der aktive Item das Event nicht auswerten, müssen *)
- (* alle anderen durchlaufen werden. *)
- (* ■ WinRadioButtons: Noch ein Fenster rundherum, dessen *)
- (* Koordinaten allerdings explizit angegeben werden *)
- (* müssen (in Init). *)
- (* ■ PushButton: Erweiterung von PushBut zu Scheduler. *)
- (* ■ EndButton: Erweiterung für EndBut, da sie beide von *)
- (* vno SAAScheduler erben, enthalten sie viele "Um- *)
- (* leitungen". EndBut liefert bei Wahl den an Init über*)
- (* gebenen ReturnCode. *)
- (* ■ InputField: Ebenfalls Erweiterung. *)
- (* ■ WinInputField: Wie InputField, mit aktivem Fenster *)
- (* und ohne HotKey; einmal geöffnet, muss es beendet *)
- (* werden. *)
- (* ■ PickList: Erweiterung von PickList. *)
- (* ■ FileList: Erstellt automatisch den Inhalt der *)
- (* PickList: Eine Liste von allen Dateien im angege- *)
- (* benen Verzeichnis. *)
- (* ■ DirList: Eine Liste mit allen Directories. *)
- (* *)
- (* (c) 1991 by R.Reichert & toolbox *)
- (* ----------------------------------------------------- *)
- UNIT DBXSched;
-
- INTERFACE
-
- USES crt,Dos, Stuff,
- MouKey, WinVSM, Lists,
- FrameWin, SAAWin,
- SAASched, DBXItems;
-
- CONST
- WinRFrCol = $70; { WinRadioButtonsFrameCol }
-
- SchOk = 0; { alles Ok }
- SchEvNotMine = 1; { Event nicht meins }
- SchActNext = 2; { aktiviere nächsten Scheduler }
- SchActPrev = 3; { aktiviere vorhergehenden Scheduler }
- SchEvAccepted= 4; { Event akzeptiert }
-
- SchFinish = 5; { beendet, "Ok" }
- SchCancel = 6; { beendet, "Cancel" }
- SchHelp = 7; { beendet, "Help" }
-
-
- TYPE
- RadioButtonsPtr = ^RadioButtons;
- RadioButtons = OBJECT (SAAScheduler)
-
- ItemList : DListCollectionPtr;
-
- CONSTRUCTOR Init;
- PROCEDURE Add (NewItem : RadioButPtr); VIRTUAL;
- PROCEDURE Display; VIRTUAL;
- PROCEDURE DisplayHotKeys; VIRTUAL;
- PROCEDURE CheckEvent (VAR Ev : EventObj); VIRTUAL;
- PROCEDURE SetActive; VIRTUAL;
- PROCEDURE SetPassive; VIRTUAL;
- PROCEDURE SetXYRel (dx, dy : INTEGER); VIRTUAL;
- PROCEDURE SaveConfiguration; VIRTUAL;
-
- FUNCTION GetRadioButNr (n:WORD) : RadioButPtr; VIRTUAL;
- FUNCTION GetResult : BYTE;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- WinRadioButtonsPtr = ^WinRadioButtons;
- WinRadioButtons = OBJECT (RadioButtons)
-
- FrCol : BYTE;
- Win : FrameWindowPtr;
-
- CONSTRUCTOR Init (x1, y1, x2, y2 : BYTE;
- Title : STRING;
- NewVSM : WextVSMPtr);
- PROCEDURE Display; VIRTUAL;
- PROCEDURE SetXYRel (dx, dy : INTEGER); VIRTUAL;
- PROCEDURE SetFrameColor (NC : BYTE); VIRTUAL;
-
- FUNCTION GetWinPtr : FrameWindowPtr; VIRTUAL;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- PushButtonPtr = ^PushButton;
- PushButton = OBJECT (SAAScheduler)
-
- PushB : PushButPtr;
-
- CONSTRUCTOR Init (PBPtr : PushButPtr);
- PROCEDURE Display; VIRTUAL;
- PROCEDURE DisplayHotKeys; VIRTUAL;
- PROCEDURE CheckEvent (VAR Ev : EventObj); VIRTUAL;
- PROCEDURE SetActive; VIRTUAL;
- PROCEDURE SetPassive; VIRTUAL;
- PROCEDURE SetXYRel (dx, dy : INTEGER); VIRTUAL;
- PROCEDURE SaveConfiguration; VIRTUAL;
- PROCEDURE RestoreConfiguration; VIRTUAL;
-
- FUNCTION GetState : BOOLEAN; VIRTUAL;
- FUNCTION GetResult : BOOLEAN;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- EndButtonPtr = ^EndButton;
- EndButton = OBJECT (SAAScheduler)
-
- EndB : EndButPtr;
- QuitRC : BYTE;
-
- CONSTRUCTOR Init (QRC : BYTE; EndBPtr : EndButPtr);
- PROCEDURE Display; VIRTUAL;
- PROCEDURE DisplayHotKeys; VIRTUAL;
- PROCEDURE CheckEvent (VAR Ev : EventObj); VIRTUAL;
- PROCEDURE SetActive; VIRTUAL;
- PROCEDURE SetPassive; VIRTUAL;
- PROCEDURE SetXYRel (dx, dy : INTEGER); VIRTUAL;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- InputFieldPtr = ^InputField;
- InputField = OBJECT (SAAScheduler)
-
- Field : StringFieldPtr;
-
- CONSTRUCTOR Init (FPtr : StringFieldPtr);
- PROCEDURE Display; VIRTUAL;
- PROCEDURE DisplayHotKeys; VIRTUAL;
- PROCEDURE SetActive; VIRTUAL;
- PROCEDURE SetPassive; VIRTUAL;
- PROCEDURE CheckEvent (VAR Ev : EventObj); VIRTUAL;
- PROCEDURE SetXYRel (dx, dy : INTEGER); VIRTUAL;
-
- FUNCTION GetFPtr : StringFieldPtr;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- WinInputFieldPtr = ^WinInputField;
- WinInputField = OBJECT (InputField)
-
- Win : SAAWindowPtr;
-
- CONSTRUCTOR Init (FPtr: StringFieldPtr;
- VSM : WExtVSMPtr);
- PROCEDURE Display; VIRTUAL;
- PROCEDURE DisplayHotKeys; VIRTUAL;
- PROCEDURE CheckEvent (VAR Ev : EventObj); VIRTUAL;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- PickListSchedPtr = ^PickListSched;
- PickListSched = OBJECT (SAAScheduler)
-
- PickL : PickListPtr;
-
- CONSTRUCTOR Init (PLPtr : PickListPtr);
- PROCEDURE Display; VIRTUAL;
- PROCEDURE DisplayHotKeys; VIRTUAL;
- PROCEDURE Add (Item : StringPtr); VIRTUAL;
- PROCEDURE CheckEvent (VAR Ev : EventObj); VIRTUAL;
- PROCEDURE SetActive; VIRTUAL;
- PROCEDURE SetPassive; VIRTUAL;
- PROCEDURE SetXYRel (dx, dy : INTEGER); VIRTUAL;
- PROCEDURE SaveConfiguration; VIRTUAL;
- PROCEDURE RestoreConfiguration; VIRTUAL;
- PROCEDURE ClearList; VIRTUAL;
- PROCEDURE MakeList;
-
- FUNCTION GetResult : STRING;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- FileListPtr = ^FileList;
- FileList = OBJECT (PickListSched)
- PROCEDURE MakeList (Path, Mask : STRING; Attr : BYTE);
- FUNCTION FormatFileName (Name:STRING):STRING; VIRTUAL;
- END;
-
- DirListPtr = ^DirList;
- DirList = OBJECT (FileList)
- PROCEDURE MakeList (Path : STRING);
- END;
-
- IMPLEMENTATION
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von RadioButtons *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR RadioButtons.Init;
- BEGIN
- SAAScheduler.Init;
- ItemList := New (DListCollectionPtr, Init);
- IF ItemList=NIL THEN
- Fail;
- END;
-
- PROCEDURE RadioButtons.Add (NewItem : RadioButPtr);
- BEGIN
- IF (NewItem<>NIL) AND (NOT Displayed) THEN BEGIN
- ItemList^.Put (NewItem);
- Inc (ItemNum);
- END;
- END;
-
- PROCEDURE RadioButtons.Display;
- BEGIN
- IF NOT Displayed THEN BEGIN
- SAAScheduler.Display;
- RadioButPtr (ItemList^.GotoFirstData)^.Display;
- WHILE NOT (ItemList^.IsOnLast) DO
- RadioButPtr (ItemList^.GotoNextData)^.Display;
- END;
- END;
-
- PROCEDURE RadioButtons.DisplayHotKeys;
- VAR p : DListNodePtr;
- BEGIN
- IF (NOT HKDisplayed) AND (Displayed) THEN BEGIN
- p := ItemList^.GetActNode;
- SAAScheduler.DisplayHotKeys;
- RadioButPtr (ItemList^.GotoFirstData)^.DisplayHotKey;
- WHILE NOT (ItemList^.IsOnLast) DO
- RadioButPtr (ItemList^.GotoNextData)^.DisplayHotKey;
- ItemList^.SetActNode (p);
- END;
- END;
-
- PROCEDURE RadioButtons.CheckEvent (VAR Ev : EventObj);
- VAR i, Answer : WORD;
- SearchAct : BOOLEAN;
- BEGIN
- ReturnCode := SchEvNotMine;
- IF (NOT Displayed) THEN Exit;
- SAAScheduler.CheckEvent (Ev);
- SearchAct := FALSE;
- IF (ReturnCode=SchEvNotMine) THEN BEGIN
- IF (ActiveItem>0) THEN BEGIN
- WITH RadioButPtr (ItemList^.GetActData)^ DO BEGIN
- CheckEvent (Ev);
- Answer := GetReturnCode;
- END;
- IF Answer<>ItEvNotMine THEN
- CASE Answer OF
- ItEvAccepted : ReturnCode := SchEvAccepted;
- ItActNext : BEGIN
- RadioButPtr (ItemList^.
- GotoNextData)^.
- SetActive;
- Inc (ActiveItem);
- IF ActiveItem>ItemNum THEN
- ActiveItem := 1;
- ReturnCode := SchEvAccepted;
- END;
- ItActPrev : BEGIN
- RadioButPtr (ItemList^.
- GotoPrevData)^.
- SetActive;
- Dec (ActiveItem);
- IF ActiveItem<1 THEN
- ActiveItem := ItemNum;
- ReturnCode := SchEvAccepted;
- END;
- END
- ELSE
- SearchAct := TRUE;
- END;
-
- IF (ActiveItem=0) OR (SearchAct) THEN BEGIN
- i := 1; Answer := 0;
- WITH ItemList^ DO BEGIN
- RadioButPtr (GotoFirstData)^.CheckEvent (Ev);
- Answer := RadioButPtr (GetActData)^.GetReturnCode;
- WHILE (NOT (IsOnLast)) AND
- (Answer=ItEvNotMine) DO BEGIN
- RadioButPtr (GotoNextData)^.CheckEvent (Ev);
- Answer := RadioButPtr (GetActData)^.GetReturnCode;
- Inc (i);
- END;
- IF Answer=ItEvAccepted THEN BEGIN
- IF SearchAct THEN
- GetRadioButNr (ActiveItem)^.SetPassive;
- SetActNodeTo (i);
- ActiveItem := i;
- Self.ReturnCode := SchEvAccepted;
- {^^^ sonst wird der von ItemList gesetzt }
- RadioButPtr (GetActData)^.SetActive;
- SetActive;
- END ELSE
- SetActNodeTo (ActiveItem);
- END;
- END;
- END;
- END;
-
- PROCEDURE RadioButtons.SetActive;
- BEGIN
- IF Displayed THEN BEGIN
- SAAScheduler.SetActive;
- IF ActiveItem=0 THEN BEGIN
- RadioButPtr (ItemList^.GotoFirstData)^.SetActive;
- ActiveItem := 1;
- END ELSE
- RadioButPtr (ItemList^.GetActData)^.SetActive;
- END;
- END;
-
- PROCEDURE RadioButtons.SetPassive;
- BEGIN
- IF Active AND Displayed THEN
- SAAScheduler.SetPassive;
- END;
-
- PROCEDURE RadioButtons.SetXYRel (dx, dy : INTEGER);
- VAR p : DListNodePtr;
- BEGIN
- IF (Displayed) THEN BEGIN
- p := ItemList^.GetActNode;
- RadioButPtr (ItemList^.GotoFirstData)^.
- SetXYRel (dx, dy);
- WHILE NOT (ItemList^.IsOnLast) DO
- RadioButPtr (ItemList^.GotoNextData)^.
- SetXYRel (dx, dy);
- ItemList^.SetActNode (p);
- END;
- END;
-
- PROCEDURE RadioButtons.SaveConfiguration;
- BEGIN
- IF ActiveItem=0 THEN SaveActItem := 1
- ELSE SaveActItem := ActiveItem;
- END;
-
- FUNCTION RadioButtons.GetRadioButNr (n:WORD) : RadioButPtr;
- VAR i : WORD;
- BEGIN
- i := 1;
- GetRadioButNr := RadioButPtr (ItemList^.GotoFirstData);
- WHILE (i<ItemNum) AND (i<n) DO BEGIN
- GetRadioButNr := RadioButPtr (ItemList^.GotoNextData);
- Inc (i);
- END;
- END;
-
- FUNCTION RadioButtons.GetResult;
- BEGIN
- GetResult := GetActiveItem;
- END;
-
- DESTRUCTOR RadioButtons.Done;
- BEGIN
- SAAScheduler.Done;
- Dispose (ItemList, Done);
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von WinRadioButton *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR WinRadioButtons.Init
- (x1, y1, x2, y2 : BYTE;
- Title : STRING;
- NewVSM: WExtVSMPtr);
- BEGIN
- IF RadioButtons.Init THEN BEGIN
- Win := New (FrameWindowPtr, Init (NewVSM));
- FrCol := WinRFrCol;
- IF Win<>NIL THEN BEGIN
- Win^.SetTitles (Title, '');
- Win^.SetXY (x1, y1, x2, y2);
- Win^.SetShadow (FALSE);
- Win^.SetColors (FrCol, FrCol, 0, 0);
- END ELSE
- Fail;
- END ELSE
- Fail;
- END;
-
- PROCEDURE WinRadioButtons.Display;
- BEGIN
- Mouse^.Hide;
- Win^.Show;
- Mouse^.Show;
- IF Win^.IsOpened THEN
- RadioButtons.Display;
- END;
-
- PROCEDURE WinRadioButtons.SetXYRel (dx, dy : INTEGER);
- BEGIN
- IF (Displayed) THEN BEGIN
- WITH Win^ DO BEGIN
- Mouse^.Hide;
- Hide;
- SetXY (GetX1+dx, GetY1+dy,
- GetX2+dx, GetY2+dy);
- Show;
- Mouse^.Show;
- END;
- RadioButtons.SetXYRel (dx, dy);
- END;
- END;
-
- PROCEDURE WinRadioButtons.SetFrameColor (NC : BYTE);
- BEGIN
- IF NOT Displayed THEN BEGIN
- FrCol := NC;
- Win^.SetColors (FrCol, FrCol, 0, 0);
- END;
- END;
-
- FUNCTION WinRadioButtons.GetWinPtr : FrameWindowPtr;
- BEGIN
- GetWinPtr := Win;
- END;
-
- DESTRUCTOR WinRadioButtons.Done;
- BEGIN
- RadioButtons.Done;
- Dispose (Win, Done);
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von PushButton *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR PushButton.Init (PBPtr : PushButPtr);
- BEGIN
- IF PBPtr<>NIL THEN BEGIN
- SAAScheduler.Init;
- PushB := PBPtr; ItemNum := 1;
- END ELSE
- Fail;
- END;
-
- PROCEDURE PushButton.Display;
- BEGIN
- SAAScheduler.Display;
- PushB^.Display;
- END;
-
- PROCEDURE PushButton.DisplayHotKeys;
- BEGIN
- SAAScheduler.DisplayHotKeys;
- PushB^.DisplayHotKey;
- END;
-
- PROCEDURE PushButton.CheckEvent (VAR Ev : EventObj);
- VAR Answer : BYTE;
- BEGIN
- ReturnCode := SchEvNotMine;
- IF (NOT Displayed) THEN
- Exit;
- SAAScheduler.CheckEvent (Ev);
- IF ReturnCode=SchEvNotMine THEN BEGIN
- PushB^.CheckEvent (Ev);
- Answer := PushB^.GetReturnCode;
- IF (Answer=ItEvAccepted) THEN
- ReturnCode := SchEvAccepted;
- END;
- END;
-
- PROCEDURE PushButton.SetActive;
- BEGIN
- SAAScheduler.SetActive;
- PushB^.SetActive;
- END;
-
- PROCEDURE PushButton.SetPassive;
- BEGIN
- SAAScheduler.SetPassive;
- PushB^.SetPassive;
- END;
-
- PROCEDURE PushButton.SetXYRel (dx, dy : INTEGER);
- BEGIN
- PushB^.SetXYRel (dx, dy);
- END;
-
- PROCEDURE PushButton.SaveConfiguration;
- BEGIN
- PushB^.SaveConfiguration;
- END;
-
- PROCEDURE PushButton.RestoreConfiguration;
- BEGIN
- PushB^.RestoreConfiguration;
- END;
-
- FUNCTION PushButton.GetState : BOOLEAN;
- BEGIN
- GetState := PushB^.GetState;
- END;
-
- FUNCTION PushButton.GetResult : BOOLEAN;
- BEGIN
- GetResult := GetState;
- END;
-
- DESTRUCTOR PushButton.Done;
- BEGIN
- SAAScheduler.Done;
- Dispose (PushB, Done);
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von EndButton *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR EndButton.Init (QRC:BYTE; EndBPtr : EndButPtr);
- BEGIN
- IF EndBPtr<>NIL THEN BEGIN
- SAAScheduler.Init;
- EndB := EndBPtr; ItemNum := 1; QuitRC := QRC;
- END ELSE
- Fail;
- END;
-
- PROCEDURE EndButton.Display;
- BEGIN
- SAAScheduler.Display;
- EndB^.Display;
- END;
-
- PROCEDURE EndButton.DisplayHotKeys;
- BEGIN
- SAAScheduler.DisplayHotKeys;
- EndB^.DisplayHotKey;
- END;
-
-
- PROCEDURE EndButton.CheckEvent (VAR Ev : EventObj);
- VAR Answer : BYTE;
- BEGIN
- ReturnCode := SchEvNotMine;
- IF (NOT Displayed) THEN
- Exit;
- SAAScheduler.CheckEvent (Ev);
- IF ReturnCode=SchEvNotMine THEN BEGIN
- EndB^.CheckEvent (Ev);
- Answer := EndB^.GetReturnCode;
- IF (Answer=ItFinish) THEN
- ReturnCode := QuitRC
- ELSE
- IF Answer=ItEvAccepted THEN
- ReturnCode := SchEvAccepted;
- END;
- END;
-
- PROCEDURE EndButton.SetActive;
- BEGIN
- SAAScheduler.SetActive;
- EndB^.SetActive;
- END;
-
- PROCEDURE EndButton.SetPassive;
- BEGIN
- SAAScheduler.SetPassive;
- EndB^.SetPassive;
- END;
-
- PROCEDURE EndButton.SetXYRel (dx, dy : INTEGER);
- BEGIN
- EndB^.SetXYRel (dx, dy);
- END;
-
- DESTRUCTOR EndButton.Done;
- BEGIN
- SAAScheduler.Done;
- Dispose (EndB, Done);
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von InputField *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR InputField.Init (FPtr : StringFieldPtr);
- BEGIN
- IF (SAAScheduler.Init) AND (FPtr<>NIL) THEN BEGIN
- Field := FPtr;
- END ELSE
- Fail;
- END;
-
- PROCEDURE InputField.Display;
- BEGIN
- SAAScheduler.Display;
- Field^.Display;
- Mouse^.Hide;
- WITH Field^ DO BEGIN
- VSM^.WriteChr (GetFieldX-2, GetFieldY,
- GetCol, '[');
- VSM^.WriteChr (Succ (GetFieldX+GetFieldLen),
- GetFieldY,
- GetCol, ']');
- END;
- Mouse^.Show;
- END;
-
- PROCEDURE InputField.DisplayHotKeys;
- BEGIN
- SAAScheduler.DisplayHotKeys;
- Field^.DisplayHotKey;
- END;
-
- PROCEDURE InputField.CheckEvent (VAR Ev : EventObj);
- VAR Answer : BYTE;
- BEGIN
- SAAScheduler.CheckEvent (Ev);
- IF ReturnCode=SchEvNotMine THEN BEGIN
- Field^.CheckEvent (Ev);
- Answer := Field^.GetReturnCode;
- IF Answer=ItEvNotMine THEN
- SAAScheduler.CheckEvent (Ev);
- { es könnte sein, dass nach Field^.CheckEvent
- editiert worden ist, dann "Tab" betätigt wurde, und
- das kann ja noch von SAAScheduler ausgewertet
- werden. }
-
- IF Answer=ItEvAccepted THEN
- ReturnCode := SchEvAccepted;
- IF Answer=ItFinish THEN
- ReturnCode := SchFinish;
- END;
- END;
-
- PROCEDURE InputField.SetActive;
- BEGIN
- SAAScheduler.SetActive;
- Field^.SetActive;
- END;
-
- PROCEDURE InputField.SetPassive;
- BEGIN
- SAAScheduler.SetPassive;
- Field^.SetPassive;
- END;
-
- PROCEDURE InputField.SetXYRel (dx, dy : INTEGER);
- BEGIN
- Field^.SetXYRel (dx, dy);
- END;
-
- FUNCTION InputField.GetFPtr : StringFieldPtr;
- BEGIN
- GetFPtr := Field;
- END;
-
- DESTRUCTOR InputField.Done;
- BEGIN
- SAAScheduler.Done;
- Dispose (Field, Done);
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von WinInputField *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR WinInputField.Init (FPtr : StringFieldPtr;
- VSM : WExtVSMPtr);
- BEGIN
- IF (InputField.Init (FPtr)) AND (VSM<>NIL) THEN BEGIN
- Field^.SetName ('');
- Field^.SetXY (Field^.GetFieldX, Field^.GetFieldY);
- Win := New (SAAWindowPtr, Init (VSM));
- IF Win<>NIL THEN BEGIN
- WITH Field^ DO
- Win^.SetXY (GetFieldX-2, Pred (GetFieldY),
- GetFieldX+GetFieldLen+1,
- Succ (GetFieldY));
- Win^.SetTitles (Field^.GetName, '');
- Win^.SetShadow (FALSE);
- Win^.SetFrame (2);
- END ELSE
- Fail;
- END ELSE
- Fail;
- END;
-
- PROCEDURE WinInputField.Display;
- BEGIN
- IF NOT Displayed THEN
- Win^.Open;
- IF Win^.IsOpened THEN
- Field^.Display;
- END;
-
- PROCEDURE WinInputField.DisplayHotKeys;
- BEGIN
- { gibt's hier nicht mehr }
- END;
-
- PROCEDURE WinInputField.CheckEvent (VAR Ev : EventObj);
- VAR WinAnswer, OldX, OldY : BYTE;
- BEGIN
- InputField.CheckEvent (Ev);
- IF (ReturnCode=SchEvNotMine) THEN BEGIN
- HideCursor;
- 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;
- IF WinAnswer=ClosedWin THEN
- ReturnCode := SchCancel;
- ShowCursor;
- END;
- END;
-
- DESTRUCTOR WinInputField.Done;
- BEGIN
- InputField.Done;
- Dispose (Win, Done);
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von PickListSched *)
- (* ───────────────────────────────────────────────────── *)
- CONSTRUCTOR PickListSched.Init (PLPtr : PickListPtr);
- BEGIN
- IF (SAAScheduler.Init) AND (PLPtr<>NIL) THEN
- PickL := PLPtr
- ELSE
- Fail;
- END;
-
- PROCEDURE PickListSched.Display;
- BEGIN
- SAAScheduler.Display;
- PickL^.Display;
- END;
-
- PROCEDURE PickListSched.DisplayHotKeys;
- BEGIN
- SAAScheduler.Display;
- PickL^.DisplayHotKey;
- END;
-
- PROCEDURE PickListSched.Add (Item : StringPtr);
- BEGIN
- PickL^.Add (Item);
- ItemNum := PickL^.GetItemNum;
- END;
-
- PROCEDURE PickListSched.CheckEvent (VAR Ev : EventObj);
- VAR Answer : BYTE;
- BEGIN
- SAAScheduler.CheckEvent (Ev);
- IF ReturnCode=SchEvNotMine THEN BEGIN
- PickL^.CheckEvent (Ev);
- Answer := PickL^.GetReturnCode;
- IF Answer=ItSelected THEN
- ReturnCode := SchFinish;
- IF Answer=ItEvAccepted THEN
- ReturnCode := SchEvAccepted;
- END;
- END;
-
- PROCEDURE PickListSched.SetActive;
- BEGIN
- SAAScheduler.SetActive;
- PickL^.SetActive;
- END;
-
- PROCEDURE PickListSched.SetPassive;
- BEGIN
- SAAScheduler.SetPassive;
- PickL^.SetPassive;
- END;
-
- PROCEDURE PickListSched.SetXYRel (dx, dy : INTEGER);
- BEGIN
- PickL^.SetXYRel (dx, dy);
- END;
-
- PROCEDURE PickListSched.SaveConfiguration;
- BEGIN
- PickL^.SaveConfiguration;
- END;
-
- PROCEDURE PickListSched.RestoreConfiguration;
- BEGIN
- PickL^.RestoreConfiguration;
- END;
-
- PROCEDURE PickListSched.ClearList;
- BEGIN
- PickL^.ClearList;
- END;
-
- PROCEDURE PickListSched.MakeList;
- BEGIN
- END;
-
- FUNCTION PickListSched.GetResult : STRING;
- BEGIN
- GetResult := PickL^.GetResult;
- END;
-
- DESTRUCTOR PickListSched.Done;
- BEGIN
- SAAScheduler.Done;
- Dispose (PickL, Done);
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von FileList *)
- (* ───────────────────────────────────────────────────── *)
- PROCEDURE FileList.MakeList (Path, Mask : STRING;
- Attr : BYTE);
- VAR FileInfo : SearchRec;
- BEGIN
- ClearList;
- Dos.FindFirst (Path+'\'+Mask, Attr, FileInfo);
- WHILE Dos.DosError=0 DO BEGIN
- IF (FileInfo.Name<>'.') THEN
- IF FileInfo.Name='..' THEN
- Add (New (StringPtr,
- Init (' ..')))
- ELSE BEGIN
- Add (New (StringPtr,
- Init (FormatFileName
- (FileInfo.Name))));
- END;
- Dos.FindNext (FileInfo);
- END;
- END;
-
- FUNCTION FileList.FormatFileName (Name:STRING):STRING;
- VAR FDir : DirStr;
- FName: NameStr;
- FExt : ExtStr;
- BEGIN
- Dos.FSplit (Name, FDir, FName, FExt);
- WHILE Length (FName)<8 DO
- FName := FName+' ';
- Delete (FExt, 1, 1);
- IF FExt<>'' THEN
- FormatFileName := ' '+FName+' . '+FExt
- ELSE
- FormatFileName := ' '+FName+' '+FExt;
- END;
-
- (* ───────────────────────────────────────────────────── *)
- (* Implementation von DirList *)
- (* ───────────────────────────────────────────────────── *)
- PROCEDURE DirList.MakeList (Path : STRING);
- VAR FileInfo : SearchRec;
- BEGIN
- ClearList;
- Dos.FindFirst (Path+'\*.*', Directory, FileInfo);
- WHILE Dos.DosError=0 DO BEGIN
- IF (FileInfo.Attr AND Directory)>0 THEN
- IF (FileInfo.Name<>'.') THEN
- IF FileInfo.Name='..' THEN
- Add (New (StringPtr,
- Init (' ..')))
- ELSE BEGIN
- Add (New (StringPtr,
- Init (FormatFileName
- (FileInfo.Name))));
- END;
- Dos.FindNext (FileInfo);
- END;
- END;
-
- END.
- (* ----------------------------------------------------- *)
- (* Ende von DBXSCHED.PAS *)
- (* ----------------------------------------------------- *)