Faire en sorte qu'une NSFormCell garde un caractère

FloFlo Membre
00:01 modifié dans API AppKit #1
Bonjour à  tous,

Je m'explique, je voudrais qu'une NSFormCell de mon NSForm garde toujours le caractère ^ en position 0 de sa stringValue. L'utilisateur ne doit pas pouvoir supprimer ce caractère et quoiqu'il tape, ce caractère doit toujours se trouver en début de chaà®ne.

Quelqu'un aurait-il une méthode simple pour faire cela ? J'ai trouvé des solutions mais ça me parait trop usine à  gaz...

Merci d'avance pour vos réponses !  :)

Réponses

  • AliGatorAliGator Membre, Modérateur
    00:01 modifié #2
    Moi je gèrerai plutôt ça au niveau de l'affichage.
    Avec un NSStringFormatter personnalisé qui va faire en sorte que ta chaà®ne soit toujours formattées avec un "^" au début ?

    Sinon dans NSTextField y'a des méthodes à  chaque fois que l'utilisateur tape une touche ou modifie le contenu du champ, nous permettant de valider ou non ce changement, et donc aussi de valider la valeur du champ et vérifier qu'il est conforme à  ce que l'on attend. Y'a peut-être des choses similaires dans NSFormCell ?
    D'autant que l'éditeur (rectangle de saisie avec le curseur qui s'affiche quand tu édites la valeur d'un champ) utilisé par les NSFormCell est peut-être (sans doute ?) le même que celui pour les NSTextFields ?
  • 00:01 modifié #3
    Un NSFormatter peut faire l'affaire effectivement.

    Sinon NSForm descend de NSControl donc :
    - (void)controlTextDidChange:(NSNotification *)aNotification
    


    This message is usually sent to a text field, a form field, or an NSMatrix object with editable cells. Use the key @NSFieldEditor to obtain the field editor from the userInfo dictionary of the notification object.


    T'aurais juste à  faire par exemple

    <br />- (void)controlTextDidChange:(NSNotification *)aNotification<br />{<br />&nbsp;  NSFormCell* cell = [[aNotification userInfo] objectForKey:@&quot;NSFieldEditor&quot;];<br /><br />&nbsp; if(![[cell stringValue] hasPrefix:@&quot;^&quot;])<br />&nbsp; &nbsp; &nbsp;[cell setStringValue:[@&quot;^&quot; stringByAppendingString:[cell stringValue]];<br />}<br />
    


    Après j'ai jamais vu les NSForm.. donc je sais pas si c'est un NSTextField ou un NSFormCell
  • FloFlo Membre
    00:01 modifié #4

    Avec un NSStringFormatter personnalisé qui va faire en sorte que ta chaà®ne soit toujours formattées avec un "^" au début ?


    Oui ça me parait une bonne solution, je ne connais pas bien cette classe mais c'est l'occasion d'apprendre !  :o


    Sinon NSForm descend de NSControl


    Oui, j'ai découvert ça entre temps, le problème c'est que les méthodes héritées (de NSControl) sont appellées pour toutes les NSFormCell (héritant de NSActionCell et donc de NSCell). Il faut donc tester à  chaque fois si la NSFieldEditor est bien la bonne NSFormCell (qui doit avoir un '^' au début).

    En fait ce que j'ai fait c'est que j'ai crée un NSTextField à  par pour ce cas particulier et puis j'ai mis un label devant avec comme étiquette '^' pour montrer à  l'utilisateur que quoiqu'il fasse, de toute façon ça chaà®ne est traitée avec un '^' devant. ça facilite le traitement derrière en plus (manipulation de chaà®nes).  :P

    Merci pour vos propositions en tous cas, je garde ça sous le coude, je suis sûr qu'à  un moment ou un autre j'en aurais besoin ! 


Connectez-vous ou Inscrivez-vous pour répondre.