home *** CD-ROM | disk | FTP | other *** search
- UNIT KalWin;
- {$X+,F+,O+,D-,L-,R-,B-}
- INTERFACE
-
- USES Objects, Drivers, Views, KalDef, Dialogs;
-
- TYPE
-
- PDateArr = ^DateArr;
- DateArr = ARRAY[1..10,1..6] OF BYTE;
-
- { Stellt das Gitter dar und füllt es }
- PKalenderGitter = ^KalenderGitter;
- KalenderGitter = OBJECT(TView)
- Top,Top2, Mid, Bottom: TDrawBuffer;
- Kalender: PKalender;
- Month: PDateArr;
- t, m, j: INTEGER;
-
- { ALocation muß Koordinaten der linken oberen Ecke enthalten }
- { (relativ zu DeskTop^.Origin) }
- CONSTRUCTOR INIT(AKalender: PKalender; ALocation: TPoint);
-
- CONSTRUCTOR Load(VAR S: TStream);
-
- DESTRUCTOR DONE; VIRTUAL;
-
- PROCEDURE Store(VAR S: TStream); VIRTUAL;
-
- PROCEDURE Draw; VIRTUAL;
-
- PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
-
- { Ermittelt die Koordinaten des Tages tm im Gitter }
- PROCEDURE GetKoord(tm: INTEGER; VAR x,y: INTEGER);
-
- { Ermittelt Koordinaten im PDateArr Month^ und markeirt tt im Gitter }
- PROCEDURE MarkDay(tt: INTEGER; Color: WORD);
-
- { Wird immer aufgerufen, wenn sich das eingestellte Datum geändert hat }
- { Hier können dann geeignete Reaktionen programmiert werden }
- { Das auslösende Ereignis wird in Event übergeben }
- { Hier wird nur eine Message an ein evtl. vorhandenes Fenster, das den }
- { Abstand zweier Daten anzeigt, ausgesandt, wenn das Startdatum geän- }
- { dert wurde }
- PROCEDURE SpecialProc(Event: TEvent); VIRTUAL;
-
- PRIVATE
- PROCEDURE InitScreen;
- PROCEDURE InitMonth;
- END;
-
- { Stellt die Feiertage dar }
- PFtWin = ^FtWin;
- FtWin = OBJECT(TScroller)
- m,j: INTEGER;
- Kalender: PKalender;
- List: PUnsortedStringCollection;
- CONSTRUCTOR INIT(VAR Bounds: TRect; K: PKalender; Vsb,Hsb: PScrollBar);
- CONSTRUCTOR Load(VAR S: TStream);
- DESTRUCTOR DONE; VIRTUAL;
- PROCEDURE Store(VAR S: TStream); VIRTUAL;
- PROCEDURE Draw; VIRTUAL;
- PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
- END;
-
- { Implementiert das Bedienfeld, mit dem das Datum weitergeschaltet wird }
- PKalLabel = ^KalLabel;
- KalLabel = OBJECT(TStaticText)
- Kalender: PKalender;
- Link: PView; { Objekt, mit dem dieses Schaltfeld verbunden ist }
- t,m,j: INTEGER;
- CONSTRUCTOR INIT(VAR Bounds: TRect; AKalender: PKalender; ALink: PView);
- CONSTRUCTOR Load(VAR s: TStream);
- PROCEDURE Store(VAR S: TStream);
- FUNCTION Valid(Command: WORD): BOOLEAN; VIRTUAL;
- FUNCTION GetPalette: PPalette; VIRTUAL;
- PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
- END;
-
- { Öffnet ein Standard-Kalenderfenster mit Gitter, Bedienfeld und Anzeige }
- { der Feiertage }
- PStdKalWin = ^StdKalWin;
- StdKalWin = OBJECT(TWindow)
- CONSTRUCTOR INIT(VAR Bounds: TRect; AKalender: PKalender);
- FUNCTION GetPalette: PPalette; VIRTUAL;
- END;
-
- { Stellt Informationen (Nr. d. Woche etc.) dar }
- PKalInfoInterior = ^KalInfoInterior;
- KalInfoInterior = OBJECT(TView)
- Kalender: PKalender;
- ValidDate: BOOLEAN;
- CONSTRUCTOR INIT(VAR Bounds: TRect; AKalender: PKalender);
- CONSTRUCTOR Load(VAR S: TStream);
- PROCEDURE Store(VAR S: TStream); VIRTUAL;
- PROCEDURE Draw; VIRTUAL;
- PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
- END;
-
- { Nimmt KalInfoInterior auf }
- PKalInfoWin = ^KalInfoWin;
- KalInfoWin = OBJECT(TWindow)
- CONSTRUCTOR INIT(VAR Bounds: TRect; AKalender: PKalender);
- FUNCTION GetPalette: PPalette; VIRTUAL;
- END;
-
- { Fenster zur Berechnung des Abstands zweier Daten voneinander }
- PCalcKalWin = ^CalcKalWin;
- CalcKalWin = OBJECT(TWindow)
- Kalender: PKalender;
- CONSTRUCTOR INIT(AKalender: PKalender);
- CONSTRUCTOR Load(VAR S: TStream);
- PROCEDURE Store(VAR S: TStream); VIRTUAL;
- PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
- PROCEDURE CalcDateChanged;
- FUNCTION GetPalette: PPalette; VIRTUAL;
- END;
-
- { Stellt Text dar, der mit SetData/GetData geändert werden kann }
- PDynamicText = ^KDynamicText;
- KDynamicText = OBJECT(TStaticText)
- PROCEDURE SetData(VAR Rec); VIRTUAL;
- PROCEDURE GetData(VAR Rec); VIRTUAL;
- FUNCTION DataSize: WORD; VIRTUAL;
- END;
-
-
- { Öffnet Monatsübersicht auf dem Bildschirm }
- PROCEDURE ZeigeKalender;
-
- { Öffnet Kalender-Informationsfenster }
- PROCEDURE KalInfo;
-
- { Öffnet Fenster für Kalender-Arithmetik }
- PROCEDURE CalcKal;
-
- { Erfragt ein neues Datum unter Berücksichtigung des übergebenen Kalenders }
- PROCEDURE GetNewDate(K: PKalender);
-
- { Registriert die Kalender-View-Objekte zur Speicherung in einem Stream }
- PROCEDURE RegisterKalWinTypes;
-
- const
- { Farbpaletten der Kalenderfenster }
- CStdKalColor = #$17#$1F#$1A#$31#$31#$1E#$17#$00#$71#$1F#$1E#$31#$1A;
- CStdKalBW = #$07#$0F#$07#$70#$70#$07#$07#$00#$70#$07#$07#$70#$07;
- CStdKalMono = #$07#$0F#$07#$70#$70#$07#$07#$00#$70#$07#$07#$70#$07;
- CStdKal = #064#065#066#067#068#069#070#071#072#073#074#075#076;
- { 1 - 3: Rahmen/Gitter
- 4 - 5: Rollbalken
- 6 : Feiertage
- 7 : Monat/Jahr
- 8 : reserviert von Borland
- 9 : Schaltfeld
- 10 : Wochentage
- 11 : Ziffern
- 12 : Cursor
- 13 : Kennung }
-
- { 1 2 3 4 5 6 7 8 9 }
- CKalInfoColor= #$37#$3F#$3A#$13#$13#$3E#$3F#$00#$71;
- CKalInfoBW = #$07#$0F#$07#$70#$70#$07#$0F#$00#$70;
- CKalInfoMono = #$07#$0F#$07#$70#$70#$07#$0F#$00#$70;
- CKalInfo = #077#078#079#080#081#082#083#084#085;
- { 1 - 3: Rahmen
- 4 - 5: Rollbalken
- 6 - 7: Text
- 8: reserviert von Borland
- 9: Schaltfeld }
-
- CCalcKalColor= #$37#$3F#$3A#$00#$00#$21#$00#$00#$71;
- CCalcKalBW = #$07#$0F#$07#$00#$00#$07#$00#$00#$70;
- CCalcKalMono = #$07#$0F#$07#$00#$00#$07#$00#$00#$70;
- CCalcKal = #086#087#088#089#090#091#092#093#094#41#42#43#44#45#46;
- { 1 - 3: Rahmen
- 6: StaticText
- 9: Schaltfeld
- 10 - 15: TButton - Farben aus der Standard-Palette für Dialogfenster }
-
- { Registrierungsrecords für das Sichern der Oberfläche }
- RKalenderGitter: TStreamRec = (
- ObjType: 10001;
- VmtLink: Ofs(TypeOf(KalenderGitter)^);
- Load : @KalenderGitter.Load;
- Store : @KalenderGitter.Store);
-
- RFtWin : TStreamRec = (
- ObjType: 10002;
- VmtLink: Ofs(TypeOf(FtWin)^);
- Load : @FtWin.Load;
- Store : @FtWin.Store);
-
- RKalLabel : TStreamRec = (
- ObjType: 10003;
- VmtLink: Ofs(TypeOf(KalLabel)^);
- Load : @KalLabel.Load;
- Store : @KalLabel.Store);
-
- RStdKalWin : TStreamRec = (
- ObjType: 10004;
- VmtLink: Ofs(TypeOf(StdKalWin)^);
- Load : @StdKalWin.Load;
- Store : @StdKalWin.Store);
-
- RKalInfoInterior:TStreamRec = (
- ObjType: 10005;
- VmtLink: Ofs(TypeOf(KalInfoInterior)^);
- Load : @KalInfoInterior.Load;
- Store : @KalInfoInterior.Store);
-
- RKalInfoWin: TStreamRec = (
- ObjType: 10006;
- VmtLink: Ofs(TypeOf(KalInfoWin)^);
- Load : @KalInfoWin.Load;
- Store : @KalInfoWin.Store);
-
- RCalcKalWin: TStreamRec = (
- ObjType: 10007;
- VmtLink: Ofs(TypeOf(CalcKalWin)^);
- Load : @CalcKalWin.Load;
- Store : @CalcKalWin.Store);
-
- RDynamicText: TStreamRec = (
- ObjType: 10008;
- VmtLink: Ofs(TypeOf(KDynamicText)^);
- Load : @KDynamicText.Load;
- Store : @KDynamicText.Store);
-
-
- IMPLEMENTATION
-
- USES App, Memory, KalComs, KalList, MsgBox, KalDOS;
-