日別アーカイブ: 2011年8月30日

spark系のComboBoxの扱い

MX系とSpark系ではコンポーネントが色々違うが、今回ComboBoxでハマった。 MX系のComboBoxは編集に関するフラグがあるがSpark系はこれが無い。 どうも、editable=falseのComboBoxはDropDownListを使うらしい。 そして、このComboBoxの編集を利用する場合、例えば初期設定で、labelに りんご、みかん、いちご と言う3項目を用意しておいて、それを選択しても良いし、直接「ぶどう」と書き込んでも良い様にしておいた場合、この値をDBへ渡す為にはどうしたら良いか? 色々試行錯誤して落ち着いたのが以下の方法 ※dataはPHPサービスへ渡すオブジェクトでhoge_comboがComboBoxだ。 var data:Object=new Object; var temp:*;     temp=hoge_combo.selectedItem;     if (temp is String)     {      data.hoge_name = hoge_combo.selectedItem;     }     else     {      data.hoge_name = hoge_combo.selectedItem.label;     } つまり、編集して入力した場合と、選択した場合では渡す物が異なるのでこの二通りに対応してく必要があると言うことだ。表示欄のtextのプロパティを用意しておいてくれれば良いのにと思うが何故かこれが無いので、こう言う方法になる。 逆に、今回初めて、「prompt」と言うプロパティがあって、これに「-選択又は入力-」と入れておくと、空の時はこれを表示してくれると言う便利な機能がある事を知った(笑) 習うより慣れろだ。

カテゴリー: Flash Builder, 仕事 | コメントは受け付けていません。

ZendAMFとFlashBuilder

ZendAMFを使ったPHPとFlashBuilderの連携もなんとか手懐けて来た。 結局、データとサービスを利用してデータベースの構造から自動的にPHPサービスを作成する方法は止めた。 これでサービスを作るとわけわからんASのクラスが沢山できるのと、PHP側のスクリプトの出来が悪いからだ。 通常、mySQLを利用する様になっているのだが、自動的に作られるPHPサービスはmysqliを利用するようになっている。 これがイマイチ使い勝手が良くないし、せっかく、ZendFrameworkを利用しているのに、高機能なDB廻りのコンポーネントが利用出来ない。 ということで、自身でZend_DB辺りを使ったPHPサービスを作ったが、これが非常に簡単。 基本的にはZend_Db::factory(‘Pdo_Mysql’,$this->params)と言ったDB関係の初期化を行うクラスを作り、それを継承する形でサービスのクラスを用意すれば良い。 アンダーバーのあるファイル名は駄目な様だ。 このクラスの中に必要なメソッドを書けばOK。 例えば、下の3行でtblで設定したテーブルからデータを検索してくれる。  public function getAllhoge_Master()  {   $sql=’select * from ‘.$this->tbl;   $this->db->setFetchMode(Zend_Db::FETCH_ASSOC);   return $this->db->fetchAll($sql);  } この様な形でサービスクラスを用意すれば、FlashBuilder側のデータとサービスで新規PHPサービスから利用すれば自動的にAS関係のクラスを用意してくれるので、適当にバインドすれば良い。 以前、WEBORBでRemoteObjectを設定したり、もっと前のPHPOBJECTを利用していた時代を考えると構築の早さと手間は格段に違う。 簡単な動作確認ならばFlashBuilderの「操作をテスト」である程度の事は出来るし、場合によってはPHP側で以下の様なログファイル作成メソッドを用意しておいて必要に応じて渡された変数を確認するなどすれば簡単にデバッグ出来る。 function logMe($var)  {   $filename = dirname(__FILE__) . ‘/__log.txt’;      if (!$handle = fopen($filename, ‘a’)) { … 続きを読む

カテゴリー: Flash Builder, 仕事 | コメントは受け付けていません。