Beiträge getaggt mit flex

Farbe einer Reihe im DataGrid abhängig von Inhalt setzen

In ein DataGrid wird eine Liste mit Daten geladen, dabei sind die Datensätze entweder aktiv oder deaktiviert, was durch 1 bzw. 0 in dem Feld active dargestellt wird. In dem DataGrid soll das so dargestellt werden, dass die Textfarbe der Einträge mit active=0 etwas blasser ist, als die Farbe der anderen Einträge. Eine lange Recherche ergab, dass man dieses nur mit Hilfe eines Item Renderers lösen kann.

MXML DataGrid:

<mx:DataGrid dataProvider="{filterData}">
	<mx:columns>
		<mx:DataGridColumn dataField="name" headerText="Name"
			itemRenderer="classes.ActiveItemRenderer" />
	</mx:columns>
</mx:DataGrid>

Dann im Ordner/Package classes die Klasse ActiveItemRenderer als Ableitung von Label anlegen und das setzen:

package classes
{
	import mx.controls.Label;
 
	public class ActiveItemRenderer extends Label
	{
		public function ActiveItemRenderer()
		{
			super();
		}
 
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
			super.updateDisplayList(unscaledWidth, unscaledHeight);
 
 			if(data.active == 0) {
				setStyle("color", 0x999999);
			}
		}
 
	}
}

Quelle: Formatting a flex datagrid control using a custom item renderer
Das hier habe ich aber auch gefunden:
How to change datagrid’s row background color
Changing text color in a datagrid using item renderers

Tags: ,

Geschrieben in flash/flex | Kommentare deaktiviert für Farbe einer Reihe im DataGrid abhängig von Inhalt setzen

Inhalt einer Fehlerantwort vom Server ausgeben

… oder handling faultevent content in flash.

Wenn man Daten aus Flash/Flex an ein PHP-Skript schickt und diese dort verarbeitet, schickt man in der Regel ein Ergebnis zurück in einem HTTP Response mit Status Code 200. Diese Antwort kann man ganz leicht ausgeben.

XML-Request anlegen:
// Request Objekt initialisieren
xmlRequest = new HTTPService();
xmlRequest.resultFormat = "e4x";
xmlRequest.method = "POST";
xmlRequest.addEventListener(ResultEvent.RESULT, requestResultHandler);
xmlRequest.addEventListener(FaultEvent.FAULT, requestFaultHandler);
xmlRequest.url = "http://www.example.com";
xmlRequest.send();

Antwort ausgeben:
public function requestResultHandler(event:ResultEvent):void
{
var returnXML:XML = event.result as XML;
}

Ein wenig schwieriger ist es mit anderen Status Codes, wie ich rausgefunden habe, werden diese vom Browser nicht an das Flash Plugin weitergeleitet, so dass es nur möglich ist, auf die Status Codes zu reagieren, nicht aber den Inhalt der Antwort auszugeben:
public function requestFaultHandler(event:FaultEvent):void
{
Alert.show("Es ist ein Fehler aufgetreten", "Fehler");
}

Quellen:
http://efreedom.com/Question/1-2299401/Actionscript-Expose-XML-Web-Service-FaultEvent-Can-Accessed
http://forums.adobe.com/thread/438755
http://blog.widget-labs.com/2007/02/15/handling-web-service-exception-in-flex-code/

Tags: , ,

Geschrieben in flash/flex | Kommentare deaktiviert für Inhalt einer Fehlerantwort vom Server ausgeben

Flash AS3: DuplicateMovieClip oder eine Clone-Funktion

Wie auf vielen Seiten im Web bereits beschrieben, sind es im Bezug auf MovieClip-Kopien zwei Dinge, die in Flash nicht funktioniert. In AS2 kann man zwar MovieClips kopieren, dann aber nicht einem anderen Parent-Objekt zuweisen. d.h. wenn die Verschachtelung wie folgt ist: A.B und ich mach eine Kopie von B mit dem Namen C, dann ist es immer noch A zugeordnet: A.B! Und es gibt keinen Weg, um das zu ändern.
In AS3 ist es einfach, den Parent eines Movie-Clips zu ändern:

a_mc.addChild(b_mc.c_mc);

Nach diesem Aufruf ist c_mc nun ein Unterobjekt von a_mc und nicht mehr von b_mc. Was in AS3 allerdings nicht so einfach ist, ist das Kopieren von MovieClips. Es gibt keine Clone-Funktion oder ähnliches. Bei meinen Recherchen bin im am Ende auf eine Seite gestoßen, die das was ich gefunden habe, ganz gut zusammenfasst: The Quest for MovieClip.clone(). Ich hatte vorhin schon die Lösung Nr.5 für mich ausgesucht: die Funktion duplicateDisplayObject. Das Beispiel funktioniert, sobald ich den Funktionsaufruf (mitsamt der Klasse) in meine Datei reinkopiert hatte, funktionierte es nicht. Der genaue Vergleich ergab, dass es wichtig ist, das zu kopierende Objekt als Klasse in Flash zu exportieren. Dazu beim Anlegen des MovieClips als Symbol oder unter Eigenschaften des Symbols in der Bibliothek den Haken bei „Für ActionScript“ exportieren setzen und einen Klassennamen angeben (der allerdings keine weitere Rolle spielt). Dann klappts auch mit der Kopie.

Tags: , , ,

Geschrieben in flash/flex | Kommentare deaktiviert für Flash AS3: DuplicateMovieClip oder eine Clone-Funktion