Ich habe eine DataGrid
, die eine MXDataGridItemRenderer
als itemEditor
auf eine der Spalten angewendet hat. Der Editor enthält eine spark.components.TextArea
Kontrolle.Flex: Zeilenumbruch-Problem mit spark.components.TextArea in einem MXDataGridItemRenderer
Standardmäßig schließt sich ein Texteditor eines Datagrids, wenn die [enter] -Taste gedrückt wird. Dies wird im Hinterkopf behalten. Was ich tun möchte, ist:
- Prevent-Editor aus dem Schließen auf [SHIFT + ENTER] -Taste, sondern nehmen die Zeilenumbrüche (Ich kann dies tun, siehe Code unten)
- Schließen Sie den Editor auf [ENTER], aber nicht die Zeilenumbrüche akzeptieren (könnte dies nicht erreichen)
Hier wird der aktuelle Code ist in der MXDataGridItemRenderer
:
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
focusEnabled="true"
>
<fx:Script>
<![CDATA[
protected function onTxtDataKeyDown(event:KeyboardEvent):void
{
if (event.keyCode == 13)
{
if (event.shiftKey)
{
//Prevent editor from closing on [SHIFT+ENTER] key but accept the linebreak
event.stopImmediatePropagation(); // » works
}
else
{
//Close the editor on [ENTER] key but do not accept the linebreak
event.preventDefault(); // » does not work
}
}
}
]]>
</fx:Script>
<s:TextArea id="txtData" paddingTop="3" lineBreak="explicit"
text="{dataGridListData.label}"
verticalScrollPolicy="auto" horizontalScrollPolicy="off"
keyDown="onTxtDataKeyDown(event)"
/>
Ich habe auch das textInput
Ereignis versucht, aber das hat nicht den Trick gemacht. Also: Wie kann ich die linebreak verhindern, wenn der Editor geschlossen ist [enter] -Taste?
Jede Hilfe wird geschätzt. Vielen Dank.
EDIT: Wenn ich die spark.components.TextArea zu mx.controls.TextArea, zweiter Teil mit event.preventDefault()
verändern wird wie erwartet, aber dann der erste Teil, in der SHIFT + ENTER nimmt die Zeilenumbrüche nicht funktionieren.
Wie ich in der Post gesagt habe; Ich habe das schon mal ausprobiert. Das funktioniert nicht mit spark.components.TextArea. Wenn Sie die Eingabetaste drücken, zeichnet der Textinput nichts auf. Nur Spuren, wenn es sich um einen normalen Zeichenschlüssel wie a, b, c, usw. handelt. –
Kann auch nicht. Was passiert, wenn der Text im Textfeld ausgewählt wird? Wenn Sie Enter drücken, wird alles gelöscht und nur das Entfernen des Zeilenumbruchs löst das Problem nicht. –
Ich entwickle für AIR. Ja, scheint wie ein Fehler. –