Tony Janke a �crit :

> I am using a field to report the position of a slider in my application.
>  The problem I am having is that the field doesn't seem to refresh
> itself to the new value.  Unless you HIGHLIGHT the field, then the new
> value will be displayed!  Also, not all of the old data is erased when
> the new value is shown.  I am showing a value ranging from 0 to 40.

Call FldDrawField after updating its content.


--
Luc Le Blanc


> Example:
>
> Cursor is moved to position 10, the field is highlighted, then the
> display changes from "00" to "10".  Next I move the cursor 1 position
> back (9), the display still says "10" until I highlight it, at which
> point it displays "90".  I even tried writing "  " (2 blanks) to the
> field before the new data.
>
> Here is my code...
>
> if(Refresh == true)
> {
>        WriteNumberToField(Vehicle.CH[ActiveChannel].VOLUMELEVEL,
> 1014);
> }
> switch (pEvent->eType) {
>         case ctlSelectEvent:
>                         switch (pEvent->data.ctlSelect.controlID)
>                 {
>
>                                   case 1015:
>                                                   ControlPtr =
> FrmGetObjectPtr(pForm, FrmGetObjectIndex(pForm, 1015)); // Get slider
> position
>
> Vehicle.CH[ActiveChannel].VOLUMELEVEL = CtlGetValue(ControlPtr);
>                                                   WriteTextToField("
> ", 1014);   //  MAKES NO DIFFERENCE!!!!
>
> WriteNumberToField(Vehicle.CH[ActiveChannel].VOLUMELEVEL, 1014);
>                                                    break;
>                                  }
> }
>
> The first time this form handler is called, Refresh = true so the field
> (1014) is refreshed.  WriteNumberToField converts the INT (1st param) to
> a string, then displays that string in the field (1014).  This function
> works fine and is shown below in case interested.  Each time the slider
> (1015) is moved, its new value is stored in
> Vehicle.CH[ActiveChannel].VOLUMELEVEL and should be displayed to field
> 1014.
>
> anyone had this happen to them before?
>
> thanks,
>
> ~Tony
>
> // WRITENUMBERTOFIELD FUNCTION
>
> static void WriteNumberToField(UInt8 data, UInt16 controlID)
> {
>         FormType*               pForm;
>         FieldType*              FieldPtr;
>         MemHandle               h,      oldHandle;
>         char                    *p;
>
>         pForm = FrmGetActiveForm();
>         h = MemHandleNew(50);           // allocate chunk of memory in
> heap
>         p = MemHandleLock(h);           // prevent the chunk from moving
> (lock) and obtain pointer to location
>         StrIToA(p, data);
>         MemHandleResize(h, StrLen(p)+1);
>         MemHandleUnlock(h);
>         FieldPtr = FrmGetObjectPtr(pForm, FrmGetObjectIndex(pForm,
> controlID));
>         oldHandle = FldGetTextHandle(FieldPtr);
>         FldSetTextHandle(FieldPtr, h);
>         if(oldHandle)
>                 MemHandleFree(oldHandle);
> }
>
> --
> For information on using the Palm Developer Forums, or to unsubscribe, please see 
> http://www.palmos.com/dev/support/forums/


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

Reply via email to