![]() |
||
| WideStudio Application Builder User's Guide(Perl言語) | ||
|---|---|---|
ユーザダイアログ簡単なユーザダイアログの作成WSCdialog を利用して簡単なユーザダイアログを作成してみましょう。次の様 な機能をもっているものとします。![]() [ユーザダイアログを使ったサンプル] ユーザダイアログのポップアップ制御サンプルをもとにユーザダイアログのポップアップ制御をみていきましょう。 ダイアログは、入力、 もしくは表示を行うための専用ウィンドウとしてよく用いられます。したがっ て、通常のウィンドウとして作成すると都合の悪い場合があります。たとえば、 複数の場所(イベントプロシージャ)から、同じダイアログを呼び出したいとし ます。この場合、通常のウィンドウとして実装していると、ダイアログの入力が終っ た場合の通知を受けるのが複雑になります。 しかしながら、ダイアログで実 装している場合では、ダイアログ入力終了が、popup メソッドによる完了復帰 で同期がとられるので、簡単にイベントプロシージャから、ダイアログ入力の 制御が行えます。 図は、表示されたウィンドウが結果を返す場合のウィンドウとダイアログの 違いを示しています。 ![]() [ウィンドウとユーザダイアログを使った場合の違い] ![]() [簡単なユーザダイアログの例]
#----------------------------------------------------------
#Function for the event procedure
#----------------------------------------------------------
use mwt;
sub dialogep {
my ($object) = @_;
if ($object->getStatus() != $mwt::WS_DIALOG_OK){ # A
$object->setVisible($mwt::False);
return;
}
$str = $newvifi_003->getProperty("labelString");
if ( $str->getCharPtr() eq "" ){ # B
$msg = mwt::WSGIappMessageDialog();
$msg->setProperty("defaultPosition",$mwt::True);
$msg->setProperty("width",500);
$msg->setProperty("labelString",
"Please input some string to the input field.");
$msg->popup(); # C
return;
}
$val = $newradi_006->getProperty("value");
if ( $val->getLong() == 0 ){ # D
$msg = mwt::WSGIappMessageDialog();
$msg->setProperty("defaultPosition",$mwt::True);
$msg->setProperty("width",500);
$msg->setProperty("labelString","Please select a item of the radio group.");
$msg->popup(); # E
return;
}
$object->setVisible($mwt::False); # F
return;
}
1;
まずイベントプロシージャを張り付けたダイアログのクラスポインタを取得し
ます。なぜかというと、ダイアログクラス固有のgetStatus メソッドにアクセ
スして、押されたボタンの種類を調べるためです。A において押されたボタンをチェックします。OK ボタン以外は、ダイアログを そのまま不可視化します。 B で newvifi_003 に入力されているかチェックします。入力されていない場 合は、C でメッセージダイアログを表示して、終了します。D で newradi_006 が選択されているかチェックします。選択されていない場合は、 E でメッセージダイアログを表示して、終了します。 次に F で入力が正しい場合には、ダイアログを不可視化します。このとき、 このダイアログを不可視化することにより、このダイアログを呼び出している popup メソッドが復帰します。したがって、不可視化しない場合、ダイアログ が終了しません。 次はダイアログを呼び出しているイベントプロシージャの例です。 ![]() [ユーザダイアログを呼び出す画面の例]
#----------------------------------------------------------
#Function for the event procedure
#----------------------------------------------------------
use mwt;
sub btnep {
my ($object) = @_;
$val = $newdial_001->popup();
if ($val == $mwt::WS_DIALOG_OK){
$newvlab_007->setProperty("labelString","DIALOG OK!");
}elsif ($val == $mwt::WS_DIALOG_NO){
$newvlab_007->setProperty("labelString","DIALOG NO!");
}elsif ($val == $mwt::WS_DIALOG_CANCEL){
$newvlab_007->setProperty("labelString","DIALOG CANCEL!");
}
$tmp = $newvifi_003->getProperty("labelString");
$tmp2 = sprintf("INPUT: %s",$tmp->getCharPtr());
$newvlab_010->setProperty("labelString",$tmp2);
$val = $newradi_006->getProperty("value");
$tmp2 = sprintf("SELECT: %s",$val->getCharPtr());
$newvlab_011->setProperty("labelString",$tmp2);
return;
}
1;
Document Release 3.80 for WideStudio ver 3.80, Jan 2005
|
||
![]() |
| バグ情報、ご質問等ございましたら、メーリングリストでご確認の上、 御気軽にこちらの方までよろしくお願いいたします。 |
|
Copyright©WideStudio Development Team,1999-2005
|





