Frage

Ich habe eine TileList mit Miniaturbildern. Unter jeder Miniaturbilder angezeigt werden ich den Namen des Bildes. Ich möchte Umbenennungs Funktionalität bauen. Also unter dem TileList ist ein „Rename ausgewähltes Bild“ -Taste.

Wenn diese Schaltfläche geklickt wird, würde Ich mag den Zustand der itemRenderer Komponente ändern. Das Etikett unter dem Bild wird in eine TextInput- ändern, so dass der Benutzer einen neuen Namen eingeben kann. Dies ist ähnlich wie die Windows-Umbenennungs Datei-Funktionalität.

Wie kann ich auf die itemRenderer des ausgewählten Bildes? Wie kann ich es passieren, dass es mit dem Click-Ereignis der Schaltfläche Umbenennen hört?

Einige 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>

Die itemRenderer ist nur ein mx: VBox mit einem mx: Bild und ein mx: Text. In gibt es eine weitere mx: Staat, in dem die mx: Textänderungen in eine 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}" />
War es hilfreich?

Lösung 2

Ok, danke Pbirkoff, Ihre Antwort führte mich in der richtigen Richtung. So wie ich es jetzt tun, ist, dass ich den Namen Eigenschaft des Datenobjekts auf „“, sobald F2 oder die Umbenennungstaste angeklickt wird auf der TileList ausgewählte Element gesetzt.

Ich habe ein Beobachten der itemRenderer auf, dass data.name Eigenschaft (

Andere Tipps

Hier finden Sie aktuelle diesem Beispiel - -die anstelle Bearbeitung Kontrollen könnten Sie einen Platz zu starten, mit Kontrollen.

Ich glaube nicht, das ist der beste Weg zu gehen.

Was ich tun würde, ist die SelectedItem vom TileList bekommen. Dies ist das Datenmodell für dieses Bild (= ein Element aus Ihrer Bilder-Sammlung). Ich denke, das Objekt eine Eigenschaft wie Name hat oder Titel. Versuchen Sie diesen Wert mit dem neuen Wert. Wenn Sie das Objekt [Bindable] zu machen, sollte der richtige Wert in Ihrem ItemRenderer erscheinen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top