Use this, like I do:

In your Form handle function put

Char txtTime[timeStringLength];
Char finalTxtTime[timeStringLength+(5*sizeof(Char))];
DateTimeType theDate;

case nilEvent: // update the time
if (!gMenuOn) «------------ This is used to know if a Form Menu is shown...
           {
               TimSecondsToDateTime (TimGetSeconds(), &theDate);
TimeToAscii (theDate.hour, theDate.minute, tfColon24h, txtTime);
               StrPrintF(finalTxtTime,"%s h", txtTime);
SetFieldTextFromStr(MenuInicial_TimeField, finalTxtTime, true); «------------ This is one of my functions...
           }
           handled = true;
           break;

Now in the AppEventLoop put this...

Boolean gMenuOn; «---- I use this as global...

EvtGetEvent(&event,  SysTicksPerSecond());
// Supress drawing TimeField if another window has been opened over ours.
       if (event.eType == winExitEvent)
       {
if (event.data.winExit.exitWindow == (WinHandle)FrmGetFormPtr(LoginForm))
           {
               gMenuOn = true;
           }
        }
       // Resume drawing if our window has been entered
       else if (event.eType == winEnterEvent)
       {
if (event.data.winEnter.enterWindow == (WinHandle)FrmGetFormPtr(LoginForm) && event.data.winEnter.enterWindow == (WinHandle)FrmGetFirstForm ())
           {
               gMenuOn = false;
           }





Err SetFieldTextFromStr (UInt16 fieldID, char *s, Boolean redraw)
{
       FieldPtr field;
       MemHandle h;
       Err err;
       FormType * frmP;
       UInt16 obj;
frmP = FrmGetActiveForm();
       obj = FrmGetObjectIndex(frmP, fieldID);
       field = (FieldType *)FrmGetObjectPtr(frmP, obj);
h = FldGetTextHandle (field);
       if (h) {
               FldSetTextHandle (field, NULL);
               err = MemHandleResize(h, StrLen(s) + 1);
               if (err != errNone) {
                       FldSetTextHandle(field, h); // Restore handle
                       return err;
               }
       } else {
               h = MemHandleNew(StrLen(s) + 1);
               if (!h)
                       return memErrNotEnoughSpace;
       }
StrCopy((char *) MemHandleLock(h), s);
       MemHandleUnlock(h);
FldSetTextHandle(field, h);
       if (redraw)
               FldDrawField(field);
       return errNone;
}



I hope it will help!
André Augusto

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

Reply via email to