Package

Q1
パッケージを複数の開発者で作りたい
[内容]
パッケージでの定義が多いので、複数の開発者で1パッケージを作成したい



       

A1
[解決方法]


ここでは、「Keihi_Touroku.crs」「Keihi_Sakujo.crs」の2つのファイルで『Keihi_Package』を
定義するケースを考えてみます。




  Keihi_Touroku.crs、Keihi_Sakujo.crsで『Keihi_Package』を定義します。

  ファイル名と同じ名前の派生クラスやRecordオブジェクトが定義されている場合、
  パッケージ名と異なるファイル名でパッケージを定義することが出来ます。






  All_Package.crsに空のパッケージ(All_Package)を定義し、Keihi_Touroku.crs、
  Keihi_Sakujo.crsをimportします。





  All_Package.crsをimportすることで、Keihi_touroku.crs、Keihi_Sakujo.crsに定義した
  Keihi_Packageをロードし、参照することが可能になります。



[サンプルコード]
【サンプルファイルの説明】
 ・Form1.crs(パッケージを利用するファイル)
 ・All_Package.crs(パッケージとして他のファイルをまとめるためのCRS)
 ・Keihi_Touroku.crs、Keihi_Sakujo.crs(Keihi_Packageを定義するCRS)
 
■サンプル 
<Keihi_Touroku.crs>
Package Keihi_Package{
    class Keihi_Touroku extends String{
    }
    Number flg;
}
 

<Keihi_Sakujo.crs>
Package Keihi_Package{
    class Keihi_Sakujo extends Button{
        Function OnTouch(e){
            MessageBox("パッケージのテスト", "Test");
        }
    }
}


<All_Package.crs>
import "Keihi_Touroku.crs"
import "Keihi_Sakujo.crs"
Package All_Package{
}


<Form1.crs>
import "All_Package.crs";
Form Form1 {

    Keihi_Sample.flg = 1; /* パッケージ名で修飾したオブジェクト */

    Keihi_Sakujo mbButton1{

        Title = "Keihi_Sampleパッケージで定義したKeihi_Sakujoクラスのボタン";
    }
}
 
 
 
※複数ファイルで1つのパッケージを定義する場合の注意点

複数のCRSファイル内で同名の派生クラスを定義しないようにご注意ください。
後から読み込んだ定義ファイルの定義全体がロードされません。


<Keihi_Touroku.crs>
Package Keihi_Package{
    class Keihi_Touroku extends String{
    }
    Number flg = 1000;
    
    /* Keihi_Sakujo.crsで定義されている派生クラスが
       重複して定義されている */
    class Keihi_Sakujo extends Label{
        Value = "ラベル";
    }
}
 

<Keihi_Sakujo.crs>
Package Keihi_Package{
    class Keihi_Sakujo extends Button{
        Width = 100;
        Height = 25;
        Function OnTouch(e){
            MessageBox("パッケージのテスト", "Test");
        }
    }
    
    Number g_flg = 2000;
}


<All_Package.crs>
import "Keihi_Touroku.crs"
import "Keihi_Sakujo.crs"
Package All_Package{
}


<Form1.crs>
import "All_Package.crs";
Form Form1 {

    Button mbButton1{
        Title = "Keihi_Packageパッケージのflg変数、g_flg変数の参照";

        Function OnTouch( e ) {
            try{
                MessageBox( "Keihi_Packageパッケージのflg変数の値は、"
                      + str(Keihi_Package.flg) + " です" );

                /* Keihi_Sakujo.crsはKeihi_Touroku.crsの後importされて
                   いるため、定義全体がロードされず、g_flgの値は参照で
                   きません */
                MessageBox( "Keihi_Packageパッケージのg_flg変数の値は、"
                      + str(Keihi_Package.g_flg) + " です" );
            }catch( e ){
                MessageBox( e.message );
            }
        }
    }
}

CRSファイル形式のサンプルを
  「Package定義サンプル(Package.zip)
よりご利用いただけます。

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