static Boolean AppHandleEvent(EventPtr eventP) { Boolean handled = false; FormType *frmP; if (eventP->eType == frmLoadEvent) { /* Initialize and activate the form resource. */ frmP = FrmInitForm(eventP->data.frmLoad.formID); FrmSetActiveForm(frmP); if (eventP->data.frmLoad.formID == MainForm) { dynInputOnMainFormLoad(frmP); FrmSetEventHandler(frmP, MainFormHandleEvent); } handled = true; } else if (eventP->eType == frmOpenEvent) { /* Load the form resource. */ frmP = FrmGetActiveForm(); FrmDrawForm(frmP); handled = true; } else if (eventP->eType == appStopEvent) { /* Unload the form resource. */ frmP = FrmGetActiveForm(); FrmEraseForm(frmP); FrmDeleteForm(frmP); handled = true; } return(handled); }
/*********************************************************************** * * FUNCTION: ThumbnailDetailViewUpdateDisplay * * DESCRIPTION: This routine update the display of the thumbnail details view * * PARAMETERS: updateCode - a code that indicated what changes have been * made to the view. * * RETURNED: Whether the event was handled, or not. * ***********************************************************************/ static Boolean ThumbnailDetailViewUpdateDisplay(UInt16 updateCode) { FormType* frm = FrmGetActiveForm(); Boolean handled = false; switch (updateCode) { case fUpdateDisplayOptsChanged: SetTopVisibleRecord(0); /* Fall through */ case fUpdateFontChanged: ThumbnailDetailViewLoadRecords(frm); handled = true; break; case fUpdateDeletedCurrent: p.dbI = noRecordSelected; /* fall through */ case fUpdateDeletedAny: SetTopVisibleRecord(0); ThumbnailDetailViewLoadRecords(frm); handled = true; break; case fUpdateReloadRecords: ThumbnailDetailViewLoadRecords(frm); handled = true; break; } /* Have a valid selected record (for 5-way navigation) */ p.dbI = d.top_visible_record; return handled; }
/* Get current selected note and fill out note properties elements. If selected == -1, clear and disable this fields. */ static void UpdateNoteProperties() { FormPtr frm = FrmGetActiveForm (); if (notelist.selected == -1) { FrmHideObject(frm, FrmGetObjectIndex(frm, ID_EditorDuration)); FrmHideObject(frm, FrmGetObjectIndex(frm, ID_EditorVelocity)); FrmHideObject(frm, FrmGetObjectIndex(frm, ID_EditorPause)); } else { NotePtr notes = MemHandleLock(notelist.bufH); NotePtr note = notes + notelist.selected; ErrFatalDisplayIf(notelist.selected > notelist.num, "Invalid note index!"); SetFieldTextFromNumber(ID_EditorDuration, note->dur); SetFieldTextFromNumber(ID_EditorVelocity, note->vel); SetFieldTextFromNumber(ID_EditorPause, note->pause); FrmShowObject(frm, FrmGetObjectIndex(frm, ID_EditorDuration)); FrmShowObject(frm, FrmGetObjectIndex(frm, ID_EditorVelocity)); FrmShowObject(frm, FrmGetObjectIndex(frm, ID_EditorPause)); MemPtrUnlock(notes); } }
static Boolean FormPenDownEvent(EventType * e) { FormPtr frm = FrmGetActiveForm (); UInt16 objIndex; RectangleType r; Boolean res = false; objIndex = FrmGetObjectIndex (frm, ID_EditorMidiKeysGadget); FrmGetObjectBounds (frm, objIndex, &r); if (RctPtInRectangle (e->screenX, e->screenY, &r)) { midikeys_tapped(&midikeys, e->screenX, e->screenY); res = true; } objIndex = FrmGetObjectIndex (frm, ID_EditorNoteListGadget); FrmGetObjectBounds (frm, objIndex, &r); if (RctPtInRectangle (e->screenX, e->screenY, &r)) { notelist_tapped(¬elist, e->screenX, e->screenY); res = true; } UpdateNoteProperties(); return res; }
static void NewGameGetPlayerName( UInt16 field, Int16 player) { FormPtr frm = FrmGetActiveForm(); Char *buff; if( tmppref[player].type == PlayerNone ) { return; } buff = FldGetTextPtr( FrmGetObjectPtr( frm, FrmGetObjectIndex( frm, fldNGname0+player ) ) ); if( tmppref[player].type == PlayerHuman ) { StrCopy( tmppref[player].hname, buff ); } if( tmppref[player].type == PlayerAI ) { StrCopy( tmppref[player].aname, buff ); } }
static void SetComputers( Short num ) { FormPtr frm; ControlPtr cPtr; Word oIdx; if( num > (MaxPlayers - 1) || num < 0 ) { ErrNonFatalDisplayIf( true, "SetComputers: Out of Bounds"); return; } if( stor.tmpcomputers == num ) { return; } frm = FrmGetActiveForm(); /* Unset the old one */ oIdx = FrmGetObjectIndex( frm, cbtnVal[stor.tmpcomputers] ); cPtr = FrmGetObjectPtr( frm, oIdx ); CtlSetValue( cPtr, false ); /* Set new one */ oIdx = FrmGetObjectIndex( frm, cbtnVal[num] ); cPtr = FrmGetObjectPtr( frm, oIdx ); CtlSetValue( cPtr, true ); stor.tmpcomputers = num; if( stor.tmpcomputers + stor.tmpplayers > MaxPlayers ) { SetPlayers( MaxPlayers - stor.tmpcomputers ); } return; }
void DrawTable(DmOpenRef db, Int16 category) { FormPtr form = FrmGetActiveForm(); if (FormIsNot(form, FormMain)) return; TablePtr table = (TablePtr) GetObjectPtr(form, SMSTable); if (table == NULL) return; if (category >= 0) g_SelectedCategory = category; for (int c = 0; c < TABLE_NUM_COLUMNS; ++c) { TblSetCustomDrawProcedure(table, c, PrivDrawCell); TblSetColumnUsable(table, c, true); TblSetColumnWidth(table, c, COLUMN_WIDTHS[c]); } for (int r = 0; r < TABLE_PAGE_SIZE; ++r) { UInt32 cursor = g_CurrentPage * TABLE_PAGE_SIZE + r; if (cursor >= GetSMSCount(db, g_SelectedCategory)) { TblSetRowUsable(table, r, false); } else { TblSetRowSelectable(table, r, true); TblSetRowUsable(table, r, true); for(int c = 0; c < TABLE_NUM_COLUMNS; c++ ) TblSetItemStyle(table, r, c, customTableItem); } } TblDrawTable(table); UpdateScrollbar(db); UpdateUnread(db); UpdatePos(db); }
Int DialogChooseTwo( CharPtr fText, CharPtr bOne, CharPtr bTwo ) { FormPtr prevForm, frm; Word hitButton; // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmChooseTwo ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Fill it... CtlSetLabel( GetObjectPtr(btnChooseTwo1), bOne ); CtlSetLabel( GetObjectPtr(btnChooseTwo2), bTwo ); SetFieldTextFromStr( fldChooseTwo, fText ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } if( hitButton == btnChooseTwo1 ) return 1; if( hitButton == btnChooseTwo2 ) return 2; return ( -1 ); }
Boolean FormGroupManagementHandleEvent(EventType* eventP) { Boolean handled = false; switch (eventP->eType) { case frmOpenEvent: FormPtr frmP = FrmGetActiveForm(); FrmDrawForm(frmP); ListAllGroups(); handled = true; break; case frmCloseEvent: ClearPhoneGroups(g_PhoneGroups); break; case ctlSelectEvent: switch(eventP->data.ctlSelect.controlID) { case ButtonOk: FrmGotoForm(FormMain); break; case ButtonNew: NewGroup(); break; case ButtonRemove: RemoveCurrentSelection(); break; case ButtonModify: EditCurrentSelection(); break; } break; } return handled; }
static Boolean DialogVariantsHandleEvent (EventPtr e) { Boolean handled = false; FormPtr frm; CALLBACK_PROLOGUE switch (e->eType) { case frmOpenEvent: frm = FrmGetActiveForm(); FrmDrawForm(frm); handled = true; break; case ctlSelectEvent: if( stor.currplayer >= 0 ) { /* The player *cannot* continue a game once they alter variants */ ResetCubes(); } switch(e->data.ctlSelect.controlID) { case check_Bump: ToggleCheck( check_Bump, flag_Bump ); if( (stor.flags & flag_Eclipse) && (stor.flags & flag_Bump ) ) { ToggleCheck( check_Eclipse, flag_Eclipse ); } break; case check_Eclipse: ToggleCheck( check_Eclipse, flag_Eclipse ); if( (stor.flags & flag_Eclipse) && (stor.flags & flag_Bump ) ) { ToggleCheck( check_Bump, flag_Bump ); } break; case check_Sampler: ToggleCheck( check_Sampler, flag_Sampler ); break; case check_nTW: ToggleCheck( check_nTW, flag_nTW ); break; case check_FullHouse: ToggleCheck(check_FullHouse, flag_FullHouse ); break; case check_Suspend: ToggleCheck(check_Suspend, flag_Suspend ); break; } break; default: break; } CALLBACK_EPILOGUE return handled; }
// Audio CD static Boolean AudioCDTabSave() { ControlType *cck3P; FieldType *fld2P, *fld3P; ListType *list1P, *list2P; UInt16 firstTrack; FormPtr frmP; frmP = FrmGetActiveForm(); cck3P = (ControlType *)GetObjectPtr(TabAudioCDMP3Checkbox); fld2P = (FieldType *)GetObjectPtr(TabAudioCDLengthSecsField); fld3P = (FieldType *)GetObjectPtr(TabAudioCDFirstTrackField); list1P = (ListType *)GetObjectPtr(TabAudioCDDriverList); list2P = (ListType *)GetObjectPtr(TabAudioCDFormatList); firstTrack = StrAToI(FldGetTextPtr(fld3P)); if (firstTrack < 1 || firstTrack > 999) { TabSetActive(frmP, myTabP, 2); FrmSetFocus(frmP, FrmGetObjectIndex(frmP, TabAudioCDFirstTrackField)); FrmCustomAlert(FrmErrorAlert, "Invalid track value (1...999)", 0, 0); return false; } gameInfoP->musicInfo.sound.CD = CtlGetValue(cck3P); gameInfoP->musicInfo.sound.drvCD = LstGetSelection(list1P); gameInfoP->musicInfo.sound.frtCD = LstGetSelection(list2P); gameInfoP->musicInfo.sound.defaultTrackLength = StrAToI(FldGetTextPtr(fld2P)); gameInfoP->musicInfo.sound.firstTrack = firstTrack; return true; }
static Boolean ResidentBrowseFormHandleEvent(EventType* event) { Boolean handled=false; FormType* form=FrmGetActiveForm(); AppContext* appContext=GetAppContext(); Assert(appContext); switch (event->eType) { case winEnterEvent: handled=ResidentBrowseFormWinEnter(appContext, form, event); break; case winDisplayChangedEvent: handled=ResidentBrowseFormDisplayChanged(appContext, form); break; case lstSelectEvent: handled=ResidentBrowseFormListItemSelected(appContext, form, event); break; case ctlSelectEvent: handled=ResidentBrowseFormControlSelected(appContext, form, event); break; case fldChangedEvent: handled=ResidentBrowseFormFieldChanged(appContext, form, event); break; case keyDownEvent: handled=ResidentBrowseFormKeyDown(appContext, form, event); break; } return handled; }
static void SelectTo() { FormPtr frmP = FrmGetActiveForm(); if (FormIsNot(frmP, FormReply)) return; SendPref pref; ReadSendPreference(pref); if (pref.useFingerAddress) { if (FasSearchAvailable()) { SelectUsingFingerAddr(); return; } } FieldPtr fieldTo = (FieldPtr) GetObjectPtr(frmP, FieldTo); FldSetSelection(fieldTo, 0, StrLen(FldGetTextPtr(fieldTo))); AddrLookupParamsType params; MemSet(¶ms, sizeof(AddrLookupParamsType), 0); params.formatStringP = "^mobile"; params.field1 = addrLookupSortField; params.field2 = addrLookupMobile; params.field2Optional = false; params.userShouldInteract = true; PhoneNumberLookupCustom (fieldTo, ¶ms, true); FrmSetFocus(frmP, FrmGetObjectIndex(frmP, FieldCompose)); }
static Err SaveMessageIn(DmOpenRef db, Int16 category) { FormPtr form = FrmGetActiveForm(); if (FormIsNot(form, FormReply)) return frmErrNotTheForm; FieldPtr fieldTo = (FieldPtr) GetObjectPtr(form, FieldTo); FieldPtr fieldCompose = (FieldPtr) GetObjectPtr(form, FieldCompose); char* pszTo = FldGetTextPtr(fieldTo); char* pszCompose = FldGetTextPtr(fieldCompose); if ((pszTo == NULL) || (StrLen(pszTo) == 0)) { ShowMsg("No phone number set."); return -1; } if ((pszCompose == NULL) || (StrLen(pszCompose) == 0)) { FrmCustomAlert(AlertCustom, "Alert", "No message composed.", ""); return -1; } UInt8 state = 0; if (category == CAT_OUTBOX) { SendPref spref; ReadSendPreference(spref); if (spref.requestReport) RequestReport(state); } NewRecordInCategory(db, pszTo, pszCompose, category, state); return errNone; }
void UpdateScrollbar(DmOpenRef db) { FormPtr form = FrmGetActiveForm(); if (FormIsNot(form, FormMain)) return; ScrollBarPtr scrollbar = (ScrollBarPtr) GetObjectPtr(form, SMSScroll); SclSetScrollBar(scrollbar, g_CurrentPage, 0, PrivPageCount(db), 1); }
static VoidPtr GetObjectPtr (Word objID) { FormPtr frm; frm = FrmGetActiveForm(); return (FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, objID))); }
static Boolean GraffitiFormHandleEvent(EventPtr event){ Boolean handled = false; switch (event->eType) { case frmOpenEvent: FrmDrawForm(FrmGetActiveForm()); handled = true; break; case keyDownEvent: if(event->data.keyDown.chr == sentence[offset]){ offset++; if(offset == StrLen(sentence)){ FrmGotoForm(WinForm); } } handled = true; break; case nilEvent: { if(offset < StrLen(sentence)){ updateSprite(&nextLetter); drawSprite(&nextLetter); } handled = true; break; } default: break; } return handled; }
static void SetPeople( Short num ) { Int x; Boolean found = false; FormPtr frm; ControlPtr cPtr; Word oIdx; frm = FrmGetActiveForm(); x = MaxPlayers - 1; while( ( x > ( MaxPlayers - (num + 1) ) ) && !found ) { oIdx = FrmGetObjectIndex( frm, pbtnVal[x--] ); cPtr = FrmGetObjectPtr( frm, oIdx ); if( CtlGetValue( cPtr ) ) { CtlSetValue( cPtr, false ); found = true; } } if ( found ) { stor.tmpcomputers = MaxPlayers - (num + 1); oIdx = FrmGetObjectIndex( frm, cbtnVal[stor.tmpcomputers] ); cPtr = FrmGetObjectPtr( frm, oIdx ); CtlSetValue( cPtr, true); } }
static void IconFormScrollLines(Int16 lines) { ScrollBarPtr barP; Int16 valueP, minP, maxP, pageSizeP; Int16 newValue; FormPtr frm = FrmGetActiveForm(); barP = GetObjectPtr(IconSelectScrollBar); SclGetScrollBar(barP, &valueP, &minP, &maxP, &pageSizeP); //scroll up if(lines < 0) { //we are at the start if(valueP == minP) return; newValue = valueP + lines; if(newValue < minP) newValue = minP; } else { if(valueP == maxP) return; newValue = valueP + lines; if(newValue > maxP) newValue = maxP; } SclSetScrollBar(barP, newValue, minP, maxP, pageSizeP); IconFormScroll(newValue, valueP); }
static Boolean prefs_save_checkboxes_1() { FormPtr frm; ControlPtr checkbox; Boolean val, dirty = false; frm = FrmGetActiveForm(); checkbox = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, check_prf_4)); my_prefs.sound = (CtlGetValue(checkbox) != 0); // Inverted background: checkbox = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, check_prf_13)); val = (CtlGetValue(checkbox) != 0); if (my_prefs.black_bg != val) dirty = true; my_prefs.black_bg = val; // Color: checkbox = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, check_prf_14)); val = (CtlGetValue(checkbox) != 0); if (my_prefs.color_on != val) dirty = true; my_prefs.color_on = val; return dirty; }
/* ** Go to the record specified gadgetID and open the specified ** "field" (the note dialog, the details dialog, ...) */ static void GotoRecordField(UInt16 gadgetID, UInt16 field) { FormType* frm = FrmGetActiveForm(); DynamicButtonType* btn = (DynamicButtonType*) FrmGetGadgetData(frm, FrmGetObjectIndex(frm, gadgetID)); p.dbI = btn->value; LoadRecordData(); switch (field) { case ffNote: DoNoteDialog(0, 0); break; case ffDetails: d.detailsWithSketch = false; FrmPopupForm(RecordDetailsForm); break; case ffAlarm: recordUnsetCountdown(); FrmGotoForm(TimeForm); break; default: /* ignore */ } }
/*********************************************************************** * * FUNCTION: SetTimeTriggers * * DESCRIPTION: This routine sets the text label of the start time and * end time triggers. * * PARAMETERS: startTime - pointer to TimeType * endTime - pointer to TimeType * startTimeText - buffer that holds start time string * emdTimeText - buffer that holds end time string * timeFormat - time format * untimed - true if there isn't a time. * * RETURNED: nothing * * REVISION HISTORY: * Name Date Description * ---- ---- ----------- * art 4/4/96 Initial Revision * ***********************************************************************/ static void SetTimeTriggers (TimeType startTime, TimeType endTime, Char * startTimeText, Char * endTimeText, TimeFormatType timeFormat, Boolean untimed) { FormType * frm; ControlPtr startTimeCtl, endTimeCtl; frm = FrmGetActiveForm (); startTimeCtl = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorStartTimeButton)); endTimeCtl = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorEndTimeButton)); if (! untimed) { TimeToAscii (startTime.hours, startTime.minutes, timeFormat, startTimeText); TimeToAscii (endTime.hours, endTime.minutes, timeFormat, endTimeText); } else { // copy two spaces into these fields instead of just a null // because controls with empty strings (or one space) cause old-style // graphic control behavior, which uses the wrong colors! StrCopy(startTimeText, " "); StrCopy(endTimeText, " "); } CtlSetLabel (startTimeCtl, startTimeText); CtlSetLabel(endTimeCtl, endTimeText); }
Boolean URLFormHandleEvent(EventType *eventP) { Boolean handled = false; FormType *frmP = FrmGetActiveForm(); switch (eventP->eType) { case menuEvent: handled = URLFormDoCommand(eventP->data.menu.itemID); break; case frmOpenEvent: FrmDrawForm(frmP); URLFormInit(frmP); handled = true; break; case frmUpdateEvent: break; case ctlSelectEvent: handled = URLFormDoCommand(eventP->data.ctlSelect.controlID); break; default: break; } return handled; }
/*********************************************************************** * * FUNCTION: ThumbnailViewUpdateDisplay * * DESCRIPTION: This routine update the display of the thumbnail view * * PARAMETERS: updateCode - a code that indicated what changes have been * made to the view. * * RETURNED: Whether the event was handled, or not. * ***********************************************************************/ static Boolean ThumbnailViewUpdateDisplay(UInt16 updateCode) { FormType* frm = FrmGetActiveForm(); Boolean handled = false; switch (updateCode) { case fUpdateDisplayOptsChanged: SetTopVisibleRecord(0); /* Fall through */ case fUpdateFontChanged: ThumbnailViewLoadRecords(frm); handled = true; break; case fUpdateDeletedCurrent: p.dbI = noRecordSelected; /* fall through */ case fUpdateDeletedAny: SetTopVisibleRecord(0); ThumbnailViewLoadRecords(frm); handled = true; break; } return handled; }
/* ** Handle Security command */ static void ThumbnailDoCmdSecurity(void) { FormType* frm = FrmGetActiveForm(); Boolean wasHiding = d.privateRecordStatus == hidePrivateRecords; UInt16 mode; d.privateRecordStatus = SecSelectViewStatus(); if (wasHiding ^ (d.privateRecordStatus == hidePrivateRecords)) { /* We have to close the database first */ if (DmCloseDatabase(d.dbR) != errNone) abort(); mode = dmModeReadWrite; if (d.privateRecordStatus != hidePrivateRecords) mode |= dmModeShowSecret; /* Re-open the database */ if ((d.dbR = DmOpenDatabaseByTypeCreator(DBType, AppType, mode)) == NULL) abort(); /* Update cached values */ d.records_in_cat = DmNumRecordsInCategory(d.dbR, p.category); if (d.privateRecordStatus == hidePrivateRecords) SetTopVisibleRecord(0); ThumbnailViewLoadRecords (frm); } }
/*********************************************************************** * * FUNCTION: ThumbnailViewSelectCategory * * DESCRIPTION: This routine handles selection, creation and deletion of * categories form the Details Dialog. * * PARAMETERS: nothing * * RETURNED: The index of the new category. * * The following global variables are modified: * p.category * d.show_all_categories * d.categoryName * ***********************************************************************/ static UInt16 ThumbnailViewSelectCategory(void) { FormPtr frm; UInt16 category; Boolean categoryEdited; /* Process the category popup list. */ category = p.category; frm = FrmGetActiveForm(); categoryEdited = CategorySelect(d.dbR, frm, CategoryPop, CategoryList, true, &category, d.categoryName, 1, categoryDefaultEditCategoryString); if (categoryEdited || (category != p.category)) { ChangeCategory(category); /* Disable 5-way navigation */ d.fiveWayNavigation = false; p.dbI = noRecordSelected; /* Display the new category. */ ThumbnailViewLoadRecords(frm); } return (category); }
void * GetObjectPtr(UInt16 objectID) { FormType * frmP; frmP = FrmGetActiveForm(); return FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, objectID)); }
Boolean CBiddingForm::OnOpen(EventPtr pEvent, Boolean& bHandled) { InitDisplay(); player_has_bid = false; FormPtr frmP = FrmGetActiveForm(); FrmDrawForm(frmP); // // if the user exited the app from the bidding form, we will // restart the bidding process // GameStatus tmp = gManager->Status(); if ( tmp == SetHandTrump || tmp == GetHandBids ) { gManager->Status(GetHandBids); gManager->NewTrick(false); } // // start bidding to the left of the dealer // gManager->tbl->current_bidder = gManager->getNextPlayerIter(gManager->tbl->dealer); EventType event; event.eType = nilEvent; EvtAddEventToQueue (&event); bHandled = false; return true; }
Boolean ExamDetailsFormHandleEvent(EventPtr event) { FormPtr frm=FrmGetActiveForm(); Boolean handled = false; if (event->eType == ctlSelectEvent) { // button handling switch (event->data.ctlSelect.controlID) { case BUTTON_exd_cancel: handled=true; ExamDetailsFormFree(); FrmReturnToForm(FORM_exams); FrmUpdateForm(FORM_exams, frmRedrawUpdateCode); break; case BUTTON_exd_ok: handled=true; if (ExamDetailsFormSave()) { ExamDetailsFormFree(); FrmReturnToForm(FORM_exams); FrmUpdateForm(FORM_exams, frmRedrawUpdateCode); } break; case SELECTOR_exd_date: handled=true; ExamDetailsGetDate(); break; case SELECTOR_exd_time: handled=true; EditTimeGetTime(GetObjectPtr(SELECTOR_exd_time), &gExamDetailsBegin, &gExamDetailsEnd, gExamDetailsTimeTrigger); break; default: break; } } else if (event->eType == menuOpenEvent) { return HandleMenuOpenEvent(event); } else if (event->eType == menuEvent) { // forwarding of menu events return HandleMenuEvent(event->data.menu.itemID); } else if (event->eType == frmOpenEvent) { // initializes and draws the form ExamDetailsFormInit(frm); FrmDrawForm (frm); handled = true; } else if (event->eType == frmUpdateEvent) { // redraws the form if needed FrmDrawForm (frm); handled = false; } else if (event->eType == frmCloseEvent) { // this is done if form is closed ExamDetailsFormFree(); } return (handled); }
Char * GetTextFromField ( UInt16 fieldID ) { FieldType *fldP; FormType * frmP; frmP = FrmGetActiveForm(); fldP = FrmGetObjectPtr (frmP, FrmGetObjectIndex ( frmP, fieldID )); /* Find field pointer */ return FldGetTextPtr (fldP); }