Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-04-2011, 10:17   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Problem mit der Aktualisierung eines TextInput

Gibt es da irgendwelche Bugs oder mache ich etwas falsch?

Code:
			public function Refresh():void
			{
...				ID_INVESTITION.text=	m_item.investitionSumme.toFixed(0)+" €";
...
			ID_AMORTISATION.text=	m_item.nummer;
			trace( m_item.nummer + " " + ID_INVESTITION.text);
			}
m_item ist eine Datenklasse
ID_INVESTITION ist ein TextInput, nicht änderbar

Diese Methode wird definitiv aufgerufen und auch das Trace enthält den richtigen Wert zum richtigen Datensatz! Allerdings ändert sich die Anzeige nicht!

Soweit mir bekannt müsste ein TextInput.text= "neuer Text" zum ändern der Anzeige führen!
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 09-04-2011, 19:40   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Das ist echt eine Nummer. Leider ist das wirklch schwer nachzuvollziehen, weil man nicht weiss, was hinter den Objekten steckt, die gelesen werden.

Ausserdem ist es echt keine Unterstützung, wenn man Instanznamen in Uppercase schreibt.
Omega Psi ist offline   Mit Zitat antworten
Alt 09-04-2011, 20:30   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Wo das Problem genau lag konnte ich leider nicht ermitteln, da einige Werte gezeigt wurden, andere nicht (Bsp war nur mit einem Beispiel).

Statt den Objektbaum durch zu arbeiten, wird jetzt ein Event geworfen und jede Elementgruppe lauscht. Das funzt, mit dem selben Code beim View und Datenobjekt!
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 09-04-2011, 20:41   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Ich kann bei den Infos nur raten, sorry.
Omega Psi ist offline   Mit Zitat antworten
Alt 09-04-2011, 20:56   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Zitat:
Zitat von Omega Psi Beitrag anzeigen
Ich kann bei den Infos nur raten, sorry.
Ist klar, aber merkwürdig ist der Bug trotzdem!

Ich hatte den Debugger genutzt und die Werte des Objektes wurden übergeben, auch per trace konnte die Werte ausgeben werden, aber die Anzeige hat die älteren Werte angezeigt!

Auch wurde jedes View eines Objektes nur 1x durchlaufen.

Jetzt wo der Objektbaum nicht mehr durchlaufen wird, sondern die Aktualisierung per Event angestoßen wird, wird aktualisiert!
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 13-04-2011, 14:57   #6 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
so da isser wieder der Fehler!

Ich nutze ein TabNavigator und bei show - hide werden die Daten ins Objekt geschrieben bzw. ans View als Text übergeben

Die Daten werden:
- beim 1. Aufruf angezeigt.
- Änderungen durch den User werden korrekt ins Datenobjekt geschrieben
- nach einer Änderung und einem Wechsel des Tabs, bleibt das Textfeld leer
- wenn man wieder in ein anderes Tab wechselt, dann ist der richtige Wert vorhanden!

Muss ich nach einem setzen des Textfeld-Textes ein Neuzeichnungsevent auslösen?

Code:
	<mx:TabNavigator backgroundAlpha="0.0" top="121" bottom="119" left="10" right="10">
		<s:NavigatorContent label="Objektdaten" width="100%" height="100%" show="ID_VIEW_BSK.updateData(false)" hide="ID_VIEW_BSK.updateData()">
			<ns1:ViewBrennstoffkosten x="0" y="0" id="ID_VIEW_BSK" />
		</s:NavigatorContent>
		... weiter Tabs
	</mx:TabNavigator>
Code:
			public function updateData( save:Boolean= true):void
			{
				if( save){
					objekt.value= 	Number( textfeld.text.replace( ",", "."));
				}else{
					textfeld.text= 	objekt.value.toFixed( 1).replace( ".", ",");
				}
			}
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 13-04-2011, 19:05   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Es ist natürlich immer noch schwer da was zu sagen, wenn
  1. Grundlagen zu fehlen scheinen
  2. so wenig Code vorhanden ist
Hast du mal debugged? Werden die Events wie erwartet gefeuert (die Eventhandler aufgerufen). Was sagt die Doku/API dazu? Wird das show/hide in diesem Kontext überhaupt aufgerufen?
Omega Psi ist offline   Mit Zitat antworten
Alt 13-04-2011, 19:58   #8 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Zitat:
Zitat von Omega Psi Beitrag anzeigen
[*]Grundlagen zu fehlen scheinen
Wieder iwas in der falschen Textgröße?

Zitat:
Zitat von Omega Psi Beitrag anzeigen
[*]so wenig Code vorhanden ist
Ich kann nicht das ganze Projekt posten!

Zitat:
Zitat von Omega Psi Beitrag anzeigen
Hast du mal debugged? Werden die Events wie erwartet gefeuert (die Eventhandler aufgerufen). Was sagt die Doku/API dazu? Wird das show/hide in diesem Kontext überhaupt aufgerufen?
Wie schon geschrieben, Events kommen, das setzen der im Textinput befindlichen Daten ins Datenobjekt funktioniert, sogar wenn das Textinput auf dem Bildschirm leer ist!

