home *** CD-ROM | disk | FTP | other *** search
- PROGRAM KalDemo;
- {$X+}
- USES App, Objects, Views, Drivers, Menus, KalDef, KalList, KalComs, KalWin,
- Memory, MsgBox, Dialogs;
-
- TYPE
-
- KalDemoApp = OBJECT(TApplication)
- PROCEDURE InitMenuBar; VIRTUAL;
- PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
- FUNCTION GetPalette: PPalette; VIRTUAL;
- PROCEDURE Idle; VIRTUAL;
- PROCEDURE OutOfMemory; VIRTUAL;
- END;
-
- CONST CNewColor = CColor +CStdKalColor+CKalInfoColor+CCalcKalColor;
- CNewBW = CBlackWhite+CStdKalBW +CKalInfoBW +CCalcKalBW;
- CNewMono = CMonoChrome+CStdKalMono +CKalInfoMono +CCalcKalMono;
- PApp: ARRAY[apColor..apMonochrome] OF STRING[Length(CNewColor)] =
- (CNewColor,CNewBW,CNewMono);
- { 64 - 76: StdKalWin }
- { 77 - 85: KalInfoWin}
- { 86 - 94: CalcKalWin}
-
- PROCEDURE KalDemoApp.InitMenuBar;
- VAR R: TRect;
- BEGIN
- GetExtent(R);
- R.B.Y := Succ(R.A.Y);
- MenuBar := New(PMenuBar,INIT(R, NewMenu(
- NewSubMenu('~'#240'~', hcNoContext, NewMenu(
- NewItem('Ü~b~er KalDemo', '', kbNoKey, DcmUeber, hcNoContext,
- NIL)),
- NewSubMenu('~K~alender', hcNoContext, NewMenu(
- NewItem('~L~aden', '', kbNoKey, DcmLadeKalender, hcNoContext,
- NewItem('~E~ntfernen', '', kbNoKey, DcmEntferneKalender, hcNoContext,
- NewLine(
- NewItem('~A~nzeigen', '', kbNoKey, DcmZeigeKalender, hcNoContext,
- NewItem('~I~nformationen','',kbNoKey, DcmKalInfo, hcNoContext,
- NewItem('~B~erechnungen','', kbNoKey, DcmCalcKal, hcNoContext,
- NewLine(
- NewItem('~N~eues Datum','', kbNoKey, DcmEditKalDate, hcNoContext,
- NIL))))))))),
- NewSubMenu('~O~berfläche', hcNoContext, NewMenu(
- NewItem('~S~peichern','', kbNoKey, DcmSaveDeskTop, hcNoContext,
- NewItem('~L~aden','', kbNoKey, DcmRetrieveDeskTop, hcNoContext,
- NIL))),
- NIL))))))
- END;
-
- PROCEDURE KalDemoApp.HandleEvent(VAR Event: TEvent);
-
- PROCEDURE SaveDeskTop;
- VAR s: TDosStream;
-
- PROCEDURE WriteView(P: PView); FAR;
- BEGIN
- IF p <> DeskTop^.Last THEN s.Put(p)
- END;
-
- BEGIN
- s.INIT('KALDEMO.DSK',stCreate);
- IF s.ErrorInfo <> stOk THEN EXIT;
- KalenderListe^.Store(s);
- DeskTop^.ForEach(@WriteView);
- S.put(NIL);
- s.DONE
- END;
-
- PROCEDURE RetrieveDeskTop;
- VAR s: TDosStream;
- P: PView;
-
- PROCEDURE CloseView(P: PView); FAR;
- BEGIN
- Message(P, evCommand, cmClose, NIL)
- END;
-
- BEGIN
- s.INIT('KALDEMO.DSK',stOpenRead);
- IF s.ErrorInfo <> stOk THEN EXIT;
- IF KalenderListe <> NIL THEN Dispose(KalenderListe,DONE);
- KalenderListe := New(PKList,Load(S));
- IF DeskTop^.Valid(cmClose) THEN BEGIN
- DeskTop^.ForEach(@CloseView);
- REPEAT
- p := PView(S.Get);
- DeskTop^.insertBefore(ValidView(p), DeskTop^.Last)
- UNTIL p = NIL
- END;
- s.DONE;
- END;
-
- BEGIN { KalDemoApp.HandleEvent }
- TApplication.HandleEvent(Event);
- IF Event.What = evCommand THEN BEGIN
- CASE Event.Command OF
- DcmLadeKalender: LadeKalender;
- DcmEntferneKalender: EntferneKalender;
- DcmZeigeKalender: ZeigeKalender;
- DcmKalInfo: KalInfo;
- DcmCalcKal: CalcKal;
- DcmSaveDeskTop: SaveDeskTop;
- DcmRetrieveDeskTop: RetrieveDeskTop;
- ELSE EXIT
- END;
- ClearEvent(Event)
- END
- END;
-
- FUNCTION KalDemoApp.GetPalette: PPalette;
- BEGIN
- GetPalette := @PApp[AppPalette]
- END;
-
- PROCEDURE KalDemoApp.Idle;
- BEGIN
- TApplication.Idle;
- IF (DeskTop^.Current <> NIL) AND (TypeOf(DeskTop^.Current^) = TypeOf(StdKalWin))
- THEN EnableCommands(KalWinCommands) ELSE
- DisAbleCommands(KalWinCommands)
- END;
-
- PROCEDURE KalDemoApp.OutOfMemory;
- BEGIN
- MessageBox(^c'Der Hauptspeicher reicht für diese Operation nicht aus!',NIL,mfError+mfOkButton)
- END;
-
- PROCEDURE RegisterAllTypes;
- BEGIN
- RegisterType(RKalList);
- RegisterKalWinTypes;
- RegisterType(RScrollBar);
- RegisterType(RScroller);
- RegisterType(RStaticText);
- RegisterType(RFrame);
- RegisterType(RButton)
- END;
-
- VAR DemoApp: KalDemoApp;
- BEGIN
- DemoApp.INIT;
- KalenderListe := New(PKList,INIT);
- IF LowMemory THEN DemoApp.OutOfMemory ELSE BEGIN
- RegisterAllTypes;
- DemoApp.Run
- END;
- DemoApp.DONE
- END.
-