vid et css
xavier14-Oct-2006/13:30:42+2:00
mon probleme est le suivant: je dois obtenir une area qui s'efface quand on clique dessus. J'ai trouvé le moyen d'obternir ce résultat avec le style ci dessous. Le problème étant que le comportement se répercute sur tout les autres styles du type field. Si quelqu'un a une bonne idée.... merci d'avance.

mon-area-case-p-dent: area "" wrap with [
      flags: [area]
      mon-flag-1: false
      mon-flag-2: true
      feel/over: func [face act event ][
         either (act and mon-flag-1 and mon-flag-2)
            [
               face/text: copy ""
               face/data: copy ""
               mon-flag-2: false
               show face
            ]
            [
               mon-flag-1: true
               mon-flag-2: true
            ]
         if not act [
            mon-flag-1: false
            mon-flag-2: true
         ]
         
         
         
      ]
   ]
jipé14-Oct-2006/15:18:58+2:00
Essaye la forme suivante :

mon-area: area "" wrap with [
feel: make face/feel [
over: ma-fonction...
]
]
xavier15-Oct-2006/12:09:52+2:00
je l'ai fait et ca marche mais j'ai écrasé le comportement de base de mon area: on ne sais plus éditer du texte dessus. J'ai donc récupéré le code initial du feel de l'area et de le remettre dans le nouveau feel et il me dit qu'il ne reconnait pas la fonction edit-text. La solution serait de retaper tout le code mais je ne sais pas comment y accéder.
jipé15-Oct-2006/22:20:42+2:00
La forme "make face/feel [over:...]" te permet de ne modifier que le feel/over du seul objet qui t'intéresse, en l'occurence mon-area-case-p-dent, sans modifier le reste du comportement de base du style area. Tu ne devrais pas avoir à "te retaper tout le code".

Mais avec le seul bout de code que tu donnes, c'est difficile de se faire une idée...
Didec16-Oct-2006/9:54:58+2:00
Tant que tu ne modifi que le 'over, ça doit marcher.
Mais si tu veux modifier le 'engage et que tu en reprend le code original, il faut binder ce code 2 fois : une fois dans 'system/view et une deuxième fois dans 'ctx-text.

Soit quelquechose comme :
mon-area with [
  feel: make feel [
    engage: func [face action event] bind bind [
      ;*** ton code ici.
    ] in system/view 'self in ctx-text 'self
  ]
]
jipé16-Oct-2006/17:08:31+2:00
Ben voilà !
Fastoche...
xavier17-Oct-2006/10:15:45+2:00
grand merci a vous deux,

ton code fonctionne tres bien dideC mais j'aurais eu des difficultés a trouver la solution moi meme vue que je ne savais pas vraiment ce qui se passe dans system/view et que je ne connais pas ctx-text. J'ai appris quelque chose de tres intéressant. ))
Didec17-Oct-2006/10:53:43+2:00
Rebol/View n'est en quelque sorte qu'un programme créé avec le SDK et donc qui charge au lancement un script qui créé tout le system View. Il y a donc tout un tas d'objets qui sont créés.

Je t'invite à utiliser Anamonitor pour explorer sa structure et ces objets. Par exemple, dans 'system/words, tu trouvera tout un tas de 'ctx-quelquechose qui contiennent des choses intéressantes.

Dans ton cas, un 'area est un style qui permet de saisir du texte et il est donc lié à 'ctx-text qui contient tout le code de gestion requit.
Le 'feel par défaut d'un 'area est bindé au lancement dans ce contexte 'ctx-text et en utilise des mots ('edit-text en l'occurence). Si tu recréé une des fonctions du feel, il faut la rebindé dans ce contexte, ou utiliser pour chacun de ces mots le path d'accès complet (ex: 'edit-text devient 'ctx-text/edit-text).

Anamonitor et autre : http://www.rebol.it/~romano/
xavier24-Oct-2006/11:34:31+2:00
merci pour cet excellent conseil, je suis en train de le suivre. Je commence seulement a comprendre comment fonctionne l'interface graphique en rebol et c'est en fait tres tres souple puis qu'on a accès a tout.... mais faut mouiller sa chemise. Merci pour votre aide, mon deuxieme logiciel en rebol est presque fini et il sera beaucoup plus riche que le premier. Je le publierais bientot.

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2