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/

Reply via email to