piątek, 15 luty 2008

Blokowanie okna

Aby 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.
Uwaga!! działa tylko w kontenerach dziedziczących po TitleWindow czy Panel

<mx:Panel ... mouseDown="stopDragging()" />

środa, 13 luty 2008

IFrame problem

W 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.
Otóż przy wychodzeniu z zakładki z Iframem we Flexie i powrocie, cała zawartość IFrama znikała.
Rozwiązanie?
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)
w części AC_FL_RunContent
parametr
“wmode”, “opaque”,

poniedziałek, 11 luty 2008

DataGrid - sortowanie Dat

Cd. problematycznego sortowania w DG. Tym razem sposób na sortowanie dat:

private function sortDates(a:Object, b:Object):Number{
   var date1:Date = new Date(a.dataCzasReal);
   var date2:Date = new Date(b.dataCzasReal);
   if(date1<date2)
     return -1
   else if(date1>
date2)
     return 1;
   else return 0;
}

Zmiana koloru czcionki w komórce DataGrida

Chcąc zmienić kolor czcionki prezentowanej zawartości datGrida w zależności od jego wartości należy skorzystać z ItemRenderera

<mx:DataGridColumn headerText="wartosc"
itemRenderer="sciezkaDoKomponentu.ColorComponent" />


ItemRenderer


public class ColorComponent extends Label{
   override public function set data(value:Object):void
   {
      if(value != null)
      {
         super.data = value;

       if(value.wartosc == "1") { //okreslamy dla jakiej wartosci
         setStyle("color", 0x0000FF) ;

      }
      else if(value.wartosc =="2"){
         setStyle("color",0x000000);
      }
      else {
         setStyle("color", 0x0000FF);
      }
   }
}

DataGrid - sortowanie liczb

W 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

Chcąc mieć kolumnę posortowaną numerycznie należy dołączyć własną funkcję sortowania:

private function sortFunc(a:Object, b:Object):Number{
  if (a.lp==null) {a.lp="0"}
  if (b.lp==null) {b.lp="0"}
   var lp1:int= parseInt(a.lp);
   var lp2:int= parseInt(b.lp);
   if (lp1 <>
    return 1;
   }else if (lp1 >lp2){
    return -1;
   }else{
    return 0;
   }
  }

i dołączyć ją do kolumny którą chcemy sortować w ten sposób:

<mx:DataGridColumn headerText="Lp" labelFunction="lpLabelHandler" sortable="true" width="45" sortCompareFunction="sortFunc" />

Button - enabled - zależność od 2 czynników

Zdarzyć się może, że możliwość klikania na guzik chcemy dać użytkownikowi kiedy spełnione są 2 warunki np.
Wykonanie akcji na danym elemencie dataGrida
1) kiedy wybrany jest jakiś obiekt z DataGrida (selectedItem!=null)
2) kiedy nie wykonano wcześniej tej operacji na wybranym elemencie DataGrida

Stworzyć taką zależność można za pomocą poniższego kodu:

enabled="{(DG.selectedItem != null)?(DG.selectedItem.jakiesPole!='WartoscWstawianaPoAkcjiGuzika'):false}"

poniedziałek, 4 luty 2008

ComboBox z XMLa - wyciąganie wartości

Zakładając że każdy wie jak podłączyć ComboBox do XMLa, pomijam tę część.
W notce tej chciałabym pokazać w jaki sposób wyciągnąć wartość z XMLowego ComboBoxa.

ComboBox wygląda tak:

&gtmx:ComboBox id="comboBoxId" dataProvider="{jakisXml}" labelField="nazwaPolaWyswietlanego" dataField="nazwaPolaWyswietlanego" />

W tradycyjny sposób czyli za pomocą
comboBoxId.selectedItem dostaniemy
&gttag>zawartosc>/tag>

Aby dobrać się do zawartości bezpośrednio nalezy skorzystac z metody text(),czyli

comboBoxId.selectedItem.nazwaPolaWyswietlanego.text();