値または状態を保持できるウィジェットには getter と setter のルーチンが用意されています。この付録では、ウィジェットごとに使用できる getter と setter を一覧します。これらのルーチンはツールキットに依存しません。getter と setter を使用するには、最初にウィジェットを含んでいるグループを定義し、次にスマートコードのコールバック を設定する必要があります。この処理の詳細については、以下の章を参照してください。
getter と setter でアクセスできる X リソースの名前が、ウィジェットごとに表形式で示されています。表中のリソースのうち、1 つはデフォルトです。これは、サーバーからアクセスされるリソースです。サーバーは、ウィジェットの「 値」の取得や設定を行うだけですが、デフォルトとはこの「値」のことです。
C、C++、および Java コードに対して getter と setter を使用する例も、ウィジェットごとに示されています。
広範囲に渡るオンラインドキュメントが用意されています。内容の一覧を見るには 、HTML ブラウザで次のファイルを開いてください。
$VISUROOT/lib/locale/<YourLocale>/sc/index.html
ここで、VISUROOT は Sun WorkShop Visual のインストールディレクトリであり、<YourLocale> はユーザーが使用しているロケールです。自分のロケールがわからない場合には、端末ウィンドウに locale と入力してみてください。これによってロケール情報が出力されます。出力された内容のうち、LANG に割り当てられた文字列を使用します。ロケールの例を次に示します。
また、いったんコードを生成すると、コードが生成されたディレクトリに index.html というファイルが作られます。このファイルにはハイパーテキストリンクが含まれており、このリンクから オンライン資料にアクセスできます。
C のコードでは、SC_GET と SC_SET のマクロを使用します。これらのマクロは、最初の引数としてリソース名 (つまり、取得/設定しているもの) を受け取り、2 番目の引数としてグループコンポーネントを受け取ります。SC_SET の場合には、3 番目の引数は新しく設定する値になります。詳細については、第 16 章「取得と設定用のスマートコード」を参照してください。
次の例では、ラベルの値を取得および設定します。「label1」はグループ mygroup のメンバーです。
char * val = SC_GET(Value,mygroup->label1);
SC_SET(Value,mygroup->label1,"my label");
int1 |
||
C のコードでは、SC_GET と SC_SET のマクロを使用します。これらのマクロは、最初の引数としてリソース名 (つまり、取得/設定しているもの) を受け取り、2 番目の引数としてグループコンポーネントを受け取ります。SC_SET の場合には、3 番目の引数は新しく設定する値になります。詳細については、第 16 章「取得と設定用のスマートコード」を参照してください。
次の例では、トグルの状態 (オンまたはオフ) を取得および設定します。「toggle1」と「toggle2」は、グループ mygroup のメンバーです。
int state = SC_GET(State,mygroup->toggle1);
SC_SET(State,mygroup->toggle2, state);
C++ では、グループはクラスです。グループメンバーは、このクラスの変数であり、クラスでもあります。gett er と setter は、グループメンバーのクラスのメソッドです。
次の例は、上述の C のコード例と同様に一方のトグルの状態を取得し、他方のトグルの状態を設定します。「toggle1」と「tog gle2」は、グループ mygroup のメンバーです。
mygroup_c * g = (mygroup_c *) getGroup();
int state = g->toggle1->getState();
g->toggle2->setState(state);
テキスト制御用の getter と setter は、 groups_c/sc_types.h で定義された SC_GET() マクロと SC_SET() マクロを介して使用できます。
C のコードでは、SC_GET と SC_SET のマクロを使用します。これらのマクロは、最初の引数としてリソース名 (つまり、取得/設定しているもの) を受け取り、2 番目の引数としてグループコンポーネントを受け取ります。SC_SET の場合には、3 番目の引数は新しく設定する値になります。詳細については、第 16 章「取得と設定用のスマートコード」を参照してください。
次の例では、テキストの値 (つまり、内容) を取得および設定します。「text1」はグループ mygroup のメンバーです。
char * contents = SC_GET(Value,mygroup->text1);
SC_SET(Value,mygroup->text1,"a new string");
C のコードでは、SC_GET と SC_SET のマクロを使用します。これらのマクロは、最初の引数としてリソース名 (つまり、取得または設定しているもの) を受け取り、2 番目の引数としてグループコンポーネントを受け取ります。SC_SET の場合には、3 番目の引数は新しく設定する値になります。詳細については、第 16 章「取得と設定用のスマートコード」を参照してください。
次の例では、スケールウィジェットの値 (つまり、スケール上の数値) を取得および設定します。「scale1」はグループ mygroup のメンバーです。
int val = SC_GET(Value,mygroup->scale1);
SC_SET(Value,mygroup->scale1, 1);
C のコードでは、SC_GET と SC_SET のマクロを使用します。これらのマクロは、最初の引数としてリソース名 (つまり、取得/設定しているもの) を受け取り、2 番目の引数としてグループコンポーネントを受け取ります。SC_SET の場合には、3 番目の引数は新しく設定する値になります。詳細については、第 16 章「取得と設定用のスマートコード」を参照してください。
次の例では、リストウィジェットの選択した項目のリストを取得および設定します 。「list1」はグループ mygroup のメンバーです。選択した項目のリストは、ヌルで終わっている文字列配列です。
char ** my_stringlist = SC_GET(SelectedItems,mygroup->list1);
SC_SET(SelectedItems,mygroup->list1,a_new_stringlist);
C++ では、グループはクラスです。グループメンバーは、このクラスの変数であり、クラスでもあります。gett er と setter は、グループメンバーのクラスのメソッドです。
次の例は、上述の C のコード例と同様にリストウィジェットの選択項目を取得および設定します。「list1」はグループ mygroup のメンバーです。選択した項目のリストは、ヌルで終わっている文字列配列です。
mygroup_c * g = (mygroup_c *) getGroup();
char ** my_stringlist = g->list1->getSelectedItems();
g->list1->setSelectedItems(a_new_stringlist);
Java では、グループはクラスです。グループメンバーは、このクラスの変数であり、クラスでもあります。gett er と setter は、グループメンバーのクラスのメソッドです。
次の例は、上述の C のコード例と同様にリストウィジェットの選択項目を取得および設定します。「list1」はグループ mygroup のメンバーです。配列内に存在する文字列の数を調べるには、Java に内蔵されている「<配列>.length」を使用してください。
mygroup_c g = (mygroup_c ) getGroup();
String [] my_stringlist = g.list1.getSelectedItems();
int how_many = my_stringlist.length;
g.list1.setSelectedItems(a_new_stringlist);
SelectionByName2 |
||
C のコードでは、SC_GET と SC_SET のマクロを使用します。これらのマクロは、最初の引数としてリソース名 (つまり、取得/設定しているもの) を受け取り、2 番目の引数としてグループコンポーネントを受け取ります。SC_SET の場合には、3 番目の引数は新しく設定する値になります。詳細については、第 16 章「取得と設定用のスマートコード」を参照してください。
次の例では、オプションメニューの選択項目を取得および設定します。「optionMen u1」はグループ mygroup のメンバーです。
char * val = SC_GET(SelectionByName, mygroup->optionMenu1);
SC_SET(SelectionByName,mygroup->optionMenu1, "Option 1");
C++ では、グループはクラスです。グループメンバーは、このクラスの変数であり、クラスでもあります。gett er と setter は、グループメンバーのクラスのメソッドです。
次の例は、上述の C のコード例と同様にオプションメニューの選択項目を取得および設定します。「optionMenu1」はグループ mygroup のメンバーです。
mygroup_c * g = (mygroup_c *) getGroup();
char * val = g->optionMenu1->getSelectionByName();
g->optionMenu1->setSelectionByName("Option 2");
Java では、グループはクラスです。グループメンバーは、このクラスの変数であり、クラスでもあります。gett er と setter は、グループメンバーのクラスのメソッドです。
次の例は、上述の C のコード例と同様にオプションメニューの選択項目を取得および設定します。「optionMenu1」はグループ mygroup のメンバーです。
mygroup_c g = (mygroup_c ) getGroup();
String val = g.optionMenu1.getSelectionByName();
g.optionMenu1.setSelectionByName("Option 3");
SelectionByName3 |
||
C のコードでは、SC_GET と SC_SET のマクロを使用します。これらのマクロは、最初の引数としてリソース名 (つまり、取得/設定しているもの) を受け取り、2 番目の引数としてグループコンポーネントを受け取ります。SC_SET の場合には、3 番目の引数は新しく設定する値になります。詳細については、第 16 章「取得と設定用のスマートコード」を参照してください。
次の例では、ラジオボックスウィジェットの選択項目のラベルを取得および設定し ます。「radiobox1」はグループ mygroup のメンバーです。
char * str = SC_GET(SelectionByName, mygroup->radiobox1);
SC_SET(SelectionByName,mygroup->radiobox1, "The text to show");
C++ では、グループはクラスです。グループメンバーは、このクラスの変数であり、クラスでもあります。gett er と setter は、グループメンバーのクラスのメソッドです。
次の例は、上述の C のコード例と同様にラジオボックスウィジェットの選択項目のラベルを取得および設定します。「radiobox 1」はグループ mygroup のメンバーです。
mygroup_c * g = (mygroup_c *) getGroup();
char * str = g->radiobox1->getSelectionByName();
g->radiobox1->setSelectionByName("The text to show");
Java では、グループはクラスです。グループメンバーは、このクラスの変数であり、クラスでもあります。gett er と setter は、グループメンバーのクラスのメソッドです。
次の例は、上述の C のコード例と同様にラジオボックスウィジェットの選択項目のラベルを取得および設定します。「radiobox 1」はグループ mygroup のメンバーです。
mygroup_c g = (mygroup_c ) getGroup();
String str = g.radiobox1.getSelectionByName();
g.radiobox1.setSelectionByName("The text to show");