home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / pstoolbx / kalwin.int < prev    next >
Encoding:
Text File  |  1993-07-28  |  7.5 KB  |  234 lines

  1. UNIT KalWin;
  2. {$X+,F+,O+,D-,L-,R-,B-}
  3. INTERFACE
  4.  
  5. USES Objects, Drivers, Views, KalDef, Dialogs;
  6.  
  7. TYPE
  8.  
  9.   PDateArr = ^DateArr;
  10.   DateArr = ARRAY[1..10,1..6] OF BYTE;
  11.  
  12.   { Stellt das Gitter dar und füllt es                                     }
  13.   PKalenderGitter = ^KalenderGitter;
  14.   KalenderGitter = OBJECT(TView)
  15.     Top,Top2, Mid, Bottom: TDrawBuffer;
  16.     Kalender: PKalender;
  17.     Month: PDateArr;
  18.     t, m, j: INTEGER;
  19.  
  20.     { ALocation muß Koordinaten der linken oberen Ecke enthalten           }
  21.     { (relativ zu DeskTop^.Origin)                                         }
  22.     CONSTRUCTOR INIT(AKalender: PKalender; ALocation: TPoint);
  23.  
  24.     CONSTRUCTOR Load(VAR S: TStream);
  25.  
  26.     DESTRUCTOR DONE; VIRTUAL;
  27.  
  28.     PROCEDURE Store(VAR S: TStream); VIRTUAL;
  29.  
  30.     PROCEDURE Draw; VIRTUAL;
  31.  
  32.     PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
  33.  
  34.     { Ermittelt die Koordinaten des Tages tm im Gitter                     }
  35.     PROCEDURE GetKoord(tm: INTEGER; VAR x,y: INTEGER);
  36.  
  37.     { Ermittelt Koordinaten im PDateArr Month^ und markeirt tt im Gitter   }
  38.     PROCEDURE MarkDay(tt: INTEGER; Color: WORD);
  39.  
  40.     { Wird immer aufgerufen, wenn sich das eingestellte Datum geändert hat }
  41.     { Hier können dann geeignete Reaktionen programmiert werden            }
  42.     { Das auslösende Ereignis wird in Event übergeben                      }
  43.     { Hier wird nur eine Message an ein evtl. vorhandenes Fenster, das den }
  44.     { Abstand zweier Daten anzeigt, ausgesandt, wenn das Startdatum geän-  }
  45.     { dert wurde                                                           }
  46.     PROCEDURE SpecialProc(Event: TEvent); VIRTUAL;
  47.  
  48. PRIVATE
  49.     PROCEDURE InitScreen;
  50.     PROCEDURE InitMonth;
  51.   END;
  52.  
  53.   { Stellt die Feiertage dar }
  54.   PFtWin = ^FtWin;
  55.   FtWin = OBJECT(TScroller)
  56.     m,j: INTEGER;
  57.     Kalender: PKalender;
  58.     List: PUnsortedStringCollection;
  59.     CONSTRUCTOR INIT(VAR Bounds: TRect; K: PKalender; Vsb,Hsb: PScrollBar);
  60.     CONSTRUCTOR Load(VAR S: TStream);
  61.     DESTRUCTOR DONE; VIRTUAL;
  62.     PROCEDURE Store(VAR S: TStream); VIRTUAL;
  63.     PROCEDURE Draw; VIRTUAL;
  64.     PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
  65.   END;
  66.  
  67.   { Implementiert das Bedienfeld, mit dem das Datum weitergeschaltet wird }
  68.   PKalLabel = ^KalLabel;
  69.   KalLabel = OBJECT(TStaticText)
  70.     Kalender: PKalender;
  71.     Link: PView;    { Objekt, mit dem dieses Schaltfeld verbunden ist     }
  72.     t,m,j: INTEGER;
  73.     CONSTRUCTOR INIT(VAR Bounds: TRect; AKalender: PKalender; ALink: PView);
  74.     CONSTRUCTOR Load(VAR s: TStream);
  75.     PROCEDURE Store(VAR S: TStream);
  76.     FUNCTION Valid(Command: WORD): BOOLEAN; VIRTUAL;
  77.     FUNCTION GetPalette: PPalette; VIRTUAL;
  78.     PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
  79.   END;
  80.  
  81.   { Öffnet ein Standard-Kalenderfenster mit Gitter, Bedienfeld und Anzeige }
  82.   { der Feiertage                                                          }
  83.   PStdKalWin = ^StdKalWin;
  84.   StdKalWin = OBJECT(TWindow)
  85.     CONSTRUCTOR INIT(VAR Bounds: TRect; AKalender: PKalender);
  86.     FUNCTION GetPalette: PPalette; VIRTUAL;
  87.   END;
  88.  
  89.   { Stellt Informationen (Nr. d. Woche etc.) dar }
  90.   PKalInfoInterior = ^KalInfoInterior;
  91.   KalInfoInterior = OBJECT(TView)
  92.     Kalender: PKalender;
  93.     ValidDate: BOOLEAN;
  94.     CONSTRUCTOR INIT(VAR Bounds: TRect; AKalender: PKalender);
  95.     CONSTRUCTOR Load(VAR S: TStream);
  96.     PROCEDURE Store(VAR S: TStream); VIRTUAL;
  97.     PROCEDURE Draw; VIRTUAL;
  98.     PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
  99.   END;
  100.  
  101.   { Nimmt KalInfoInterior auf }
  102.   PKalInfoWin = ^KalInfoWin;
  103.   KalInfoWin = OBJECT(TWindow)
  104.     CONSTRUCTOR INIT(VAR Bounds: TRect; AKalender: PKalender);
  105.     FUNCTION GetPalette: PPalette; VIRTUAL;
  106.   END;
  107.  
  108.   { Fenster zur Berechnung des Abstands zweier Daten voneinander }
  109.   PCalcKalWin = ^CalcKalWin;
  110.   CalcKalWin = OBJECT(TWindow)
  111.     Kalender: PKalender;
  112.     CONSTRUCTOR INIT(AKalender: PKalender);
  113.     CONSTRUCTOR Load(VAR S: TStream);
  114.     PROCEDURE Store(VAR S: TStream); VIRTUAL;
  115.     PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
  116.     PROCEDURE CalcDateChanged;
  117.     FUNCTION GetPalette: PPalette; VIRTUAL;
  118.   END;
  119.  
  120.   { Stellt Text dar, der mit SetData/GetData geändert werden kann }
  121.   PDynamicText = ^KDynamicText;
  122.   KDynamicText = OBJECT(TStaticText)
  123.     PROCEDURE SetData(VAR Rec); VIRTUAL;
  124.     PROCEDURE GetData(VAR Rec); VIRTUAL;
  125.     FUNCTION DataSize: WORD;    VIRTUAL;
  126.   END;
  127.  
  128.  
  129. { Öffnet Monatsübersicht auf dem Bildschirm }
  130. PROCEDURE ZeigeKalender;
  131.  
  132. { Öffnet Kalender-Informationsfenster }
  133. PROCEDURE KalInfo;
  134.  
  135. { Öffnet Fenster für Kalender-Arithmetik }
  136. PROCEDURE CalcKal;
  137.  
  138. { Erfragt ein neues Datum unter Berücksichtigung des übergebenen Kalenders }
  139. PROCEDURE GetNewDate(K: PKalender);
  140.  
  141. { Registriert die Kalender-View-Objekte zur Speicherung in einem Stream    }
  142. PROCEDURE RegisterKalWinTypes;
  143.  
  144. const
  145. { Farbpaletten der Kalenderfenster }
  146.   CStdKalColor = #$17#$1F#$1A#$31#$31#$1E#$17#$00#$71#$1F#$1E#$31#$1A;
  147.   CStdKalBW    = #$07#$0F#$07#$70#$70#$07#$07#$00#$70#$07#$07#$70#$07;
  148.   CStdKalMono  = #$07#$0F#$07#$70#$70#$07#$07#$00#$70#$07#$07#$70#$07;
  149.   CStdKal      = #064#065#066#067#068#069#070#071#072#073#074#075#076;
  150. {  1 -  3: Rahmen/Gitter
  151.    4 -  5: Rollbalken
  152.    6     : Feiertage
  153.    7     : Monat/Jahr
  154.    8     : reserviert von Borland
  155.    9     : Schaltfeld
  156.    10    : Wochentage
  157.    11    : Ziffern
  158.    12    : Cursor
  159.    13    : Kennung }
  160.  
  161.                 {  1   2   3   4   5   6   7   8   9 }
  162.   CKalInfoColor= #$37#$3F#$3A#$13#$13#$3E#$3F#$00#$71;
  163.   CKalInfoBW   = #$07#$0F#$07#$70#$70#$07#$0F#$00#$70;
  164.   CKalInfoMono = #$07#$0F#$07#$70#$70#$07#$0F#$00#$70;
  165.   CKalInfo     = #077#078#079#080#081#082#083#084#085;
  166. {  1 - 3: Rahmen
  167.    4 - 5: Rollbalken
  168.    6 - 7: Text
  169.        8: reserviert von Borland
  170.        9: Schaltfeld }
  171.  
  172.   CCalcKalColor= #$37#$3F#$3A#$00#$00#$21#$00#$00#$71;
  173.   CCalcKalBW   = #$07#$0F#$07#$00#$00#$07#$00#$00#$70;
  174.   CCalcKalMono = #$07#$0F#$07#$00#$00#$07#$00#$00#$70;
  175.   CCalcKal     = #086#087#088#089#090#091#092#093#094#41#42#43#44#45#46;
  176. {  1 -  3: Rahmen
  177.         6: StaticText
  178.         9: Schaltfeld
  179.   10 - 15: TButton - Farben aus der Standard-Palette für Dialogfenster }
  180.  
  181. { Registrierungsrecords für das Sichern der Oberfläche }
  182.   RKalenderGitter: TStreamRec = (
  183.     ObjType: 10001;
  184.     VmtLink: Ofs(TypeOf(KalenderGitter)^);
  185.     Load   : @KalenderGitter.Load;
  186.     Store  : @KalenderGitter.Store);
  187.  
  188.   RFtWin         : TStreamRec = (
  189.     ObjType: 10002;
  190.     VmtLink: Ofs(TypeOf(FtWin)^);
  191.     Load   : @FtWin.Load;
  192.     Store  : @FtWin.Store);
  193.  
  194.   RKalLabel      : TStreamRec = (
  195.     ObjType: 10003;
  196.     VmtLink: Ofs(TypeOf(KalLabel)^);
  197.     Load   : @KalLabel.Load;
  198.     Store  : @KalLabel.Store);
  199.  
  200.   RStdKalWin     : TStreamRec = (
  201.     ObjType: 10004;
  202.     VmtLink: Ofs(TypeOf(StdKalWin)^);
  203.     Load   : @StdKalWin.Load;
  204.     Store  : @StdKalWin.Store);
  205.  
  206.   RKalInfoInterior:TStreamRec = (
  207.     ObjType: 10005;
  208.     VmtLink: Ofs(TypeOf(KalInfoInterior)^);
  209.     Load   : @KalInfoInterior.Load;
  210.     Store  : @KalInfoInterior.Store);
  211.  
  212.   RKalInfoWin:     TStreamRec = (
  213.     ObjType: 10006;
  214.     VmtLink: Ofs(TypeOf(KalInfoWin)^);
  215.     Load   : @KalInfoWin.Load;
  216.     Store  : @KalInfoWin.Store);
  217.  
  218.   RCalcKalWin:     TStreamRec = (
  219.     ObjType: 10007;
  220.     VmtLink: Ofs(TypeOf(CalcKalWin)^);
  221.     Load   : @CalcKalWin.Load;
  222.     Store  : @CalcKalWin.Store);
  223.  
  224.   RDynamicText:    TStreamRec = (
  225.     ObjType: 10008;
  226.     VmtLink: Ofs(TypeOf(KDynamicText)^);
  227.     Load   : @KDynamicText.Load;
  228.     Store  : @KDynamicText.Store);
  229.  
  230.  
  231. IMPLEMENTATION
  232.  
  233. USES App, Memory, KalComs, KalList, MsgBox, KalDOS;
  234.