オブジェクトにアクセスするには
イベントプロシージャにおいて、オブジェクトにアクセスすることは、最も
基本的な事柄です。いろいろな場合における、オブジェクトへのアクセス方
法を説明します。
- プロシージャ関数に渡される引数によるアクセス
プロシージャ関数に渡される引数によるアクセスは、
イベントプロシージャが貼られているクライアントオブジェクト
にアクセスする場合に利用します。
- オブジェクト管理を利用したアクセス
イベントプロシージャが貼られているクライアントオブジェクト
以外の他のオブジェクトにアクセスする場合に利用します。
- 外部変数による直接アクセス
イベントプロシージャが貼られているクライアントオブジェクト
以外の他のオブジェクトにアクセスする場合に利用します。
イベントプロシージャの移植性が低下します。
プロシージャ関数に渡される引数によるアクセス
イベントプロシージャに渡される引数を利用すると、イベントプロシージャ
が貼られているクライアントオブジェクトにアクセスすることができます。
#----------------------------------------------------------
#Function for the event procedure
#----------------------------------------------------------
use mwt;
sub event_procedure {
my ($object) = @_;
#オブジェクトへアクセス
$object->setProperty("labelString","HELLO WORLD");
}
1;
object 変数がそのクライアントオブジェクトを格納する変数です。
このオブジェクトに対して操作を行う場合、この object に対して
使用したい API を呼び出します。
オブジェクト管理を利用したアクセス
オブジェクト管理インスタンス(ロードモジュールにつき、一つ存在)に対し
て要求すると、アクセスしたいオブジェクトを取得することができます。外
部変数アクセス(下記参照)の場合と異なり、コンパイル時にシンボルのリン
クをを伴いません。したがって、画面の構成によらない柔軟なプログラムを
行うことができます。
オブジェクト管理クラス | インスタンス取得関数 |
mwt::WSCbaseList | mwt::WSCbaseList mwt::WSGIappObjectList() |
アクセスしたいオブジェクトの取得は、次の様に行います。
#----------------------------------------------------------
#Function for the event procedure
#----------------------------------------------------------
use mwt;
sub event_procedure {
my ($object) = @_;
# オブジェクト管理によるインスタンスの取得(その1)
$obj = mwt::WSGIappObjectList()->getInstance(
"WSCvlabel", # ラベルクラス
"newvlab_001"); # newvlab_001 という名称
# 得られたラベルに対するアクセス
$obj->setProperty("labelString","HELLO WORLD");
# オブジェクト管理によるインスタンスの取得(その2)
$obj2 = mwt::WSGIappObjectList()->getInstance(
"WSCbase", # どのクラスかを特定しない
"newvlab_002"); # newvlab_002 という名称
# 得られたラベルに対するアクセス
$obj2->setProperty("labelString","HELLO WORLD");
}
1;
obj もしくは obj2 がアクセスしたいオブジェクトです。クラス名称とオブ
ジェクト名称を引数にします。もしクラス名を特定したくない場合は、
"WSCbase" を与えてください。この場合はすべてのオブジェクトが検索対象
となります。
外部変数による直接アクセス
オブジェクトを外部変数参照定義すると、外部変数としてアクセスできます。
外部変数定義は、アプリケーションビルダユーザーズガイドの
[外部変数として可能なオブジェクトとするには]の節を参照下さい。
#----------------------------------------------------------
#Function for the event procedure
#----------------------------------------------------------
user mwt;
sub event_procedure {
my ($object) = @_;
# newvlab_001 に対して直接アクセス
$newvlab_001->setProperty("labelString","HELLO WORLD");
}
1;
Document Release 3.80 for WideStudio ver 3.80, Jan 2005 WideStudio documents index | 目次
|