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