tag:blogger.com,1999:blog-36900290417863377312008-03-19T13:47:15.556-07:00Flex PLshi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-3690029041786337731.post-85060253354743864952008-02-15T05:26:00.000-08:002008-02-15T05:29:03.887-08:00Blokowanie oknaAby zablokować okno przed ruchem (szczególnie przydatne w przypadku Iframe, który znika przy przeciąganiu) należy do okna dodać wywołanie funkcji stopDragging() uruchamianym na mouseDown.<br />Uwaga!! działa tylko w kontenerach dziedziczących po TitleWindow czy Panel<br /><br /><span style="font-weight: bold; color: rgb(255, 0, 0);font-family:courier new;" >&lt;mx:Panel ... mouseDown="stopDragging()" /></span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-4298165165172973102008-02-13T07:18:00.000-08:002008-02-15T05:29:28.693-08:00IFrame problemW innym poście opisze sposób wyświetlania PDFów bądź innych stron WWW w okienku Flexa za pomocą IFrame. Teraz przedstawię rozwiązanie problemu, który pojawił sie przy zastosowaniu tego rozwiązania.<br />Otóż przy wychodzeniu z zakładki z Iframem we Flexie i powrocie, cała zawartość IFrama znikała.<br />Rozwiązanie?<br />Dodać do pliku na którym wyświetlany jest nasz swf ( czyli np index.html, czy main.html - można znaleźć w Builderze -> bin itd)<br />w części AC_FL_RunContent<br />parametr<br /><span style="color: rgb(255, 0, 0); font-weight: bold;">“wmode”, “opaque”,</span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-74762638283591084932008-02-11T05:45:00.000-08:002008-02-11T05:54:08.353-08:00DataGrid - sortowanie DatCd. problematycznego sortowania w DG. Tym razem sposób na sortowanie dat:<br /><br /><span style="font-family:courier new;"> private function sortDates(a:Object, b:Object):Number{</span><br /><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;var date1:Date = new Date(a.dataCzasReal);</span><br /><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;var date2:Date = new Date(b.dataCzasReal);</span><br /><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;if(date1</span><span style="font-family:courier new;">&lt;date2) </span><br /><span style="font-family:courier new;"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1<br />&nbsp;&nbsp;&nbsp;else if(date1&gt;</span><span style="font-family:courier new;">date2)</span><br /><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;</span><br /><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;else return 0;</span><br /><span style="font-family:courier new;"> }</span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-21706212861689628142008-02-11T05:06:00.000-08:002008-02-11T06:06:27.078-08:00Zmiana koloru czcionki w komórce DataGridaChcąc zmienić kolor czcionki prezentowanej zawartości datGrida w zależności od jego wartości należy skorzystać z ItemRenderera<br /><br /><span style="font-family: courier new;">&lt;mx:DataGridColumn headerText="wartosc"</span><br /><span style="font-family: courier new;">itemRenderer="</span><span style="font-style: italic; font-family: courier new;">sciezkaDoKomponentu.ColorComponent</span><span style="font-family: courier new;">" /&gt;</span><br /><br /><br />ItemRenderer<br /><br /><br /><span style="font-family: courier new;">public class ColorComponent extends Label{</span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;override public function set data(value:Object):void</span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;{</span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(value != null)</span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ </span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.data = value;</span><br /> <br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(value.wartosc == "1") { //okreslamy dla jakiej wartosci </span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setStyle("color", 0x0000FF) ;</span><br /> <br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(value.wartosc =="2"){</span><br /><span style="font-family: courier new;"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setStyle("color",0x000000);</span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {</span><br /><span style="font-family: courier new;"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setStyle("color", 0x0000FF);</span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: courier new;">&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: courier new;"> }</span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-70856606675579680392008-02-11T04:37:00.000-08:002008-02-11T05:05:57.652-08:00DataGrid - sortowanie liczbW komponencie DataGrid sortowanie traktuje wszystkie elementy jako obiekty typu String i w taki też sposób je sortuje, co powoduje że np liczby 1, 32, 112 po sortowaniu ustawione będą w następującej kolejności: 1,112,32<br /><br />Chcąc mieć kolumnę posortowaną numerycznie należy dołączyć własną funkcję sortowania:<br /><br /><span style="font-family:courier new;">private function sortFunc(a:Object, b:Object):Number{</span><br /><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;">&nbsp;&nbsp;if (a.lp==null) {a.lp="0"}</span><br /><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;">&nbsp;&nbsp;if (b.lp==null) {b.lp="0"}</span><br /><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;var lp1:int= parseInt(a.lp);</span><br /><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;var lp2:int= parseInt(b.lp);</span><br /><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;if (lp1 <><br /></span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"><span style="font-family:courier new;"> &nbsp;&nbsp;&nbsp;&nbsp;return 1;</span><br /></span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"><span style="font-family:courier new;"> &nbsp;&nbsp;&nbsp;}else if (lp1 >lp2){</span><br /></span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"><span style="font-family:courier new;"> &nbsp;&nbsp;&nbsp;&nbsp;return -1;</span><br /></span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"><span style="font-family:courier new;"> &nbsp;&nbsp;&nbsp;}else{</span><br /></span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"><span style="font-family:courier new;"> &nbsp;&nbsp;&nbsp;&nbsp;return 0;</span><br /></span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"><span style="font-family:courier new;"> &nbsp;&nbsp;&nbsp;}</span><br /></span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"> </span><span style="font-family:courier new;"><span style="font-family:courier new;">&nbsp;&nbsp;}<br /><br /></span>i dołączyć ją do kolumny którą chcemy sortować w ten sposób:<br /><br /><span style="font-family:courier new;">&lt;mx:DataGridColumn headerText="Lp" labelFunction="lpLabelHandler" sortable="true" width="45" <span style="color: rgb(255, 0, 0);">sortCompareFunction="sortFunc"</span> /&gt;</span></span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-91267779269895637912008-02-11T03:50:00.000-08:002008-02-11T03:57:57.335-08:00Button - enabled - zależność od 2 czynnikówZdarzyć się może, że możliwość klikania na guzik chcemy dać użytkownikowi kiedy spełnione są 2 warunki np.<br />Wykonanie akcji na danym elemencie dataGrida<br />1) kiedy wybrany jest jakiś obiekt z DataGrida (selectedItem!=null)<br />2) kiedy nie wykonano wcześniej tej operacji na wybranym elemencie DataGrida<br /><br />Stworzyć taką zależność można za pomocą poniższego kodu:<br /><br /><span style="font-family:courier new;"> <span style="color: rgb(255, 0, 0); font-weight: bold;">enabled="{(DG.selectedItem != null)?(DG.selectedItem.jakiesPole!='WartoscWstawianaPoAkcjiGuzika'):false}"</span></span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-62754337062640406672008-02-04T06:54:00.000-08:002008-02-11T03:41:03.789-08:00ComboBox z XMLa - wyciąganie wartościZakładając że każdy wie jak podłączyć ComboBox do XMLa, pomijam tę część.<br />W notce tej chciałabym pokazać w jaki sposób wyciągnąć wartość z XMLowego ComboBoxa.<br /><br />ComboBox wygląda tak:<br /><br /><span style="font-family: courier new;">&amp;gtmx:ComboBox id="comboBoxId" dataProvider="{jakisXml}" labelField="nazwaPolaWyswietlanego" dataField="nazwaPolaWyswietlanego" /></span><br /><br />W tradycyjny sposób czyli za pomocą<br />comboBoxId.selectedItem dostaniemy<br /><span style="font-family: courier new;">&amp;gttag>zawartosc>/tag></span><br /><br />Aby dobrać się do zawartości bezpośrednio nalezy skorzystac z metody text(),czyli<br /><br /><span style="color: rgb(255, 0, 0); font-family: courier new;">comboBoxId.selectedItem.nazwaPolaWyswietlanego.text();</span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-31948013771582756972008-02-04T04:20:00.000-08:002008-02-11T03:41:19.215-08:00Alert - przyciski nietypoweAlert.show dopuszcza wyświetlenie okna alertu z przyciskiem OK, lub przyciskami YES/NO, OK/CANCEL. Jeśli chcielibyśmy zastosować własne napisy na przyciskach należy postąpić wg poniższej instrukcji.<br />Na przykładzie alertu typu YES/NO<br /><br /><span style="font-family: courier new; color: rgb(255, 0, 0);">Alert.yesLabel="TAK";</span><br /><span style="font-family: courier new;"><span style="color: rgb(255, 0, 0);">Alert.noLabel="NIE"</span><br /><br />Alert.show("Podoba ci się?", "Potwierdzenie", Alert.NO | Alert.YES, this, alertHandler,null,Alert.YES);<br />//czyli tekst w środku alertu, tekst na pasku górnym, guzik1, guzik2,parent,domyslnie zaznaczony guzik)<br /><br />private function alertHandler(eventObj:CloseEvent):void{<br /> if(eventObj.detail==Alert.NO){<br /> zrob cos);<br /> <br /> }<br /> <br /> }<br /></span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-77484153065121780622008-01-30T06:35:00.000-08:002008-02-11T03:41:23.719-08:00PopUp na czasAby okienko PopUp znikło po określonej chwili należy użyć setTimeout<br /><br /><span style="font-family:courier new;"> popUp = Alert.show("Treść alertu");</span><br /><span style="font-family:courier new;"><span style="color: rgb(255, 0, 0); font-weight: bold;"> setTimeout(closeAlert, 4000);</span> //4 sekundy<br /></span><br />Funkcja closeAlert wygląda następująco:<span style="font-family:courier new;"><br /></span><pre style="font-family: courier new;" class="code"> private function closeAlert():void {<br /> PopUpManager.removePopUp(popUp);<br /> }</pre><br /><span style="font-family:courier new;"><br /></span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-4194493590192717192008-01-28T01:49:00.000-08:002008-02-11T03:43:55.355-08:00DataGrid - zaznacz wszystko, odznacz wszystko<p>Poszukiwałam funkcji slużącej do odznaczania i zaznaczania wszystkich wierszy w DataGridzie. Wreszcie znalazłam i umieszczam tutaj, może komuś będzie łatwiej tutaj dotrzeć ;)</p><br />Są dwie rzeczy które należy zrobić:<br />1) Ustawic DataGrid argument<br /> <div style="text-align: center;"><span style="font-family:courier new;"> allowMultipleSelection="true"</span><br /></div><br />2) Skrypty pod guzikami<br /> - zaznacz wszystko<br /><code><br /> <span style="font-family:courier new;">&nbsp;&nbsp;private function selectAll():void{</span><br /><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;&nbsp;var everything:Array = new Array();</span><span style="font-family:courier new;"><br /></span><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;&nbsp;for( var i:int = 0; i &lt;employees.length; i++ )<br /><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;everything[i] = i;</span><br /><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family:courier new;"> </span><span style="color: rgb(204, 0, 0);font-family:courier new;" >&nbsp;&nbsp;&nbsp;&nbsp;dg.selectedIndices = everything;</span><br /><span style="font-family:courier new;">&nbsp;&nbsp;}</span></span> <span style="font-family:courier new;"> <br />&nbsp;&nbsp;private function selectNone():void{</span><br /><span style="font-family:courier new;">&nbsp;&nbsp;&nbsp;&nbsp;dg.selectedIndices = [];<span style="font-family:arial;">// <span style="font-family:trebuchet ms;">or dg.selectedIndices = new Array();</span></span></span><br /><span style="font-family:courier new;">&nbsp;&nbsp;}</span><br /><br /></code><br />za stroną http://www.thebrokentoy.com/?p=3shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-66357208503619429752008-01-24T07:33:00.001-08:002008-02-11T03:42:26.846-08:00TabNavigator - zakładka nie do otwarciatabs.getTabAt(1).enabled=false;shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-40970975888896094012008-01-23T07:52:00.001-08:002008-02-11T03:42:59.048-08:00Model Locator - wreszcie coś po polskuModel Locator to pierwszy etap Cairngormowego łańcucha Model-View-Controller.<br />Jego przeznaczenie to głównie przekazywanie danych pomiędzy poszczególnymi okienkami flexowej aplikacji. A dzieje się to w sposób łatwy, miły i przyjemny.<br />Zmienną, bądź dane które chcemy zachować w celu np przyszłego wykorzystania przepisujemy do ML i w dowolnym miejscu aplikacji możemy odwołać się do nich przy pomocy tegoż właśnie wzorca.<br /><br />Przykład:<br /><br /><span style="font-weight: bold;">1 okno aplikacji</span><br /><br /><span style="font-family:courier new;"><code>&lt;mx:Formitem label="Wprowadz imie">&lt;/mx:Formitem><br /><span style="font-family:courier new;"> &lt;mx:Textinput id="textImie" width="100">&lt;/mx:Textinput></span></code><br /><span style="font-family:courier new;"><br /><br /><br /><span style="font-weight: bold;">2 okno aplikacji</span> (jakiś canvas)<br /><code><br />&lt;mx:Label label="">&lt;</code></span></span>- właśnie tu chcielibyśmy wyświetlić imię I tu doskonale sprawdzi się ModelLocator<br /><br /><span style="font-weight: bold;">Tworzymy kod dla ModelLocatora</span>:<span style="font-family:courier new;"><span style="font-family:courier new;"><br /><code><br />package sciezka...model<br />{<br /> import com.adobe.cairngorm.model.ModelLocator;<br /><br /> public class NaszModelLocator implements ModelLocator<br /> {<br /></span></span><span style="font-family:courier new;"><span style="font-family:courier new;"><br />[Bindable]<br />public var imie:String;<br />public static function getInstance(): NaszModelLocator<br /> {<br /> if (_instance == null)<br /> {<br /> _instance = new NaszModelLocator();<br /> } <br /> <br /> return _instance;<br /> <br /> }<br /> <br /> <br /> public function NaszModelLocator()<br /> {<br /> super();<br /> if (_instance != null)<br /> {<br /> throw new Error("Only one instance allowed!");<br /> }<br /> }<br /></span></span><span style="font-weight: bold;">1 okno cd. </span><br /><br />tworzymy zmienną przechowywującą odwołanie do aktualnej instancji ML<span style="font-family:courier new;"><span style="font-family:courier new;"><br /><br /><br />var model:NaszModelLocator= NaszModelLocator.getInstance();<br /></span><span style="font-family:courier new;"><code>&lt;mx:Formitem label="Wprowadz imie"></code></span><br /><span style="font-family:courier new;"> <code style="font-family: courier new;"> &lt;mx:Textinput id="textImie" width="100">&lt;/mx:Textinput></code><br /><span style="font-family:courier new;"><br /><code style="font-family: courier new;"><br />&lt;mx:Script><br />&lt;!--CDATA... private function zapiszImie():void{ model.imie=textImie.text; }<br />&lt;/mx:Script></code><span style="font-family:courier new;"><code style="font-family: courier new;">&lt;mx:button label="Przejdz dalej" click="zapiszeImie()"></code><br /><br /><br /></span></span></span></span><span style="font-weight: bold;">2gie okno cd.</span><span style="font-family:courier new;"><span style="font-family:courier new;"><span style="font-family:courier new;"><span style="font-family:courier new;"><br /><br />&lt;/mx:Button></span><span style="font-family:courier new;">&lt;mx:label label="Witaj {model.imie}"></span><br /><span style="font-family:courier new;"><br /><br /></span></span></span></span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.comtag:blogger.com,1999:blog-3690029041786337731.post-12793789096547636962008-01-23T07:44:00.000-08:002008-02-11T03:43:07.875-08:00Pierwszy czyli wyśrodkowaywanie okienka PopUpDziś znalazłam odpowiedź na to jak wyśrodkować okienko PopUp, kiedy nie chce się wycentrować przy tworzeniu, a dodawanie kolejnych parentów nie daje żadnego efektu.<br /><br /> <span style="font-family:courier new;"> var popUp:IFlexDisplayObject;</span><br /><span style="font-family:courier new;"> popUp = new JakiesOknoWindow();</span><br /><span style="font-family:courier new;"> PopUpManager.addPopUp(popUp,<span style="font-weight: bold;">this.parent</span>,true);</span><br /><span style="font-family:courier new;"> PopUpManager.centerPopUp(popUp);</span><br /><br /><br />Należy w miejscu podawania DisplayObject wpisać Application.application as DisplayObject<br /><br />czyli<br /><br /> <span style="font-family:courier new;">var popUp:IFlexDisplayObject;</span><br /><span style="font-family:courier new;"> popUp = new JakiesOknoWindow();</span><br /><span style="font-family:courier new;"> PopUpManager.addPopUp(popUp,<span style="font-weight: bold;"></span></span><span style="color: rgb(255, 0, 0);">Application.application as DisplayObject</span><span style="font-family:courier new;"><span style="font-weight: bold; color: rgb(255, 0, 0);"></span>,true);</span><br /><span style="font-family:courier new;"> PopUpManager.centerPopUp(popUp);<br /><br /><br /><br />I już ;)<br /><br /></span>shi_ver@go2.plhttp://www.blogger.com/profile/04438935765440265380noreply@blogger.com