| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Dec 2008
Beiträge: 114
| Redraw der GUI erzwingen.
Hallo Leute, ich habe eine menge Prozesse die mein Programm abarbeiten muss. Zwischendrin würde ich gerne auf labeln den aktuellen Stand der Software ausgeben. Also bei welchem Prozess sie sich grade befindet. Allerdings werden die Änderungen an der GUI erst zum schluss (nach der kompletten abarbeitung sichtbar)... Gibt es eine Möglichkeit das neuzeichnen der GUI zu erzwingen sodass auch während den Proessen live in der GUI gezeigt werden kann was sie grade macht? Danke ![]() viele Grüße Sythus |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Da niemand hier das Update der Glaskugel App 1.0 hat können wir ohne Code nur raten, was dein Model ist, wie es mit der View assoziert wird etc.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Dec 2008
Beiträge: 114
|
Sorry dachte nicht das dass hier eine Rolle spielt. mxml Code: <?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="800" creationComplete="creationCompleteHandler(event)" xmlns:hcma="hc.ma.*">
<mx:Script>
<![CDATA[
import hc.ma.WiedervorlageManager;
import mx.events.FlexEvent;
private function creationCompleteHandler(event:FlexEvent) : void
{
new WiedervorlageManager(this);
}
]]>
</mx:Script>
<mx:Label text="Name:" top="10" left="10"/>
<mx:TextInput id="mitarbeiter" left="10" top="25"/>
<mx:Button label="Wiedervorlage starten" left="180" top="25" id="startButton"/>
<mx:TextArea left="10" right="10" bottom="10" top="80" id="log" editable="false" fontFamily="Arial" fontSize="12"/>
<mx:Label width="186" right="193" top="27" id="output"/>
</mx:WindowedApplication> Code: package hc.ma
{
import flash.events.MouseEvent;
public class WiedervorlageManager
{
//Konstante Positionswerte der Spalten ST
public static const _stNrST:Number = 4;
private var wvgui:WiedervorlageTool;
private var log:Log;
public function WiedervorlageManager(wvgui:WiedervorlageTool)
{
this.wvgui = wvgui;
this.wvgui.startButton.addEventListener(MouseEvent.CLICK, starteWiedervorlage);
//globale Variablen setzen
var globalVars:GlobalVarContainer = new GlobalVarContainer();
globalVars.setLog(this.wvgui.log);
globalVars.setOutput(this.wvgui.output);
this.log = new Log();
}
private function starteWiedervorlage(event:MouseEvent) : void
{
this.log.log('Starte Wiedervorlage...');
try
{
this.log.output.text = "Stammdaten werden aktualisiert..";
var success:Boolean = this.stammdatenAktualisierung();
if(success == false) throw new Error('Stammdatenaktualisierung ist fehlgeschalgen.');
if(success == true) this.log.log('Stammdatenaktualisierung erfolgreich!');
this.log.output.text = "Lese Notwendige Daten...";
success = this.leseNotwendigeDatenEin();
if(success == false) throw new Error('Es gab unerwartete Probleme beim einlesen der einzelnen Daten');
if(success == true) this.log.log('Einlesen der notwenidgen Daten erfolgreich.');
}
catch(e:Error)
{
this.log.log(e.message, true);
this.log.log('Wiedervorlage fehlgeschlagen.', true);
return;
}
} Die GUI wird allerdings erst aktualisiert wenn alles fertig ist. d.h. this.log.log(e.message, true) welche die Texkomponente befüllt als auch this.log.output.text welche das Label befüllt werden erst ganz zum schluss aktualisiert... bzw. ausgeführt. Hoffe das is soweit alles ersichtlich. Danke schonmal |
| | |
| | #5 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Sorry, da sind ja auch keine Update Mechanismen eingebaut. Ich würde dir raten mal die Flex Basics zu studieren. Dann kommst du auch um die global Variablan rum und das Leben wird einfacher.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Dec 2008
Beiträge: 114
|
hmm, also liegts an den globalen Variablen? Könnte die Komponenten wie das Label und die TextKomponente ja auch jeder Klasse mitübergeben. Gehts denn noch anders bzw. einfacher? Und was meinst du mit Updatemechanismen? Wie könnten die aussehen? Könnte auch zwischen jedem Prozess nen Timer starten und wenn der abgelaufen ist den nächsten Prozess anstoßen. Aber das nur dafür um eine "liveausgabe" zu haben ist etwas zuviel des guten oder? Meintest du sowas mit Updatemechanismus? Wäre nett wenn du mich auf eine noch genauere Fährte führst. Danke Sythus |
| | |
| | #7 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Du hast dir DataBinding noch nicht angeschaut oder? Das ist Thema Nr. 1. Und die generelle Struktur... wird dadurch auch besser.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Dec 2008
Beiträge: 114
|
Unter Databinding verstehe ich bisher: Code: <mx:Script>
<![CDATA[
import hc.ma.WiedervorlageManager;
import mx.events.FlexEvent;
[Bindable]public var wv:WiedervorlageManager;
private function creationCompleteHandler(event:FlexEvent) : void
{
wv = new WiedervorlageManager(this);
}
]]>
</mx:Script>
<mx:Label width="186" right="193" top="27" id="output" text="{wv.str}"/> Aber in Bezug auf die Liveübertragung an die GUI während Prozesse laufen hilft mir das nicht oder? Auch dabei wird die GUI erst am Ende der Prozesse aktualisiert. |
| | |
| | #10 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Lies dich mal in die Thematik ein. Dann wirst du verstehen, warum es hilft und wie es funktioniert.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #12 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Wieso das?
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Dec 2008
Beiträge: 114
|
Moin ^^ Naja, hab mir nun gestern noch bis halb 2 das komplette Kapitel Data Binding aus den LiveDocs reingezogen: http://livedocs.adobe.com/flex/3/htm...binding_1.html Nur um eventuell zu verstehen worauf du hinaus willst und wie mir das ganze weiterhilft. Hab mir angeschaut wann das ganze gefeuert werden sollte und ettliche Beispiele ausprobiert, sogar eigene Events abgefeuert in der Hoffnung das dass Data Binding während der Prozesse greift und die GUI aktualisiert. Alles ohne Erfolg. Möchte ja nur die GUI zwischen 2 Prozessen ansprechen und ein Label oder eine Texkomponente ändern. Code: public function meineMethode{
this.führeDasAus();
meineKomponente.text = "irgendeinText" //hier hab ich ettliche Sachen per Databinding probiert. In der Hoffnung das er vor der nächsten Methode
die GuUI aktualisiert, da du sagtest das dass damit geht^^ oder bin ich immernoch auf dem völlig falschen weg?
this.führeDasNächsteAus();
} rumschieben noch Minimieren oder schließen. Klar das sich da nix an der GUI verändern kann... komisch alles^^ Grüße Geändert von Sythus (20-04-2009 um 07:05 Uhr) |
| | |
| | #14 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Das Schreiben in die text Property hat nichts mit DataBinding zu tun. Da ich die Algorithmen in deiner Anwendung nicht, kann ich nichts zu deinen Problemen konkret sagen.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #15 (permalink) |
| Neuer User Registriert seit: Dec 2008
Beiträge: 114
|
Ja das dass schreiben in die Textproperty nichts mit Databinding zu tun hat, weiß ich. Das sollte nur nochmal verdeutlichen was ich gerne möchte. Aber an dieser stelle habe ich Databinding probiert. D.h. zum Beispiel eine String variable als Source genommen und die text property als Destination. Und dann die String variable an dem Punkt geändert. (Und noch vieles mehr, fast alle Beispiele aus der LiveDoc) Ich glaub da spielt mir die asynchronität mit rein oder? Denn nehmen wir an ich könnte erst die eine Methode ausführen bis sie beendet ist, dann den Textproperty ändern und dann die nächste starten hätte ich das Problem nicht, oder? die Algorithmen in meiner Anwendung swohl Methode1 als auch Methode2 arbeiten in einer for mehrere Tausend Datensätze ab. Führen Dateioperationen aus und das wars auch schon im großen uns ganzen. Nochmal zur veranschaulichung: public function MyFunction(){ methode1(); // Dauert ca. 10 Sekunden komponente.text = "irgendeinText" //Nach 10 Sekunden soll die GUI den Text anzeigen, denn dann is Methode 1 ja fertig methode2(); // Dauert ca. 20 Sekunden } Die Aktualisierung der GUI passiert aber erst nach 30 Sekunden. Bis dahin is die Anwendung steif so als wäre sie Abgestürzt. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |