Aide - Recherche - Membres - Calendrier
Version complète : Problème d'affichage d'un champs texte
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
naguttes
Bon,

Ca fait une heure que je cherche et je ne trouve pas ce qui ne va pas. Je veux afficher un champs sur un écran, la variable cDist est bien renseignée mais rien ne s'affiche. Quelqu'un peut donner un coup de main?

CITATION
field = FrmGetObjectPtr(form, FrmGetObjectIndex(form, fldKm));
FrmCustomAlert(custAlrtID, cDist, "", "");
FldSetTextPtr(field, cDist);


CITATION
FIELD ID fldKm AT (PREVRIGHT+5 PREVTOP 80 11) FONT 0 NONEDITABLE MAXCHARS 20
lu1u
Ta variable cDist ne serait pas locale, par hasard ?
Parce qye FldSetTextPrt NE COPIE PAS le texte dans le champs, il prend le pointeur... du coup, si ta variable est locale, elle disparait dès que tu sors de ta fonction

Dans ce cas, le code suivant devrait résoudre ton probleme:

void SetText( FieldType* pField, Char * pBuffer )
{
if ( ! pField ) return ;

// get the field's old text handle
MemHandle oldH = FldGetTextHandle(pField);

//Copy our string into a memhandle
int len = StrLen(pBuffer);
MemHandle mH = MemHandleNew(len+1);
Char *pMem = (Char*)MemHandleLock(mH);

StrCopy(pMem, pBuffer);

//The memhandle needs to be unlocked to work...
MemHandleUnlock(mH);

//To establish the field's link to the handle
FldSetTextHandle(pField,mH);

//To draw the field
FldDrawField(pField);

// get rid of old handle
if (oldH != NULL)
MemHandleFree (oldH);
}
naguttes
Merci lu1u, en fait je devait être fatigué hier soir car ce matin à l'aéroport en rallumant mon PC et en regardant le code j'ai tout de suite remarqué que j'avais oublié de réafficher le champs siffle.gif doh.gif
Patrice
En fait, c'est un FldRecalculateField() que tu devrais faire... anim_wink.gif
naguttes
Salut Patrice, je suis sur que tu es content que je me sois remis à la programmation anim_grin.gif

J'ai fait un "FrmShowObject", c'est plus performant le recalculate?
Patrice
C'est en tous cas ce qui est recommandé (en plus de redessiner, cette fonction recalcule les paramètres internes : position du curseur, découpage des lignes sur un champ multiligne, ...).
naguttes
CITATION(Patrice @ 20/06/2006 à 18:53 ) *
C'est en tous cas ce qui est recommandé (en plus de redessiner, cette fonction recalcule les paramètres internes : position du curseur, découpage des lignes sur un champ multiligne, ...).


Ok merci, dans ce cas précis c'est une zone non editable et monoligne, je n'ai utilisé le racalculate que pour mes champs qui sont sur plusieurs lignes.
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.