
§表示画面について
dBXLでは表示画面はPROMPT画面でした。その中にWINDOWと呼ばれる、PROMPTウィンドウを小さくしたものを定義できました。 この考え方はOS/2に近い考え方のようです。
ARAGO DOSはARAGO for Windowsと同じようにDEFINE PANELとなりましたが、画面サイズを80文字X25文字とした@...SAY...GETで座標を決めているため全ての位置が文字単位です。 Windowsになるとフォントのサイズが自由に指定でき、またフォントによっては横幅も可変になりました。 このためARAGO for Windowsでは全ての画面オブジェクトの位置をPIXLE単位に変更になりました。 過去との互換性のため文字単位での座標でも表示、動作はします。
1. PANELとDIALOG
さて、ARAGO for Windowsでは表示する画面として、PANELとDIALOGが有ります。 PANAELもDIALOGもどちらもWindowsでいうWindowですが、動作も目的も異なります。
PANELは選択されると(マウスでクリックしたりしたり、TABで移動してフォーカスがあたると)そのPANELのMENUやTOOLBARが表示されます。 DIALOGにはこれらのMENUやTOOLBARが有りません。 しかし、Windowの下にあるStatus
バーにPANELもDIALOGも選択されると指定されたメッセージを表示することは出来ます。
では、どのように使い分けるかですが、PANELはMENUなどが有りますので、一般の入力や、表示の画面に使います。 DIALOGはどちらかと言うと補助的な画面として使われます。
PANELとDIALOGのもうひとつの違いは、DIALOGはアプリケーション画面の一番手前にいつも表示されます。 PANELは一般的に、入出力画面、 DIALOGは参照用の画面や、警告、確認などの画面に使用されます。
ARAGOには以上の二つのウィンドウ以外にFORMウィンドウがあります。 FORMウィンドウは印刷するためのウィンドウです。 このFORMの指定するサイズでFORMに表示されているオブジェクトをプリンタに印字します。
2. ACTIVATEの方法
DEFINE PANELやDEFINE DIALOGで定義された画面は、 ACTIVATEコマンドで初めて表示されます。 このACTIVATEコマンドには、MODALとMODELESSのオプションがあります。 MODALのモードでオープンするとアクティブなダイアログを終了しないと、それ以外のパネルやダイアログを選択できなくさせます。
MODELESSでは他のパネルなどに自由に移動することが出来ます。
おわかりになりましたでしょうか? 例えば今入力した値の確認などは、その確認をユーザーに求めているのにそれを無視されては、プログラムで入力された値が正しいのかどうか判断できません。 そこでMODALでオープンすると、そのDIALOGやPANELを終了しない限り、別のPANELやDIALOGに移動できません。
PANELにもDIALOGにもACTIVATEにNOESCAPEオプションがあります。
NOESCAPEを指定すると、ESCキーを押してもダイアログはクローズされません。 表示されているPANELやDIALOGがESCAPEで終了されては困るときに使います。 NOESCAPEを指定しないときは、そのDIALOGやPANELで処理される値の初期値をそのプログラムの前で設定してください。 このDIALOGやPANELの処理プログラムで、必要な選択がされESCAPE以外で終了するときには、この初期値を変更することでESCAPEで終了されていないことがわかります。
3. PANEL、DIALOGのオプション
DEFINE PANEL、DIALOGには次の二つのオプションがあります。
[NOSYSTEMMENU] コントロールボックスを表示しません。
[NOCLOSE] コントロールボックスをクリックしてもダイアログをクローズしません。
どちらも同じ目的に使います。 このコントロールボックスとはDIALOGやPANELの右上の隅にある X 印のことです。
PANELの時にはクローズされた事を調べるのにON EVENT CLOSEが有ります。
§はじめてのPANEL PAINTER
ウィンドウを設計するためのツールであるPANEL PAINTERを起動してみましょう。
ARAGOのメニュのファイル->新規作成(N)->パネルペインタで作業用の編集画面が表示されますね。まだここでは作成しようとするPANELかDIALOG、FORMのいずれも指定されていません。 そこでこのPANEL
PAINTERのメニュからオブジェクト->新規作成でPANELを選んでみてください。
編集画面にウィンドウらしきものが表示されましたね。 このウィンドウの画面にはきれいに並んだドットがあります。 これはこれから作業するオブジェクトを整列させるための基準位置です。 この整列させるための基準サイズは、表示->Painter Settingの中で自由に変更が出来ます。 オブジェクトが大量にあるときは、サイズを小さく(ドットを細かく)すると作業が楽になると思います。
ARAGOの右端に並んでいるツールバーはこのPANELで使用できるオブジェクトです。 同じものはメニュのオブジェクト->パネルオブジェクトにあります。 オブジェクトを置く前に、このPANELを左ボタンでクリックしてさい。 このオブジェクトの(このPANELの)オプションを指定するためのダイアログが表示されます。 コマンドのところで指定するものは以外は、すべてDEFINE PANELのオプションです。 コマンドはこのパネルが選択されたときに呼ばれるON SELCTION PANELが呼ぶプログラムの指定と、 このPANELをACTIVATEするときのオプションがあります。 とりあえず適当に指定してみてください。
ではこのオプションダイアログの右下にあるCode Tipsをクリックしてみてください。 このPANEL PAINTERで作成された現在のプログラムが表示されます。
では、ARAGOの右側にあるツールバーから適当なオブジェクトをクリックし、PANELに貼り付けてください。
右ボタンでこのオブジェクトのダイアログ、右下にはCode Tipsがありますね。 それぞれのオブジェクトやPANELなどのダイアログの基本的な考え方はまったく同じです。 ただオブジェクトの上にマウスを持っていくとマウスカーサが人差し指になりますね、 そのまま少し待つと、現在のこのオブジェクトのプログラムコードを表示します。
|
|
PANELもDIALOG、FORMも基本的にはまったく同じように作成することが出来ます。 異なることは使用できるオブジェクトが少し違うことです。
又,DIALOGとして動作し簡単な選択項目、例えばOKとかに使うためにMESSAGEBOXがあります。 いくつかの選択項目のみでしたら簡単に使えます。
※ DEFINE WINDOWはPANELと同じ動作をしますが互換性のためにだけあります。 使わないでください。
オブジェクトのリスト
| オブジェクト名 | 目的 |
PANEL |
DIALOG |
FORM |
| TEXT | テキストの表示 @...SAY..に相当します。 |
Yes |
Yes |
Yes |
| ENTRYFIELD | 文字数値などの入力 @...GET...に相当します。 |
Yes |
Yes |
No |
| BARCODE | バーコードを表示 |
Yes |
Yes |
Yes |
| BOX | BOXを表示 オブジェクトをグループ化するのに利用できます。 |
Yes |
Yes |
Yes |
| CIRCLE | 円、弧を表示 弧を利用してグラフを書くこともできます。 |
Yes |
Yes |
Yes |
| IMAGE | .BMP .JPGなどの画像ファイルを表示 |
Yes |
Yes |
Yes |
| INDICATOR | 処理の進行度の表示用 |
Yes |
Yes |
Yes |
| LINE | 任意のサイズの線を表示 グラフに利用できます。 |
Yes |
Yes |
Yes |
| VIDEO | .AVIファイルを表示実行 |
Yes |
Yes |
No |
| WEB BROWSER | Web BROWSERを表示 指定したWebサイトを表示します。 |
Yes |
Yes |
No |
| BMPBUTTON | PUSHBUTTONと動作は同じですが、イメージを貼り付けることができます。 |
Yes |
Yes |
No |
| PUSHBUTTON | いくつかの選択条件を複数のプッシュボタンで処理します。 |
Yes |
Yes |
No |
| RADIOBUTTONS | 複数の条件の中から、ひとつの条件を選択 |
Yes |
Yes |
No |
| CHECKBOX | その条件を選択するかしないか |
Yes |
Yes |
No |
| COMBOBOX | スクロールするメニューアイテムからのユーザー選択入力を受け入れるパネルオブジェクトです。 |
Yes |
Yes |
No |
| LISTBOX | 複数のメニューアイテムを表示しどれかを選択するパネルオブジェクトです。 |
Yes |
Yes |
No |
| BROWSE | BROWSE画面を表示します。 |
Yes |
Yes |
No |
| EDIT | EDIT画面を表示します。 |
Yes |
Yes |
No |
| EDITOR | 編集用のエディタ画面を表示、 テキストでも、MEMOフィールドでも使えます。 |
Yes |
Yes |
No |
| SHEET | SHEETを定義します。 |
Yes |
Yes |
No |
| PAGE | SHEET上に表示されるそれぞれのPAGEを指定します。 |
Yes |
Yes |
No |
| POPUP | POPUPウィンドを定義します。 |
Yes |
Yes |
No |
| BAR | POPUPウィンドウで選択されるアイテムを定義します。 |
Yes |
Yes |
No |
| TIMER | 経過時間をとるためのタイマーを定義します。 |
Yes |
Yes |
No |
| SENDMAIL | 送信用のメイルを定義します。 |
Yes |
Yes |
No |
| TOOLBAR | ツールバーを定義します。 |
Yes |
No |
Yes |
| TOOLBAR BUTTON | ツールバーのボタンを定義します。 |
Yes |
No |
Yes |
| ACTIONBAR CHOICE | メニュー項目を定義します。 |
Yes |
No |
Yes |
| PULLDOWN | メニュー項目に対応するPULLDOWN メニューを定義します。 |
Yes |
No |
Yes |
| PULLDOWN CHOICE | プルダウンメニューのメニューアイテムを定義します。 |
Yes |
No |
Yes |
PANEL PAINTERで同時に編集できるのはPANEL、DIALOG、FORMどれでもひとつだけです。 複数を定義すると同じPRGファイルに全ての定義を記述します。 必ずひとつだけを記述し作業てください。
作成されたPRGをエディタで編集するときは、別のファイルにコピーした上で作業してください。
パネルペインタはPRGに記述されている全てのシンタックスをパースし、 もしシンタックスの誤りがあると勝手に修正します。
画面などのデザインをするときはパネルペインタで作業してください。 同じオブジェクトを複数定義するときに、自動的につけられる名前を利用するときは、PUSH1 PUSH2となりますが、 記述した順番になります。
できるだけそれぞれの目的に合った名前を自分で付けられることをお勧めします。
パネルペインタが作成したコードを修正するときの注意
パネルペインタで作成されたPRGファイルは *|| でいくつかの領域に分けています。
*|| は StartとEndでひとつの領域です。
*|| Start Painter Setting : No Editing until End of Painter Setting.
ここの領域はユーザーが編集することができません。
*|| End of Painter Setting.
* TODO : add Setting code here
ここに必要な初期設定などのコードを書いてください。
例
SET TALK OFF
SET LANGUAGE TO JAPAN
SET DATE TO JAPAN
SET EXACT ON
etc.
*|| Start Painter Prologue : No Editing until End of Painter Prologue.
ここの領域はユーザーが編集することができません。
SET FONT MIN10 TO OF ;
"MS 明朝", 10
*|| End of Painter Prologue.
* TODO : add Prologue code here
ここに必要な前処理的なコードを書いてください。
*|| Start Painter : No Editing until End of Painter.
ここの領域はユーザーが編集することができません。
DEFINE PANEL PANEL2 ;
FROM 0.0, 0.0 TO 400.0, 600.0
TITLE"BOX";
COLOR Silver
ON SELECTION PANEL PANEL2 ;
DO PR1
DEFINE BOX BOX4 OF PANEL2 ;
FROM 108.0, 438.0 TO 270.0, 541.0 ;
TITLE "DOWN" ;
CENTER DOWN ;
COLOR Black ;
FONT MIN10
ACTIVATE PANEL PANEL2 ;
MODAL
*|| End of Painter.
* TODO : add Main Program code here
ここに必要なメイン処理コードを書いてください。
*|| Start Painter Epilogue : No Editing until End of Painter Epilogue.
ここの領域はユーザーが編集することができません。
*|| End of Painter Epilogue.
* TODO : add Epilogue code here
ここに必要な終了前の処理コードを書いてください。
*|| Start Painter UDF : No Editing until End of Painter UDF.
ここにUDF処理コードを書いてください。
PROCEDURE PR1
IF PANEL() = "PUSH1"
DEACTIVATE PANEL PANEL2
ENDIF
RETURN
*|| End of Painter UDF.
* TODO : add UDF code here
§DEBUGGERについて
ARAGOにはデバッガがあります。 デバッガを実行すると別のARAGOを実行しそのARAGOをターゲットにしてプログラムを実行します。
BREAK POINTの設定、変数の表示、設定、どこまで実行するかなどいろいろな機能があります。ぜひ試してみてください。 ただし、複数のパネルを使用して、パネルを行き来しているときに、正確な変数を返さないことが特殊な条件で発生することがあります。
二つのProcess間で処理とWinows自体との関係で発生するようなのですが、 Windowsの内部で公開されていないところを使っているため、 現在のところ修正できません。