J'ai une TileList avec des vignettes. Sous chaque image de vignette, j'affiche le nom de l'image. Je veux créer une fonctionnalité de renommer. Donc, sous le TileList est un bouton "Renommer l'image sélectionnée".Accéder à l'élémentRenderer d'un élément sélectionné
Lorsque ce bouton est cliqué, je voudrais changer l'état du composant itemRenderer. L'étiquette située sous l'image se transforme en TextInput afin que l'utilisateur puisse saisir un nouveau nom. Cela ressemble beaucoup à la fonctionnalité du fichier renommer Windows.
Comment puis-je accéder à la commande itemRenderer de l'image sélectionnée? Comment puis-je faire en sorte qu'il écoute l'événement click du bouton Rename?
Certains code:
<mx:TileList id="imageTileList" width="100%" height="100%" doubleClickEnabled="true"
itemsChangeEffect="{tileListEffect}" dataProvider="{images}"
keyDown="{tileListKeyDownHandler(event)}"
itemRenderer="com.n200.components.htmlElement.ImageTile"
columnWidth="128" rowHeight="128" itemDoubleClick="{insertImage()}"
horizontalScrollPolicy="off" verticalScrollPolicy="auto" />
<mx:LinkButton label="Rename selected image" labelPlacement="left"
enabled="{imageTileList.selectedIndex>0}"
styleName="rename24" click="{renameSelectedImage()}" />
<mx:Script>
<![CDATA[
private function renameSelectedImage():void
{
// Need to access itemRenderer of selected image here
}
]]>
</mx:Script>
Le itemRenderer est juste un mx: VBox avec un mx: Image et mx: Texte. En il y a un autre mx: État où le mx: Texte se transforme en mx: TextInput:
<mx:states>
<mx:State name="rename">
<mx:RemoveChild target="{imageName}" />
<mx:AddChild>
<mx:TextInput id="newName" text="{originalName}" keyDown="{textInputKeyDownHandler(event)}"
width="100%" focusOut="{commit()}" focusThickness="0" />
</mx:AddChild>
</mx:State>
</mx:states>
<enterComponents:P200Image source="{imgFunction?imgFunction.fileId:null}" width="82" height="82" verticalAlign="bottom" stretch="true" />
<mx:Text id="imageName" text="{imgFunction.name}" selectable="false" truncateToFit="true"
textAlign="center" width="82" toolTip="{imgFunction.name}" />
Salut, merci pour la réponse. Ce n'est pas exactement ce que je cherche. J'essaie de clarifier. Ce que je suis après est de faire une fonction de renommer comme la fonction de renommer de Windows File Explorer. Si vous cliquez sur un élément répertorié, puis appuyez sur F2, le nom d'un fichier se transforme en un TextInput. Et l'utilisateur peut taper le nouveau nom dans la liste. C'est ce que j'essaie d'accomplir, ce qui signifie que je dois changer l'état de mon itemRenderer, de sorte que le texte change en entrée et que le nom devienne éditable. – Bocaxica
Ok, je comprends mieux ce que tu veux dire. Cependant, je ne pense pas que ce soit la meilleure façon de procéder. Il n'est pas recommandé d'accéder directement à un itemrenderer (comme décrit ici: http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html). Vous devriez laisser l'action se dérouler depuis l'intérieur de l'itemrenderer. J'espère que vous trouverez un moyen de le faire! – Pbirkoff