Je sais comment faire glisser de la liste et déposer dans le contrôle d'entrée de texte. Mais je ne sais pas comment insérer le texte dans textinput sous la position du curseur. Par exemple, j'ai le texte qwerty
dans textinput. Et j'ai besoin de laisser tomber le mot asdf
dans le textinput. En conséquence, je veux obtenir le texte qweasdfrty
ou qasdfwerty
, ou tout ce que je veux en fonction de la position du curseur.Comment puis-je supprimer le texte de la liste à la position d'entrée de texte spécifique (sous le curseur)?
Voici le code simplifié de ce que je l'ai déjà:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
layout="absolute"
minWidth="955"
minHeight="600">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private function init():void
{
horList.dataProvider=new ArrayCollection(["Reading", "Television", "Movies"]);
}
import mx.managers.DragManager;
import mx.core.DragSource;
import mx.events.DragEvent;
import flash.events.MouseEvent;
private function dragEnterHandler(event:DragEvent):void {
if (event.dragSource.hasFormat("items"))
DragManager.acceptDragDrop(TextInput(event.currentTarget));
}
private function dragOverHandler(event:DragEvent):void
{
if (event.dragSource.hasFormat("items"))
DragManager.showFeedback(DragManager.COPY);
}
private function dragDropHandler(event:DragEvent):void {
if (event.dragSource.hasFormat("items"))
{
var draggedText:Array = event.dragSource.dataForFormat("items") as Array;
var textInput : TextInput = TextInput(event.currentTarget);
// here i want to insert the text from (draggedText[0] as String) into textInput
}
}
]]>
</fx:Script>
<mx:HorizontalList id="horList"
x="10"
y="10"
width="625"
dragEnabled="true"
creationComplete="init()">
</mx:HorizontalList>
<mx:TextInput id="destTextInput"
x="100"
y="117"
dragEnter="dragEnterHandler(event);"
dragOver="dragOverHandler(event);"
dragDrop="dragDropHandler(event);"/>
</mx:Application>
Y at-il des moyens d'y parvenir?
J'ai déjà résolu le problème avec l'aide de la classe TextLineMetrics. Mais merci, votre variante est plus facile et meilleure. –
Mais il y a un problème quand textWidth est plus grand que textInput.width et qu'une partie du texte est cachée. L'index char est erroné dans ce cas. –
Tout est OK. –