wat i m doing i send u the whole code and i call the function twice in the way
that the selected item text frm the list and store text first in the variable
item and the i display it on the button label. after that i free the item
variable.but it create some proble that why imake the item variabl as globle
and free it at the time of exit the application and it wrk fine.
As u say i also try to make call TodayAppList(0) when i exit the application
with applstop(); even it has the same problem. and even create 1 more free ptr .
#include <PalmOS.h>
#include "AppResources.h"
#include <PceNativeCall.h>
static char* item;
/******************************************************************************/
/*********************PreferenceFormhandleEvent********************************/
/******************************************************************************/
static Boolean AppPrefFormHandleEvent(EventType* pEvent)
{
Boolean handled = false;
FormType* frm;
//static UInt16 dbCount = 0;
//UInt16 counter;
//static char **ItemType;
if (pEvent->eType == ctlSelectEvent)
{
switch (pEvent->data.ctlSelect.controlID)
{
case AppPreferenceOkButton:
frm=FrmGetActiveForm();
TodayAppList(frm);
FrmGotoForm(PreferenceForm);
handled = true;
break;
default:
break;
}
}
switch (pEvent->eType) {
//case menuEvent:
//return MainFormDoCommand(pEvent->data.menu.itemID);
case frmOpenEvent:
frm = FrmGetActiveForm();
TodayAppList(frm);
FrmDrawForm(frm);
handled = true;
break;
/*case frmCloseEvent:
if(ItemType)
{
for(counter=0;counter<dbCount;counter++)
{
MemPtrFree((MemPtr) ItemType[counter]);
}
MemPtrFree((MemPtr) ItemType);
dbCount=0;
}
frm = FrmGetActiveForm();
FrmEraseForm (frm);
FrmDeleteForm (frm);
handled = true;
break;*/
default:
break;
}
return handled;
}
/******************************************************************************/
static Boolean AppPrefSelectFormHandleEvent(EventType* pEvent)
{
Boolean handled = false;
FormType* frm;
if (pEvent->eType == ctlSelectEvent)
{
switch (pEvent->data.ctlSelect.controlID)
{
case AppPreferenceOkButton1:
AppPrefButton=AppPreferenceOkButton1;
FrmGotoForm(AppPrefForm);
handled = true;
break;
case AppPreferenceOkButton2:
AppPrefButton=AppPreferenceOkButton2;
FrmGotoForm(AppPrefForm);
handled = true;
break;
case AppPreferenceOkButton3:
AppPrefButton=AppPreferenceOkButton3;
FrmGotoForm(AppPrefForm);
handled = true;
break;
case AppPreferenceOkButton4:
AppPrefButton=AppPreferenceOkButton4;
FrmGotoForm(AppPrefForm);
handled = true;
break;
case AppPreferenceOkButton5:
AppPrefButton=AppPreferenceOkButton5;
FrmGotoForm(AppPrefForm);
handled = true;
break;
case AppPreferenceOkButton0:
FrmGotoForm(MainForm);
handled = true;
break;
default:
break;
}
}
switch (pEvent->eType) {
//case menuEvent:
//return MainFormDoCommand(pEvent->data.menu.itemID);
case frmOpenEvent:
frm = FrmGetActiveForm();
appPreference(item,frm,AppPrefButton);
FrmDrawForm(frm);
handled = true;
break;
case frmCloseEvent:
frm = FrmGetActiveForm();
FrmEraseForm (frm);
FrmDeleteForm (frm);
handled = true;
break;
default:
break;
}
return handled;
}
/******************************************************************************/
static void TodayAppList(FormType* frm)
{
SysDBListItemType *dbListIDsP;
MemHandle dbListIDsH;
static UInt16 dbCount = 0;
UInt16 counter;
Boolean status;
ListType* lst;
static char **ItemType;
UInt16 ListItemNum;
// item = MemPtrNew(20);
//MemSet(item,20,'\0');
if(ItemType)
{
for(counter=0;counter<dbCount;counter++)
{
MemPtrFree(ItemType[counter]);
}
MemPtrFree(ItemType);
dbCount=0;
}
if(frm)
{
status = SysCreateDataBaseList(sysFileTApplication, 0,&dbCount,
&dbListIDsH,true);
ItemType = (Char**)MemPtrNew(dbCount * sizeof(Char*));
dbListIDsP = (SysDBListItemType*)MemHandleLock (dbListIDsH);
if (status == true && dbCount > 0)
{
for (counter = 0; counter < dbCount; counter++)
{
ItemType[counter] = (Char*)MemPtrNew(dmDBNameLength+1);
StrCopy(ItemType[counter], dbListIDsP[counter].name);
}
lst = (ListType*)FrmGetObjectPtr(frm,FrmGetObjectIndex(frm,
TodayPrefList));
LstSetListChoices (lst,ItemType,dbCount);
ListItemNum= LstGetSelection (lst);
item= LstGetSelectionText(lst,ListItemNum);
for (counter = 0; counter < dbCount; counter++)
{
if( StrCompare(dbListIDsP[counter].name,item)
== 0 )
CreatorId=dbListIDsP[counter].creator;
}
MemHandleUnlock(dbListIDsH);
MemPtrFree(dbListIDsP);
}
}
}
/******************************************************************************/
static void appPreference(char* item,FormType* form,UInt16 AppPrefButt)
{
CtlSetLabel(FrmGetObjectPtr(form,FrmGetObjectIndex(form,AppPrefButt)),item);
}
/******************************************************************************/
--
For information on using the PalmSource Developer Forums, or to unsubscribe,
please see http://www.palmos.com/dev/support/forums/