2009-02-18 7 views
0

Comment puis-je éviter CTRL + A de fonctionner avec TextField modifiable()TextField() Prévenir ctrl + a (tout sélectionner)

+0

Pouvez-vous ajouter un peu plus d'informations sur ce que vous essayez d'accomplir? Peut-être que TextField n'est pas le bon contrôle pour le travail? – StingyJack

+0

bien, son ctrl parfait Je veux juste supprimer CTRL + A. – Tom

+0

Sonne pour moi comme si tu essaies de faire quelque chose que tu ne devrais pas faire. Pourriez-vous expliquer la raison pour laquelle vous voulez faire cela? – troelskn

Répondre

1

L'exemple précédent ne fonctionne qu'avec les objets Flex Text et TextArea, cela fonctionne avec tous les objets flash.text. *.

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.core.UIComponent; 

      private var t:TextField; 
      private function init():void 
      { 
       t = new TextField(); 
       t.height = 80; 
       t.width = 100; 
       t.type = TextFieldType.INPUT; 
       t.multiline = true; 
       var c:UIComponent = new UIComponent(); 
       c.addChild(t); 
       foo.addChild(c); 
       addEventListener(KeyboardEvent.KEY_UP,   edit); 
       addEventListener(KeyboardEvent.KEY_DOWN,  edit); 
      } 

      private function edit(event:KeyboardEvent):void 
      { 
       if(event.type == KeyboardEvent.KEY_DOWN && event.ctrlKey) 
       { 
        t.type = TextFieldType.DYNAMIC; // Dynamic texts cannot be edited. You might be able to remove this line. 
        t.selectable = false; // If selectable is false, then Ctrl-a won't do anything. 
       } 
       else 
       { 
        t.type = TextFieldType.INPUT; 
        t.selectable = true; 
       } 
      } 
     ]]> 
    </mx:Script> 
    <mx:Canvas id="foo" height="90" width="110" backgroundColor="#FFFFFF" /> 
</mx:Application> 
0

Non testé, mais vous pourriez peut-être prendre le selectAll event sur le TextField et l'empêcher de bouillir, ou effacer la sélection (pas sûr quand l'événement est déclenché).

+0

ce n'est pas pour FLEX3, c'est dans FLASH PLAYER 10 – Tom

+0

Désolé, j'ai supposé de la balise dans votre question que vous utilisiez Flex. Je n'ai pas d'autres idées qui n'ont pas déjà été suggérées. J'espère que vous trouverez une réponse. – igkuk7

+0

J'essaie d'être plus précis maintenant: ma question est pour FLEX; mais l'événement selectAll que vous avez mentionné ne fonctionne pas avec FLEX. Flex utilise Flash 9, mais l'événement SelectAll n'est disponible que dans le flash 10. – Tom

0

Utilisez la fonction setFocus jumelé avec un écouteur KeyboardEvent:

<xml version="1.0"?> 
<!-- menus/SimpleMenuControl.mxml --> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="800" initialize="init()" > 
    <mx:TextInput id="nom"/> 
    <mx:Script> 
     <![CDATA[ 
      private function init():void 
      { 
       addEventListener(KeyboardEvent.KEY_UP,  edit); 
       addEventListener(KeyboardEvent.KEY_DOWN, edit); 
      } 

      private function edit(event:KeyboardEvent):void 
      { 
       if(event.type == KeyboardEvent.KEY_DOWN && event.ctrlKey) setFocus(); 
       else nom.setFocus(); 
       nom.selectionEndIndex = nom.selectionBeginIndex = nom.text.length; 
      } 
     ]]> 
    </mx:Script> 

</mx:Application> 

Le setFocus signifie que l'objet texte ne sera plus écouter les événements de clavier.

Je ne recommanderais pas d'utiliser la propriété enabled, car elle grise la zone de texte.

+0

setFocus() donne: 1180: Appel à une méthode éventuellement non définie – Tom

+0

if (evt.ctrlKey) stage.focus = this; ne fait rien pour ctrl + – Tom

+0

Désolé. Pour une raison quelconque, seulement la moitié du code est apparu ci-dessus. Je l'ai réparé maintenant. Si vous travaillez dans Flex 3, alors setFocus() fonctionnera sur tout UIComponent, mais il existe une version modifiée ci-dessous qui fonctionnera sur un flash.text.TextField normal. – cwallenpoole

Questions connexes