Archive for the 'flex' Category

set selectedItem w ComboBox Flexa

Kiedy z bazy danych pobieramy hm, dane, a któraś z kolumn przybiera wartości z pewnego niewielkiego zbioru (jak np. dla typu ENUM w MySQL), to w formularzu edycji rekordu chcielibyśmy zwykle użyć komponentu ComboBox do edycji tej kolumny. Problem polega na tym, że ComboBox nie ma prostej metody do ustawiania zadanej wartości. Można owszem ustawić selectedItem, ale tylko przekazując jeden z obiektów z dataProvidera Combo. Nie taki sam obiekt, ale ten sam. Tyle że wygodniej jest przekazać wartość, np. pobraną ze wspomnianej bazy. No i niech etykieta (label) Combo ustawi się sama. Oto rozszerzenie ComboBoksa, które robi co trzeba:

<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml">
    <!--
    komponent SmartComboBox z automatycznym ustawianiem selectedIndex
    na podaną wartość
    licencja: do swobodnego wykorzystania
    -->
    <mx:Script>
        <![CDATA[
            protected var _myDP:Object;
            [Bindable]
            public function set value(v:*):void
            {
                var found:Boolean = false;
                for(var i:int = 0; (i < dataProvider.length) && !found; i++) {
                    if(v == _myDP[i].data) {
                        selectedIndex = i;
                        found = true;
                    }
                }
                if(!found) throw(new Error(”invalid value ” + v + ” for SmartComboBox.”,99));
            }
            [Bindable]
            override public function set dataProvider(v:Object):void
            {
                _myDP = v;
                super.dataProvider = v;
            }
        ]]>
    </mx:Script>
</mx:ComboBox>

AMFPHP i błąd 403 - Forbidden

Długo szukałem rozwiązania problemu, jaki pojawił się po przeniesieniu aplikacji AMFPHP z Windows na Linuksa. Skrypt gateway.php wywoływany z ‘palca’, czyli z URLa http://serwer/gateway.php odpowiadał prawidłowo. Browser już gorzej - nie wyświetlał prawego panelu z listą metod, a FireBug poproszony o przedstawienie odpowiedzi serwera napisał o błędzie 403 - Forbidden. Ciekawe, że w Google nie znalazłem nic konkretnego, na jednym tylko forum wskazówkę, że chodzi o prawa dostępu. To akurat było łatwe do wydedukowania. Śledztwo wykazało winnego - w skrypcie /core/shared/util/MethodTable.php, w linii 164 wywoływana jest funkcja touch($sourcePath) , gdzie $sourcePath wskazuje na nazwę uruchamianej usługi. Wystarczy ustawić Apaczowi prawo do zapisu pliku usługi (np. /services/Usluga.php) i od razu jest lepiej.

Piszą o AMFPHP na flashzone.pl.

wyrażenia regularne w AS3 i HTML

Przy okazji obsługi tekstu wielokolumnowego ze stylami CSS i automatycznym dzieleniem na strony i ramki tekstowe pojawił się problem HTMLa. Kiedy tekst przelewa się z jednej ramki (TextField) do drugiej, trzeba obsłużyć zamykanie tagów na końcu pierwszej ramki i otwieranie ich na początku drugiej. Ponieważ praca jest w trakcie, to na razie tylko tyle, że znalazłem stronę do testowania wyrażeń w AS3, zrobioną we fleksie.

A wyrażenia, jakimi zbieram z tekstu otwierające i zamykające tagi:

openTag     = /<\s*(\w+)([^>]*[^/])?>/gi;
closeTag    = /</(\w+)\s*>/gi;

Next Page »