CSVDocument

Q1
Packageクラスで作成したコンストラクタを共通部品として利用したい
[内容]
内部文字コードにunicodeを利用するため、CSVDocuemntのコンストラクタを利用したいがPackageクラスでコンストラクタを利用するにはどうすればよいか
A1

[解決方法]
コンストラクタで指定した場合、Packageのメンバ変数としての参照はできませんが、CSVDocumentのコンストラクタを作成するためのクラスを用意し、CSVDocumentのコンストラクタを作成、更にAppendメソッドで作成したクラスの子オブジェクトに設定する事でCSVDocumentのコンストラクタを参照することができます。

なお、Biz/Browser V ver5.0.3.0以降では、ValueTypeによるUnicode指定が行えます。


[サンプルコード] ※記述ポイント抜粋
【Package1.crs】
Package Package1 { 
 Class CsvDoc extends Form {
  var CsvDoc_d1  = new CSVDocument(CSVDocument.unicode);
  var CsvDoc_d2  = new CSVDocument(CSVDocument.unicode);
  if ( !$DESIGNTIME ) {
   /* CsvDocオブジェクトが作成された際、子オブジェクトとして
   オブジェクトツリーへ接続 */
   Append(CsvDoc_d1 ,"CsvDoc_d1");
   Append(CsvDoc_d2 ,"CsvDoc_d2");
  }
 }
}

【Form1.crs】
import "Package1.crs";
Form Form1 {
・・・・略
/*
    CSVDocument「CsvDoc_d1」と「CsvDoc_d2」を子オブジェクトに持つ
   Package1パッケージのCsvDocクラス(Form)を配置
 */ 
 CsvDoc CsvDoc1 {
  X = 4;
  Y = 95;
  Width = 119;
  Height = 41;
  BgColor = $FFFFCC;
 }
・・・・略
 Button Button1 {
  X = 7;
  Y = 316;
  Width = 178;
  Height = 56;
  Title = "FlexViewへデータロード";
  
  Function OnTouch( e ) {
   var session = getHttpSession();
   /* CsvDoc_d1、CsvDoc_d2へUNICODEデータをロードします*/
   ^.CsvDoc1.CsvDoc_d1.load(
   new TextConverter(session.get("unicode1.csv"), "UTF-8", "UNICODE"));
   ^.CsvDoc1.CsvDoc_d2.load(
   new TextConverter(session.get("unicode2.csv"), "UTF-8", "UNICODE"));
   /* FlexViewへデータをロードします */
   ^.FlexView1 << ^.CsvDoc1.CsvDoc_d1;
   ^.FlexView2 << ^.CsvDoc1.CsvDoc_d2;
  }
 }

実際の挙動については、CRSファイル形式のサンプル
   「Packageクラスで作成したコンストラクタを共通部品として利用したい(Csv_005.zip)」
をご確認ください。

管理番号:Csv_005
 
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