Hi,
I am currently building a project with a popup form that pops up-well-every
now and then. However, when I close it with FrmReturnToForm(Form that was
Below), I get a stack of Fatal Alerts in my Garnet 54. Debug simulator. Here
is the list of Errors I encounter:
memorymgr.c, Line:3752, Free ptr
After an ignore,. I get
form.c, Line:6197, Bad form
Here is an XML printout of the Form:
<FORM_RESOURCE RESOURCE_ID="1200" COMMENT="Led">
        <FORM_ID> 1200 </FORM_ID>
        <BOUNDS>
                <LEFT> 20 </LEFT>
                <TOP> 70 </TOP>
                <WIDTH> 120 </WIDTH>
                <HEIGHT> 68 </HEIGHT>
        </BOUNDS>
        <USABLE> TRUE </USABLE>
        <MODAL> TRUE </MODAL>
        <SAVE_BEHIND> TRUE </SAVE_BEHIND>
        <HELP_ID> 0 </HELP_ID>
        <MENU_ID> 0 </MENU_ID>
        <DEFAULT_BUTTON> 0 </DEFAULT_BUTTON>
        <TITLE_ICON> FALSE </TITLE_ICON>
        <TITLE_BAR_FOCUSABLE> FALSE </TITLE_BAR_FOCUSABLE>
        <FORM_OBJECTS>
                <FORM_TITLE>
                        <TEXT> "LED options" </TEXT>
                </FORM_TITLE>
                <FORM_CHECKBOX>
                        <ID> 1201 </ID>
                        <BOUNDS>
                                <LEFT> 13 </LEFT>
                                <TOP> 17 </TOP>
                                <WIDTH> 85 </WIDTH>
                                <HEIGHT> 12 </HEIGHT>
                        </BOUNDS>
                        <USABLE> TRUE </USABLE>
                        <ENABLED> TRUE </ENABLED>
                        <TEXT> "Permanently on" </TEXT>
                        <FONT_ID> STD_FONT </FONT_ID>
                        <GROUP_ID> 0 </GROUP_ID>
                        <SELECTED> FALSE </SELECTED>
                </FORM_CHECKBOX>
                <FORM_LABEL>
                        <ID> 1202 </ID>
                        <LOCATION>
                                <X> 7 </X>
                                <Y> 33 </Y>
                        </LOCATION>
                        <USABLE> TRUE </USABLE>
                        <FONT_ID> STD_FONT </FONT_ID>
                        <TEXT> "Cycle time" </TEXT>
                </FORM_LABEL>
                <FORM_FIELD>
                        <ID> 1203 </ID>
                        <BOUNDS>
                                <LEFT> 56 </LEFT>
                                <TOP> 30 </TOP>
                                <WIDTH> 40 </WIDTH>
                                <HEIGHT> 12 </HEIGHT>
                        </BOUNDS>
                        <USABLE> TRUE </USABLE>
                        <EDITABLE> TRUE </EDITABLE>
                        <SINGLE_LINE> TRUE </SINGLE_LINE>
                        <DYNAMIC_SIZE> FALSE </DYNAMIC_SIZE>
                        <UNDERLINE> GRAY_UNDERLINE </UNDERLINE>
                        <JUSTIFICATION> LEFT_ALIGN </JUSTIFICATION>
                        <AUTO_SHIFT> FALSE </AUTO_SHIFT>
                        <HAS_SCROLLBAR> FALSE </HAS_SCROLLBAR>
                        <NUMERIC> TRUE </NUMERIC>
                        <MAX_CHARS> 4 </MAX_CHARS>
                        <FONT_ID> STD_FONT </FONT_ID>
                        <MAX_VISIBLE_LINES> 0 </MAX_VISIBLE_LINES>
                </FORM_FIELD>
                <FORM_BUTTON>
                        <ID> 1206 </ID>
                        <BOUNDS>
                                <LEFT> 24 </LEFT>
                                <TOP> 53 </TOP>
                                <WIDTH> 17 </WIDTH>
                                <HEIGHT> 12 </HEIGHT>
                        </BOUNDS>
                        <USABLE> TRUE </USABLE>
                        <ENABLED> TRUE </ENABLED>
                        <TEXT> "OK" </TEXT>
                        <LEFT_ANCHOR> FALSE </LEFT_ANCHOR>
                        <FONT_ID> STD_FONT </FONT_ID>
                        <BUTTON_FRAME> STANDARD_BUTTON_FRAME </BUTTON_FRAME>
                </FORM_BUTTON>
                <FORM_BUTTON>
                        <ID> 1102 </ID>
                        <BOUNDS>
                                <LEFT> 61 </LEFT>
                                <TOP> 53 </TOP>
                                <WIDTH> 30 </WIDTH>
                                <HEIGHT> 12 </HEIGHT>
                        </BOUNDS>
                        <USABLE> TRUE </USABLE>
                        <ENABLED> TRUE </ENABLED>
                        <TEXT> "Cancel" </TEXT>
                        <LEFT_ANCHOR> FALSE </LEFT_ANCHOR>
                        <FONT_ID> STD_FONT </FONT_ID>
                        <BUTTON_FRAME> STANDARD_BUTTON_FRAME </BUTTON_FRAME>
                </FORM_BUTTON>
        </FORM_OBJECTS>
</FORM_RESOURCE>
 And here is the source of the event handler for the form:

static Boolean
LedFormHandleEvent(EventPtr pEvent)
{//OK
    Boolean handled = false;
    FormPtr pForm   = FrmGetActiveForm();

    switch (pEvent->eType)
    {
    case frmOpenEvent:    // Form's 1st event
        if(prefs.time!=0)
        {
                MemHandle h=MemHandleNew(8);
                void* p=MemHandleLock(h);
                StrIToA(p,prefs.time);
                FldSetTextHandle(getObjectPtr(pForm,FldTime),h);
                FldDrawField(getObjectPtr(pForm,FldTime));
        }
        else
        {
                CtlSetValue(getObjectPtr(pForm,ChkPermanent),true);
                FldSetUsable(getObjectPtr(pForm,FldTime),false);
                FrmHideObject(pForm,FrmGetObjectIndex(pForm,1202));
        }
        FrmDrawForm(pForm);
        handled = true;
    case ctlSelectEvent:

           switch(pEvent->data.ctlSelect.controlID)
           {
           case CmdOk:
           {//Required for the definition of memHandle h
                 MemHandle h=FldGetTextHandle(getObjectPtr(pForm,FldTime));
             if(h)
                 {
                void*p=MemHandleLock(h);
                prefs.time=StrAToI(p);
                MemHandleUnlock(h);
                MemHandleFree(h);
                 }
 
if(CtlGetValue(getObjectPtr(pForm,ChkPermanent)))prefs.time=0;
           }        
           case CmdCancel:
                FrmReturnToForm(MainForm);//Problem occurs here
           break;
           case ChkPermanent:
                if(CtlGetValue(getObjectPtr(pForm,ChkPermanent)))
                {

                FldSetUsable(getObjectPtr(pForm,FldTime),false);
                FrmHideObject(pForm,FrmGetObjectIndex(pForm,1202));     
                }
                else
                {
                FldSetUsable(getObjectPtr(pForm,FldTime),true);
                FrmShowObject(pForm,FrmGetObjectIndex(pForm,1202));  
                }
                FrmDrawForm(pForm);
           break;
           default:
           handled=false;
           }
           
    break;
    default:
    break;
    }
    return handled;
}

I already googled, but didn't find much.
Thanks in advance for help-the program always worked well in OnBoardC!
Best Regards
Tam Hanna


-- 
For information on using the Palm Developer Forums, or to unsubscribe, please 
see http://www.palmos.com/dev/support/forums/

Reply via email to