Question

J'ai un TileList avec des images miniatures. Sous chaque image miniature I afficher le nom de l'image. Je veux construire une fonctionnalité de changement de nom. Ainsi, sous la TileList est un bouton « Renommer l'image sélectionnée ».

Lorsque vous cliquez sur ce bouton, je voudrais changer l'état du composant itemRenderer. L'étiquette sous l'image se transforme en un TextInput afin que l'utilisateur peut saisir un nouveau nom. Cela ressemble beaucoup à la fonctionnalité de fichiers Windows renomme.

Comment puis-je accéder à la itemRenderer de l'image sélectionnée? Comment puis-je y arriver qu'il écoute l'événement clic du bouton Renommer?

Une partie du 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ù les mx: changements de texte dans un 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}" />
Était-ce utile?

La solution 2

Ok, merci Pbirkoff, votre réponse m'a conduit dans la bonne direction. La façon dont je le fais est maintenant que je mets la propriété du nom de l'objet de données « » dès F2 ou le bouton de changement de nom est cliqué sur l'élément sélectionné TileList.

Je l'ai mis en place un Observer dans le itemRenderer sur cette propriété data.name (

Autres conseils

Jetez un oeil à cet exemple - -le en place des contrôles d'édition pourraient vous donner un endroit pour commencer avec vos commandes.

Je ne pense pas que ce soit la meilleure façon d'aller.

Ce que je ferais est d'obtenir le SelectedItem du TileList. Ceci est le modèle de données pour cette image (= un élément de vos images à la collection). Je suppose que cet objet a une propriété comme le nom ou le titre. Essayez de régler cette valeur avec la nouvelle valeur. Lorsque vous faites l'objet [Bindable], la valeur correcte doit apparaître dans votre ItemRenderer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top