Aide - Recherche - Membres - Calendrier
Version complète : initialisation d'un field
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
nsadon
A travers les differentes doc ke jai lu ainsi que les sources je suis arrivée a deux maniere d'initialiser un field que voici:

static void SetField(UInt16 formID, UInt16 fieldID, MemPtr str)
{
FormPtr frm;
FieldPtr fld;
UInt16 obj;
CharPtr p;
VoidHand h;

frm = FrmGetFormPtr(formID);
obj = FrmGetObjectIndex(frm, fieldID);
fld = (FieldPtr)FrmGetObjectPtr(frm, obj);
h = (VoidHand)FldGetTextHandle(fld);
if (h == NULL) {
h = MemHandleNew (FldGetMaxChars(fld)+1);
ErrFatalDisplayIf(!h, "No Memory");
}

p = (CharPtr)MemHandleLock(h);
StrCopy(p, str);
FldSetTextHandle(fld, (Handle)h);
MemHandleUnlock(h);

}

et

static void SetField(UInt16 formID, UInt16 fieldID, MemPtr str)
{
MemHandle h, oldHandle;
char *p;
FieldType* fldP;
FormType* frmP;

frmP = FrmGetFormPtr(formID);
h = MemHandleNew(50);
p = (char *) MemHandleLock(h);
StrCopy(p, str);
MemHandleResize(h, StrLen(p)+1);
MemHandleUnlock(h);
fldP = (FieldType *) FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, fieldID));
oldHandle = FldGetTextHandle(fldP);
FldSetTextHandle(fldP, h);
if (oldHandle)
MemHandleFree(oldHandle);
}


puis au moment ou je clike sur un bouton je lance ma fonction avec la ligne de code:

if (eventP->data.ctlEnter.controlID == BtTest)
SetField(MainForm, FormNameFld, "test");
handled = true;
break;
et cependant mon field est toujours vide et je ne comprend pas pourquoi, cela fait deja quelque jour que je planche dessus un petit coupde pouce ne serai pas de refus.
merci
Patrice
De mémoire, il faut que tu demandes le ré-affichage du champ après avoir modifié son handle, le système ne fait pas ça tout seul. FldRedrawField() ou quelque chose de ce style.
nsadon
merci, je venais juste de trouver, un ptit week end ca fait du bien. icon_biggrin.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.