Wenn Du einen besseren Weg kennst, wie ich die im Textfeld befindlichen Daten mit einem Datenobjekt synchronisiere und formatiert ausgeben kann, dann würde ich mich freuen.
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 13-04-2011, 20:15   #9 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Wert ändern, nächste Tab, anderen Wert, zurück und das Textfeld ist leer
Angehängte Dateien
Dateityp: zip Test.zip (1,5 KB, 2x aufgerufen)
Dateityp: swf Test.swf (43,1 KB, 2x aufgerufen)
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4

Geändert von toosten (13-04-2011 um 20:16 Uhr)
toosten ist offline   Mit Zitat antworten
Alt 14-04-2011, 07:26   #10 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Noch ein Test-Button hinzugefügt:
Code:
			protected function button1_clickHandler(event:MouseEvent):void
			{
				Alert.show( "textfeld.text: "+textfeld.text+"\n"+"m_objekt.value: "+m_objekt.value); 
			}
Textfeld leer, Datenobjekt und Textfeld.text enthalten den korrekten Wert.

Edith meint das der Wert mit der Tabulatortaste auch sichtbar gemacht werden kann.
Angehängte Grafiken
Dateityp: jpg alert.jpg (8,9 KB, 4x aufgerufen)
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4

Geändert von toosten (14-04-2011 um 07:43 Uhr)
toosten ist offline   Mit Zitat antworten
Alt 14-04-2011, 08:51   #11 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Lösung gefunden!

Für die formatierte Ausgabe von Werten benötigt Flex einen Getter!

Code:
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
	<fx:Declarations>
			<!-- Platzieren Sie nichtvisuelle Elemente (z.*B. Dienste, Wertobjekte) hier -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			[Bindable]
			private var m_objekt:Test_Data=	new Test_Data();
			
			/****************************************************************************************************************
			 *
			 */
			public function updateData( save:Boolean= true):void
			{
				if( save){
					m_objekt.value= Number( textfeld.text.replace( ",", "."));
				}
			}

			/****************************************************************************************************************
			 *
			 */
			public function get test():String	{	return m_objekt.value.toFixed( 1).replace( ".", ",");	}
		]]>
	</fx:Script>
	
	<s:TextInput x="10" y="10" id="textfeld" width="61" textAlign="right" text="{test}"/>
</s:Group>
Ein Setter wird allerdings nicht genutzt, da muss man einen changeHandler nutzen.
Da ich nicht für jeden Wert einen Handler benötige, werden die Werte beim Wechsel des Tabs übernommen.

Falls jemand eine Methode mit weniger Gettern kennt, würde ich mich über eine Info freuen! Bei vielen Eingabefeldern mit formatierter Ein/Ausgabe wirds nervig für jeden Wert einen Getter zu implementieren!
Angehängte Dateien
Dateityp: zip Test.zip (1,4 KB, 1x aufgerufen)
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 14-04-2011, 09:01   #12 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Zeig mal die Klasse Test_Data. Ist die Bindable? Generell vielleicht mal was zu dem Thema lesen, das wirk zu, als hättest du es nicht ganz verinnerlicht.
Omega Psi ist offline   Mit Zitat antworten
Alt 14-04-2011, 12:54   #13 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Code:
package
{
	public class Test_Data
	{
		private var m_value:Number=	123;
		
		public function Test_Data()
		{
		}
		
		public function set value( val:Number):void	{	m_value= val;}
		public function get value():Number			{	return m_value;}	
	}
}
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 14-04-2011, 13:26   #14 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
Die Klasse ist nicht als [Bindable] annotiert und auch nicht von EventDispatcher abgeleitet.
Eigentlich müsste dein Compiler aber ne Warnung schmeißen wenn du versucht an Elemente zu binden welche die Vorraussetzungen für Bindungen nicht erfüllen
__________________
mfg Frank

Geändert von mildesign (14-04-2011 um 13:27 Uhr) Grund: entdinglished
mildesign ist offline   Mit Zitat antworten
Alt 14-04-2011, 14:00   #15 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Hmm, iwie komm ich nicht ganz klar mit Flex!

Das verwalten meines Datenbaumes mit vielen Unterobjekten und diversen Berechnungen ist auch unter Flex/AS3 kein Problem für mich!

Leider habe ich kein Bsp. gefunden bei dem ich ein Datenobjekt (keine XML oder reines Array) mit einer Form anzeigen und Änderungen wieder dort ablegen kann.

Ich möchte einer MXML-Komponente ein Datenobjekt übergeben und dieses soll teilweise bearbeitet werden können.
Die Anzeige soll formatiert werden und die Eingabe teilweise auch von Text zu Number gewandelt werden ( egal ob Punkt oder Komma).

Kann mir bitte jemand helfen das mein Beispiel (Test.zip) korrekt funktioniert?
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Aktualisierung bzw. refresh eines swfs Mayday171 Flash Einsteiger 10 05-07-2006 10:23
Problem mit der Aktualisierung elWeis Flash MX 5 07-10-2004 10:22
Problem mit Aktualisierung(F5) potRanger Flash MX 1 10-05-2004 02:26
Aktualisierung eines Bildes Julian Graw ActionScript 1 0 25-09-2001 18:46
Kleines Problem mit aktualisierung jolly Flash und Datenbanken 1 11-08-2001 10:15


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele