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/