オブジェクトにアクセスするにはイベントプロシージャにおいて、 オブジェクトにアクセスすることは、最も基本的な事柄です。 いろいろな場合における、オブジェクトへのアクセス方法を 説明します。
プロシージャ関数に渡される引数によるアクセスイベントプロシージャに渡される引数を利用すると、 イベントプロシージャが貼られているクライアントオブジェクト にアクセスすることができます。
void event_procedure(WSCbase* object){
//オブジェクトへアクセス
object->setProperty(WSNlabelString,"HELLO WORLD");
}
object ポインタがそのクライアントに対する WSCbase* ポインタです。
WSCbase クラスのAPIを利用できますが、派生クラスのAPIを
利用したい場合は、クラスポインタの取得の節を参照下さい。
オブジェクト管理を利用したアクセスオブジェクト管理インスタンス(ロードモジュールにつき、一つ存在)に 対して要求すると、アクセスしたいオブジェクトを取得することができます。 外部変数アクセス(下記参照)の場合と異なり、コンパイル時にシンボルのリンクを を伴いません。したがって、画面の構成によらない柔軟なプログラムを 行うことができます。
アクセスしたいオブジェクトを取得は、次の様に行います。
#include "WSCbaseList.h" //WSGIappObjectList() にアクセスする...
...
void event_procedure(WSCbase* object){
//オブジェクト管理による WSCbase ポインタの取得(その1)
char* class_name = "WSCvlabel"; //ラベルクラス
char* obj_name = "newvlab_001"; //newvlab_001 という名称
WSCbase* obj = WSGIappObjectList()->getInstance(class_name,obj_name);
//WSCbase* クラスポインタによるラベルに対するアクセス
obj->setProperty(WSNlabelString,"HELLO WORLD");
//オブジェクト管理による WSCbase ポインタの取得(その2)
char* class_name2 = "WSCbase"; //どのクラスかを特定しない
char* obj_name2 = "newvlab_002"; //newvlab_002 という名称
WSCbase* obj2 = WSGIappObjectList()->getInstance(class_name2,obj_name2);
//WSCbase* クラスポインタによるラベルに対するアクセス
obj2->setProperty(WSNlabelString,"HELLO WORLD");
obj もしくは obj2 がアクセスしたいオブジェクトです。
クラス名称とオブジェクト名称を
引数にします。もしクラス名を特定したくない場合は、"WSCbase" を
与えてください。この場合はすべてのオブジェクトが検索対象となります。
外部変数による直接アクセスオブジェクトを外部変数参照定義すると、外部変数としてアクセスできます。 外部変数定義は、アプリケーションビルダ使用t手引、オブジェクト編の [外部変数として可能なオブジェクトとするには]の節を参照下さい。
#include "WSCvlabel.h" //WSCvlabel クラスを直接触るので、インクルード。
...
void event_procedure(WSCbase* object){
//外部変数の extern 宣言
extern WSCvlabel* newvlab_001;
//WSCvlabel* クラスの newvlab_001 に対するアクセス
newvlab_001->setProperty(WSNlabelString,"HELLO WORLD");
Document Release 2.0 For Use with Wide Studio Release 2.0, Spring 2002
|