field
neoreb9-Feb-2007/21:18:41+1:00
bonjour,

Dans une view, je voudrais créer un field où le nombre maxi de caractères pouvant être saisis serait égal à 10.

Est-ce possible ?
guest210-Feb-2007/0:18:09+1:00
oui avec la SNCF c'est possible:


view layout [
	field 100 feel [
		engage: func [f a e] compose [
	     		(:engage) f a e
	     		clear at f/text 10

		]
	]
]


bon le mieux c'est quand même de faire un style avec une limite paramétrable.
mais le principe est là.
j'explique pas la subtilité du (:engage), d'autres le feront mieux que moi
neoreb10-Feb-2007/14:08:48+1:00
merci !

je vais essayer de comprendre comment ca marche
Goldevil10-Feb-2007/15:55:58+1:00
Voici un petit morceau de code de Shadwolf qui modifie le style standard pour qu'il supporte un paramètre supplémentaire

stylize/master [
	field: field with [
		words: append words reduce ['limit func [f l][f/limited: second l next l]] 
		limited: none 
	] 
    feel [
    	engage: func first :engage append second :engage [ 
			if all [face/text face/limited face/limited < length? face/text ] [
				remove next at face/text face/limited 
				system/view/caret: tail face/text 
				show face
			] 
		] 
	] 
]

		view layout [ 
		    across 
		    label "Normal Field:" right 120 f1: field 
		    return 
		    label "Limited Field:" right 120 f2: field limit 5 
		]

Goldevil10-Feb-2007/15:58:33+1:00
Attention! Il y a moyen de mettre plus de caractères dans la champs par un contrôle externe ou avec copy/paste.
guest210-Feb-2007/16:26:18+1:00
c'est parce que qu'il faut utiliser "clear" à la place du "remove".
neoreb10-Feb-2007/18:32:20+1:00
merci !

je vais essayer de comprendre comment ca marche
neoreb10-Feb-2007/19:51:51+1:00
bon j'ai beau lire les docs que je trouve sur engage, j'y comprends pas grand chose.
Pourrais-tu m'expliquer guest2 le (:engage) ?
J'ai l'impression que pour comprendre comment ca marche, il faut vraiment examiner les entrailles de view.
neoreb10-Feb-2007/22:40:09+1:00
bon je crois que le (:engage) n'est pas un appel recursif.
Ca appelle le engage generique d'un field et pas celui specifique qu'on a réécrit.

C'est ça ?
guest211-Feb-2007/1:41:34+1:00
vi vi c'est ça.
On redefinit la fonction engage qui contient déjà du code.
donc pour ne pas écraser ce code et continuer à l'exécuter, avant notre propre ajout, on fait ça.

hum, c'est clair ?
neoreb11-Feb-2007/10:14:29+1:00
oui je me penche maintenant sur la solution de goldevil

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2