home *** CD-ROM | disk | FTP | other *** search
- PROGRAM Rolodex;
-
- {$R Rolodex}
- {$D Rolodex}
-
- USES WinTypes, WinProcs, ODialogs, OWindows, WinDos, Strings,
- PXEngine, OStdDlgs, BWCC;
-
- CONST
- cm_OpenTable = 101;
- cm_CloseTable = 102;
- cm_DeleteTable = 103;
- cm_NewerIndizes = 104;
- cm_About = 105;
-
- id_Edit1 = 200;
- id_Check1 = 300;
- id_Stat1 = 400;
-
- id_SaveNew = 500;
- id_SaveUpdate = 501;
- id_ClearButton = 502;
- id_NextRec = 503;
- id_PrevRec = 504;
- id_FindRec = 505;
- id_LastRec = 506;
- id_FirstRec = 507;
- id_Delete = 508;
- id_Show = 509;
-
- TextLen = 50;
-
- TYPE
- tState = (On, Off);
- ControlText = ARRAY[0..TextLen - 1] OF CHAR;
- FieldText = ARRAY[0..20] OF CHAR;
-
- TransferRecType = RECORD
- Checks : ARRAY[1..6] OF WORD;
- StatFields: ARRAY[1..6] OF ControlText;
- EditFields: ARRAY[1..6] OF ControlText;
- END;
-
- tMyApp = OBJECT(tApplication)
- PROCEDURE InitMainWindow; VIRTUAL;
- END;
-
- pMyMainWin = ^tMyMainWin;
- tMyMainWin = OBJECT(tWindow)
- CONSTRUCTOR Init(aParent: pWindowsObject; aTitle: pChar);
- DESTRUCTOR Done; VIRTUAL;
- PROCEDURE GetWindowClass(VAR aWndClass: tWndClass); VIRTUAL;
- PROCEDURE SetupWindow; VIRTUAL;
- PROCEDURE Paint(PaintDC: hDC; VAR PaintInfo: tPaintStruct); VIRTUAL;
- PROCEDURE WMMinMaxInfo(VAR Msg: tMessage);
- VIRTUAL wm_First + wm_GetMinMaxInfo;
- PROCEDURE cmOpenTable(VAR Msg: tMessage); VIRTUAL cm_First + cm_OpenTable;
- PROCEDURE cmCloseTable(VAR Msg: tMessage);
- VIRTUAL cm_First + cm_CloseTable;
- PROCEDURE cmDeleteTable(VAR Msg: tMessage);
- VIRTUAL cm_First + cm_DeleteTable;
- PROCEDURE cmNewerIndis (VAR Msg: tMessage);
- VIRTUAL cm_First + cm_NewerIndizes;
- PROCEDURE cmAbout(VAR Msg: tMessage); VIRTUAL cm_First + cm_About;
- PROCEDURE cmSaveUpdate(VAR Msg: tMessage);
- VIRTUAL id_First + id_SaveUpdate;
- PROCEDURE cmSaveNew(VAR Msg: tMessage); VIRTUAL id_First + id_SaveNew;
- PROCEDURE cmClear(VAR Msg: tMessage); VIRTUAL id_First + id_ClearButton;
- PROCEDURE cmNext(VAR Msg: tMessage); VIRTUAL id_First + id_NextRec;
- PROCEDURE cmPrev(VAR Msg: tMessage); VIRTUAL id_First + id_PrevRec;
- PROCEDURE cmFind(VAR Msg: tMessage); VIRTUAL id_First + id_FindRec;
- PROCEDURE cmFirstRec(VAR Msg: tMessage); VIRTUAL id_First + id_FirstRec;
- PROCEDURE cmLastRec(VAR Msg: tMessage); VIRTUAL id_First + id_LastRec;
- PROCEDURE cmDelete(VAR Msg: tMessage); VIRTUAL id_First + id_Delete;
- PROCEDURE cmShow(VAR Msg: tMessage); VIRTUAL id_First + id_Show;
- END;
-
- pMyButton = ^tMyButton;
- tMyButton = OBJECT(tButton)
- FUNCTION GetClassName : pChar; VIRTUAL;
- END;
-
- pMyRadBut = ^tMyRadBut;
- tMyRadBut = OBJECT(tRadioButton)
- FUNCTION GetClassName : pChar; VIRTUAL;
- PROCEDURE bnClicked(VAR Msg: tMessage); VIRTUAL nf_First + bn_Clicked;
- END;
-
- CONST
- NFields = 6;
- FieldNames : ARRAY[1..NFields] OF FieldText = ('Nachname', 'Vorname',
- 'Stra▀e / Platz', 'Wohnort', 'Telefon', 'Datum des Eintrags');
- Fields: ARRAY[1..NFields] OF pChar =
- (FieldNames[1], FieldNames[2], FieldNames[3], FieldNames[4],
- FieldNames[5], FieldNames[6]);
- Types: ARRAY[1..NFields] OF pChar =
- ('A25', 'A25', 'A50', 'A50', 'A25', 'D');
-
- VAR
- MyApp : tMyApp;
- TblName : pChar;
- RecHandle1 : RecordHandle;
- TableHandle1 : TableHandle;
- TransRec : TransferRecType;
- InputError, NewRec : Bool;
- CurrentIndex : INTEGER;
-
- {***********************}
- {*** Hilfsfunktionen ***}
- {***********************}
-
- {* Der Fehlermelder *}
- FUNCTION PX(Error: INTEGER; S: STRING): INTEGER;
- BEGIN
- PX := PXSuccess;
- IF Error <> PXSuccess THEN
- BEGIN
- S:= S + #0;
- BWCCMessageBox(Application^.MainWindow^.hWindow, PXErrMsg(Error),
- @S[1], mb_IconExclamation);
- PX := Error;
- END;
- END;
-
- {* Setzt Buttons inaktiv (Disable) oder aktiv (Enabled) *}
- PROCEDURE ChangeButtons(State:tState);
- VAR Fenster : hWnd;
- I : INTEGER;
- BEGIN
- FOR I := id_SaveNew TO id_Show DO
- BEGIN
- Fenster := GetDlgItem(Application^.MainWindow^.hWindow,I);
- IF State = Off
- THEN SetWindowLong(Fenster,gwl_Style,
- GetWindowLong(Fenster,gwl_Style) OR ws_Disabled)
- ELSE SetWindowLong(Fenster,gwl_Style,
- GetWindowLong(Fenster,gwl_Style) XOR ws_Disabled);
- END;
- InvalidateRect(Application^.MainWindow^.hWindow,NIL,FALSE);
- END;
-
- {* Initialisiert die Engine und so ... *}
- PROCEDURE InitEngine;
- VAR
- NRecs: LongInt;
- HMyMenu : hMenu;
- BEGIN
- TblName := NIL;
- GetMem(TblName,128);
- PXSetDefaults(48, 10, 10, 32, 10, SortOrderInt);
- PX(PXWinInit('MyApp', pxExclusive), 'PXWinInit');
- HMyMenu := GetMenu(Application^.MainWindow^.hWindow);
- EnableMenuItem(HMyMenu, cm_CloseTable,
- mf_Disabled OR mf_ByCommand OR mf_Grayed);
- EnableMenuItem(HMyMenu, cm_DeleteTable,
- mf_Disabled OR mf_ByCommand OR mf_Grayed);
- EnableMenuItem(HMyMenu, cm_NewerIndizes,
- mf_Disabled OR mf_ByCommand OR mf_Grayed);
- CurrentIndex := 1;
- ChangeButtons(Off);
- SetFocus(Application^.MainWindow^.ChildWithId(id_Edit1)^.hWindow);
- END;
-
- {* Liest ein alphanumerisches Feld aus dem Transferbuffer *}
- PROCEDURE GetAlphaField(Ar: pChar; Fld: INTEGER);
- VAR
- S: ARRAY[0..50] OF CHAR;
- BEGIN
- IF (PX(PXGetAlpha(RecHandle1, Fld, 49, S), 'PXGetAlpha') = PXSuccess)
- THEN StrCopy(Ar, S);
- END;
-
- {* Schreibt ein alphanumerisches Feld in den Transferbuffer *}
- PROCEDURE PutAlphaField(Ar: pChar; Fld: INTEGER);
- BEGIN
- PX(PXPutAlpha(RecHandle1, Fld, Ar), 'PXPutAlpha');
- END;
-
- {* Liest das Datumsfeld Feld aus dem Transferbuffer *}
- PROCEDURE GetDateField(Ar: pChar; Fld: INTEGER);
- VAR
- Long: LongInt;
- MO, DA, YR: INTEGER;
- T : ARRAY[0..6] OF CHAR;
- BEGIN
- IF (PX(PXGetDate(RecHandle1, Fld, Long), 'PXGetDate') = PXSuccess) THEN
- BEGIN
- PX(PXDateDecode(Long, MO, DA, YR), 'PXDateDecode');
- Str(DA, T);
- StrCopy(Ar, T);
- StrCat(Ar,'.');
- Str(MO, T);
- StrCat(Ar, T);
- StrCat(Ar,'.');
- Str(YR, T);
- StrCat(Ar, T);
- END;
- END;
-
- {* Schreibt das Datumsfeld Feld in den Transferbuffer *}
- PROCEDURE PutDateField(Ar: pChar; Fld: INTEGER);
- VAR
- Code, Count1, Count2, MO, DA, YR: INTEGER;
- Long: LongInt;
- S: STRING[15];
- T: STRING[6];
- BEGIN
- S:= StrPas(Ar);
- IF Length(S) > 0 THEN
- BEGIN
- Count2:= 1;
- Count1:= 1;
- REPEAT
- T[Count1] := S[Count2];
- T[0]:= Chr(Count1);
- Inc(Count1);
- Inc(Count2);
- IF Count2 > Length(S)
- THEN InputError := TRUE;
- UNTIL (S[Count2] = '.') OR (Count2 > Length(S));
- Val(T, DA, Code);
- IF (Code <> 0) OR (DA > 31) OR (DA < 1)
- THEN InputError := TRUE;
- Inc(Count2);
- Count1:= 1;
- REPEAT
- T[Count1] := S[Count2];
- T[0]:= Chr(Count1);
- Inc(Count1);
- Inc(Count2);
- IF Count2 > Length(S)
- THEN InputError := TRUE;
- UNTIL (S[Count2] = '.') OR (Count2 > Length(S));
- Val(T, MO, Code);
- IF (Code <> 0) OR (MO > 12) OR (DA < 1)
- THEN InputError := TRUE;
- Inc(Count2);
- Count1:= 1;
- REPEAT
- T[Count1] := S[Count2];
- T[0]:= Chr(Count1);
- Inc(Count1);
- Inc(Count2);
- UNTIL Count2 > Length(S);
- Val(T, YR, Code);
- IF (Code <> 0) OR (YR > 9999) OR (YR < 0)
- THEN InputError := TRUE;
- END
- ELSE GetDate(WORD(YR),WORD(MO),WORD(DA),WORD(Code));
- IF NOT(InputError) THEN
- BEGIN
- PX(PXDateEncode(MO, DA, YR, Long), 'PXDateDecode');
- PX(PXPutDate(RecHandle1, Fld, Long), 'PXPutDate');
- END;
- END;
-
- {* ▄berprⁿft, welcher Radiobutton (= Index) angeklickt ist *}
- FUNCTION GetTblHandleChecked: INTEGER;
- VAR
- Count : INTEGER;
- Done : BOOLEAN;
- BEGIN
- Count := 0;
- Done := FALSE;
- Application^.MainWindow^.TransferData(tf_GetData);
- REPEAT
- Inc(Count);
- IF Count > NFields
- THEN Done := TRUE
- ELSE IF TransRec.Checks[Count] = 1
- THEN Done := TRUE;
- UNTIL Done;
- GetTblHandleChecked := Count;
- END;
-
- {* Leert alle Eingabefelder im Record *}
- PROCEDURE AssignDefaults;
- VAR
- Count : INTEGER;
- BEGIN
- FOR Count := 1 TO NFields DO
- BEGIN
- StrCopy(TransRec.StatFields[Count], FieldNames[Count]);
- TransRec.EditFields[Count][0] := #0;
- END;
- END;
-
- {* Liest alle Werte aus dem Tranferbuffer und stellt sie dar *}
- PROCEDURE ShowData;
- VAR
- PXErr, Count : INTEGER;
- NFlds : LongInt;
- BEGIN
- PX(PXRecGet(TableHandle1, RecHandle1), 'PXRecGet');
- FOR Count := 1 TO 5 DO
- GetAlphaField(TransRec.EditFields[Count], Count);
- GetDateField(TransRec.EditFields[6], 6);
- NewRec := FALSE;
- Application^.MainWindow^.TransferData(tf_SetData);
- END;
-
- {***************************************}
- {*** Methoden aufgrund eines Buttons ***}
- {***************************************}
-
- PROCEDURE tMyMainWin.cmSaveUpdate(VAR Msg: tMessage);
- VAR
- Count, INDEX : INTEGER;
- Changed : Bool;
- BEGIN
- Application^.MainWindow^.TransferData(tf_GetData);
- InputError := FALSE;
- FOR Count := 1 TO 5 DO
- PutAlphaField(TransRec.EditFields[Count], Count);
- PutDateField(TransRec.EditFields[6], 6);
- IF InputError THEN
- BEGIN
- BWCCMessageBox(Application^.MainWindow^.hWindow,
- 'Datensatz wurde nicht gespeichert',
- 'Datumsfeld ungⁿltig', mb_IconExclamation);
- PX(PXRecBufEmpty(RecHandle1),'PXRecBufEmpty');
- END
- ELSE BEGIN
- IF NOT(NewRec)
- THEN PX(PXRecUpdate(TableHandle1, RecHandle1), 'PXRecUpdate')
- ELSE PX(PXRecInsert(TableHandle1, RecHandle1), 'PXRecUpdate');
- ShowData;
- END;
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- PROCEDURE tMyMainWin.cmSaveNew(VAR Msg: tMessage);
- BEGIN
- NewRec := TRUE;
- cmSaveUpdate(Msg);
- NewRec := FALSE;
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- PROCEDURE tMyMainWin.cmClear(VAR Msg: tMessage);
- BEGIN
- AssignDefaults;
- NewRec := TRUE;
- Application^.MainWindow^.TransferData(tf_SetData);
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- PROCEDURE tMyMainWin.cmDelete(VAR Msg: tMessage);
- BEGIN
- IF NOT NewRec
- THEN IF (PX(PXRecDelete(TableHandle1), 'PXRecDelete') = PXSuccess)
- THEN ShowData;
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- PROCEDURE tMyMainWin.cmFind(VAR Msg: tMessage);
- VAR
- Code, PXErr, Count, INDEX: INTEGER;
- BEGIN
- Application^.MainWindow^.TransferData(tf_GetData);
- INDEX := GetTblHandleChecked;
- IF INDEX = 1 THEN
- BEGIN
- FOR Count := 1 TO 5
- DO PutAlphaField(TransRec.EditFields[Count], Count);
- PutDateField(TransRec.EditFields[6], 6);
- END
- ELSE IF INDEX <= 5
- THEN PutAlphaField(TransRec.EditFields[INDEX], INDEX)
- ELSE PutDateField(TransRec.EditFields[INDEX], INDEX);
- IF INDEX = 1
- THEN PXErr := PXSrchKey(TableHandle1, RecHandle1, 6, ClosestRecord)
- ELSE PXErr := PXSrchKey(TableHandle1, RecHandle1, INDEX, ClosestRecord);
- IF (PXErr = PXSuccess) OR (PXErr = PXERR_RecNotFound)
- THEN ShowData
- ELSE MessageBeep(0);
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- PROCEDURE tMyMainWin.cmShow(VAR Msg: tMessage);
- VAR
- INDEX : INTEGER;
- BEGIN
- ShowData;
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- {*** Recordsprungmethoden ***}
-
- PROCEDURE tMyMainWin.cmNext(VAR Msg: tMessage);
- BEGIN
- IF (PX(PXRecNext(TableHandle1), 'PXRecNext') = PXSuccess)
- THEN ShowData;
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- PROCEDURE tMyMainWin.cmPrev(VAR Msg: tMessage);
- BEGIN
- IF (PX(PXRecPrev(TableHandle1), 'PXRecPrev') = PXSuccess)
- THEN ShowData;
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- PROCEDURE tMyMainWin.cmLastRec(VAR Msg: tMessage);
- BEGIN
- IF (PX(PXRecLast(TableHandle1), 'PXRecLast') = PXSuccess)
- THEN ShowData;
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- PROCEDURE tMyMainWin.cmFirstRec(VAR Msg: tMessage);
- BEGIN
- IF (PX(PXRecFirst(TableHandle1), 'PXRecFirst') = PXSuccess)
- THEN ShowData;
- SetFocus(ChildWithId(id_Edit1)^.hWindow);
- END;
-
- {****************************************}
- {*** Methoden aufgrund von Menⁿanwahl ***}
- {****************************************}
-
- PROCEDURE tMyMainWin.cmOpenTable(VAR Msg: tMessage);
- CONST FldHandles : ARRAY[1..NFields] OF FieldHandle = (1,2,3,4,5,6);
- VAR
- PD : pDialog;
- Exist: Bool;
- PXErr, Count : INTEGER;
- FldHandle: FieldHandle;
- HMyMenu: hMenu;
- AFile : ARRAY[0..fsPathName] OF CHAR;
- Temp : pChar;
- NRecs : LongInt;
- BEGIN
- StrCopy(AFile, '*.DB');
- IF Application^.ExecDialog(New(pFileDialog,
- Init(@Self,'FileOpen',AFile))) <> id_OK
- THEN Exit;
- HMyMenu := GetMenu(Application^.MainWindow^.hWindow);
- IF GetMenuState(HMyMenu, cm_CloseTable, mf_ByCommand) = mf_Enabled
- THEN cmCloseTable(Msg);
- AFile[StrPos(AFile,'.') - AFile] := #0;
- StrCopy(TblName,AFile);
- PD := New(pDialog, Init(Application^.MainWindow, 'WaitDlg'));
- Application^.MakeWindow(PD);
- PX(PXTblExist(TblName, Exist), 'PXTblExist');
- IF NOT Exist THEN
- BEGIN
- PXErr:= PX(PXTblCreate(TblName, NFields, Fields, Types),'PXTblCreate');
- IF PXErr = PXSuccess THEN
- BEGIN
- PXKeyAdd(TblName, NFields, FldHandles, Primary);
- FOR Count := 2 TO NFields DO
- BEGIN
- FldHandle := Count;
- PXKeyAdd(TblName, 1, FldHandle, IncSecondary);
- END;
- BWCCMessageBox(Application^.MainWindow^.hWindow,
- 'Tabelle wurde erzeugt',
- 'Engine Nachricht', mb_IconInformation);
- END
- ELSE BEGIN
- BWCCMessageBox(hWindow,'Kann Tabelle nicht erzeugen !',
- 'Fehler', mb_IconStop);
- Exit;
- END;
- END;
- PD^.Destroy;
- PXErr := PX(PXTblOpen(TblName, TableHandle1, 0, TRUE), 'PXTblOpen');
- IF PXErr <> PXSuccess THEN
- BEGIN
- BWCCMessageBox(hWindow,'Kann Tabelle nicht ÷ffnen !',
- 'Fehler', mb_IconStop);
- Exit;
- END;
- PX(PXRecBufOpen(TableHandle1, RecHandle1), 'PXRecBufOpen');
- PX(PXTblNRecs(TableHandle1, NRecs),'');
- IF NRecs > 0
- THEN cmFirstRec(Msg);
- HMyMenu := GetMenu(Application^.MainWindow^.hWindow);
- EnableMenuItem(HMyMenu, cm_CloseTable, mf_Enabled OR mf_ByCommand);
- EnableMenuItem(HMyMenu, cm_DeleteTable, mf_Enabled OR mf_ByCommand);
- EnableMenuItem(HMyMenu, cm_NewerIndizes,mf_Enabled OR mf_ByCommand);
- ChangeButtons(On);
- END;
-
- PROCEDURE tMyMainWin.cmCloseTable(VAR Msg: tMessage);
- VAR
- Exist: Bool;
- HMyMenu: hMenu;
- BEGIN
- PX(PXTblExist(TblName, Exist), 'PXTblExist');
- IF Exist THEN
- BEGIN
- PX(PXSave, 'PXSave');
- SendMessage(Application^.MainWindow^.hWindow,
- wm_Command, id_ClearButton, 0);
- PX(PXTblClose(TableHandle1), 'PXTblClose');
- HMyMenu := GetMenu(pWindow(@Self)^.hWindow);
- EnableMenuItem(HMyMenu, cm_CloseTable,
- mf_Disabled OR mf_ByCommand OR mf_Grayed);
- EnableMenuItem(HMyMenu, cm_DeleteTable,
- mf_Disabled OR mf_ByCommand OR mf_Grayed);
- EnableMenuItem(HMyMenu, cm_NewerIndizes,
- mf_Disabled OR mf_ByCommand OR mf_Grayed);
- ChangeButtons(Off);
- END;
- END;
-
- PROCEDURE tMyMainWin.cmDeleteTable(VAR Msg: tMessage);
- VAR
- Exist: Bool;
- PXErr : INTEGER;
- HMyMenu: hMenu;
- BEGIN
- PX(PXTblExist(TblName, Exist), 'PXTblExist');
- IF Exist THEN
- BEGIN
- IF BWCCMessageBox(hWindow,'Soll Tabelle wirklich gel÷scht werden ?',
- 'Achtung',mb_YesNo OR mb_IconQuestion) = id_No
- THEN Exit;
- SendMessage(Application^.MainWindow^.hWindow,
- wm_Command, id_ClearButton, 0);
- PX(PXTblClose(TableHandle1), 'PXTblClose');
- PXErr := PX(PXTblDelete(TblName), 'PXTblDelete');
- IF PXErr = PXSuccess
- THEN BWCCMessageBox(Application^.MainWindow^.hWindow,
- 'Tabelle wurde gel÷scht',
- 'Engine Nachricht', mb_IconInformation);
- HMyMenu := GetMenu(pWindow(@Self)^.hWindow);
- EnableMenuItem(HMyMenu, cm_CloseTable,
- mf_Disabled OR mf_ByCommand OR mf_Grayed);
- EnableMenuItem(HMyMenu, cm_DeleteTable,
- mf_Disabled OR mf_ByCommand OR mf_Grayed);
- EnableMenuItem(HMyMenu, cm_NewerIndizes,
- mf_Disabled OR mf_ByCommand OR mf_Grayed);
- ChangeButtons(Off);
- END;
- END;
-
- PROCEDURE tMyMainWin.cmNewerIndis(VAR Msg: tMessage);
- CONST FldHandles : ARRAY[1..NFields] OF FieldHandle = (1,2,3,4,5,6);
- VAR
- FldHandle : FieldHandle;
- Count : INTEGER;
- PD : pDialog;
- BEGIN
- PD := New(pDialog, Init(Application^.MainWindow, 'WaitDlg'));
- Application^.MakeWindow(PD);
- PX(PXSave,'');
- PX(PXTblClose(TableHandle1), 'PXTableClose');
- PXKeyAdd(TblName, NFields, FldHandles, Primary);
- FOR Count := 2 TO NFields DO
- BEGIN
- FldHandle := Count;
- PXKeyAdd(TblName, 1, FldHandle, IncSecondary);
- END;
- PX(PXTblOpen(TblName, TableHandle1, 0, TRUE), 'PXTblOpen');
- PX(PXRecBufOpen(TableHandle1, RecHandle1), 'PXRecBufOpen');
- PD^.Destroy;
- END;
-
- PROCEDURE tMyMainWin.cmAbout(VAR Msg: tMessage);
- BEGIN
- Application^.ExecDialog(New(pDialog,
- Init(Application^.MainWindow, 'AboutDlg')));
- END;
-
- {********************************************}
- {*** Methoden von TMyButton und TMyRadBut ***}
- {********************************************}
-
- FUNCTION tMyButton.GetClassName : pChar;
- BEGIN
- GetClassName := 'Button';
- END;
-
- PROCEDURE tMyRadBut.bnClicked(VAR Msg: tMessage);
- VAR
- INDEX, PXErr, Count : INTEGER;
- PD : pDialog;
- BEGIN
- tRadioButton.bnClicked(Msg);
- INDEX := GetTblHandleChecked;
- IF INDEX <> CurrentIndex THEN
- BEGIN
- PD := New(pDialog, Init(Application^.MainWindow, 'WaitDlg'));
- Application^.MakeWindow(PD);
- Application^.MainWindow^.TransferData(tf_GetData);
- PX(PXTblClose(TableHandle1), 'PXTableClose');
- IF INDEX = 1
- THEN PX(PXTblOpen(TblName, TableHandle1, 0, TRUE), 'PXTblOpen')
- ELSE PX(PXTblOpen(TblName, TableHandle1, INDEX, TRUE), 'PXTblOpen');
- PX(PXRecBufOpen(TableHandle1, RecHandle1), 'PXRecBufOpen');
- FOR Count := 1 TO 4 DO
- PutAlphaField(TransRec.EditFields[Count], Count);
- PXErr := PXSrchKey(TableHandle1, RecHandle1, 4, SearchFirst);
- PD^.Destroy;
- IF PXErr = PXSuccess
- THEN SendMessage(Application^.MainWindow^.hWindow,
- wm_Command, id_Show, 0);
- CurrentIndex := INDEX;
- END;
- END;
-
- FUNCTION tMyRadBut.GetClassName : pChar;
- BEGIN
- GetClassName := 'Button';
- END;
-
- {*************************}
- {*** Fensterfunktionen ***}
- {*************************}
-
- CONSTRUCTOR tMyMainWin.Init(aParent: pWindowsObject; aTitle: pChar);
- VAR
- EC: pEdit;
- SC: pStatic;
- BC: pButton;
- CC: pMyRadBut;
- Count : INTEGER;
- BEGIN
- tWindow.Init(aParent, aTitle);
- Attr.Menu := LoadMenu(hInstance,'MainMenu');
- Attr.X := 120;
- Attr.Y := 35;
- Attr.W := 420;
- Attr.H := 325;
- Attr.Style := Attr.Style XOR ws_MaximizeBox;
- AssignDefaults;
- TransRec.Checks[1] := 1;
- FOR Count := 2 TO NFields DO
- TransRec.Checks[Count] := 0;
- TransferBuffer:= @TransRec;
- BC:= New(pMyButton, Init(@Self, id_SaveUpdate,
- 'Speichern/Ver&Σndert', 15, 178, 140, 25, FALSE));
- BC:= New(pMyButton, Init(@Self, id_SaveNew,
- 'Speichern/Ne&u',15, 206, 140, 25, FALSE));
- BC:= New(pMyButton, Init(@Self, id_ClearButton,
- '&Maske l÷schen', 175, 178, 110, 25, FALSE));
- BC:= New(pMyButton, Init(@Self, id_Delete,
- 'Satz L&÷schen', 175, 206, 110, 25, FALSE));
- BC:= New(pMyButton, Init(@Self, id_FindRec,
- '&Suchen', 305, 178, 80, 25, FALSE));
- BC:= New(pMyButton, Init(@Self, id_Show,
- '&Zeigen', 305, 206, 80, 25, FALSE));
- BC:= New(pMyButton, Init(@Self, id_NextRec,
- '&NΣchster', 15, 244, 80, 25, FALSE));
- BC:= New(pMyButton, Init(@Self, id_PrevRec,
- '&Vorheriger', 112, 244, 80, 25, FALSE));
- BC:= New(pMyButton, Init(@Self, id_LastRec,
- '&Letzter', 208, 244, 80, 25, FALSE));
- BC:= New(pMyButton, Init(@Self, id_FirstRec,
- '&Erster', 305, 244, 80, 25, FALSE));
- FOR Count := 0 TO NFields - 1 DO
- BEGIN
- CC:= New(pMyRadBut, Init(@Self, id_Check1 + Count, '', 380,
- 20 + (Count * 24), 15, 20, NIL));
- CC^.EnableTransfer;
- END;
- FOR Count := 0 TO NFields - 1 DO
- BEGIN
- SC:= New(pStatic, Init(@Self, id_Stat1 + Count, '', 20,
- 22 + (Count * 24), 130, 25, TextLen));
- SC^.EnableTransfer;
- END;
- FOR Count := 0 TO NFields - 1 DO
- BEGIN
- EC:= New(pEdit, Init(@Self, id_Edit1 + Count, '', 165,
- 20 + (Count * 24), 200, 25, TextLen, FALSE));
- EC^.EnableTransfer;
- END;
- EnableKBHandler;
- NewRec := FALSE;
- END;
-
- DESTRUCTOR tMyMainWin.Done;
- BEGIN
- PX(PXSave, 'PXSave');
- PX(PXExit, 'PXExit');
- FreeMem(TblName,128);
- tWindow.Done;
- END;
-
- PROCEDURE tMyMainWin.GetWindowClass(VAR aWndClass: tWndClass);
- BEGIN
- tWindow.GetWindowClass(aWndClass);
- aWndClass.hIcon := LoadIcon(hInstance, 'RoloIcon');
- END;
-
- PROCEDURE tMyMainWin.SetupWindow;
- BEGIN
- tWindow.SetupWindow;
- Application^.MainWindow^.TransferData(tf_SetData);
- InitEngine;
- END;
-
- PROCEDURE tMyMainWin.Paint(PaintDC: hDC; VAR PaintInfo: tPaintStruct);
- BEGIN
- MoveTo(PaintDC,10,238);
- LineTo(PaintDC,390,238);
- END;
-
- PROCEDURE tMyMainWin.WMMinMaxInfo(VAR Msg : tMessage);
- TYPE
- TMyPoints = ARRAY[0..4] OF tPoint;
- VAR
- MyPoints: ^TMyPoints;
- BEGIN
- MyPoints:= POINTER(Msg.lParam);
- MyPoints^[3].X:=420;
- MyPoints^[3].Y:=325;
- MyPoints^[4].X:=420;
- MyPoints^[4].Y:=325;
- END;
-
- {***********************************************}
- {*** Aplikationsfunktionen und Hauptprogramm ***}
- {***********************************************}
-
- PROCEDURE tMyApp.InitMainWindow;
- BEGIN
- MainWindow := New(pMyMainWin, Init(NIL, 'Rolodex'))
- END;
-
- BEGIN
- IF hPrevInst = 0 THEN
- BEGIN
- MyApp.Init('MyApp');
- MyApp.Run;
- MyApp.Done;
- END
- ELSE BWCCMessageBox(0, 'Programm kann nur einmal ausgefⁿhrt werden.',
- 'Rolodex Nachricht', mb_IconStop);
- END.
-