§表示画面について


 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の中で自由に変更が出来ます。 オブジェクトが大量にあるときは、サイズを小さく(ドットを細かく)すると作業が楽になると思います。

Panel Painter

PanelPainter


 ARAGOの右端に並んでいるツールバーはこのPANELで使用できるオブジェクトです。 同じものはメニュのオブジェクト->パネルオブジェクトにあります。 オブジェクトを置く前に、このPANELを左ボタンでクリックしてさい。 このオブジェクトの(このPANELの)オプションを指定するためのダイアログが表示されます。 コマンドのところで指定するものは以外は、すべてDEFINE PANELのオプションです。 コマンドはこのパネルが選択されたときに呼ばれるON SELCTION PANELが呼ぶプログラムの指定と、 このPANELをACTIVATEするときのオプションがあります。 とりあえず適当に指定してみてください。
ではこのオプションダイアログの右下にあるCode Tipsをクリックしてみてください。 このPANEL PAINTERで作成された現在のプログラムが表示されます。

 では、ARAGOの右側にあるツールバーから適当なオブジェクトをクリックし、PANELに貼り付けてください。
右ボタンでこのオブジェクトのダイアログ、右下にはCode Tipsがありますね。 それぞれのオブジェクトやPANELなどのダイアログの基本的な考え方はまったく同じです。 ただオブジェクトの上にマウスを持っていくとマウスカーサが人差し指になりますね、 そのまま少し待つと、現在のこのオブジェクトのプログラムコードを表示します。

Code Tips

                       codetip


 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


PANEL DIALOGに複数のSheetを表示します。 SHEET、PAGEにそれぞれのオブジェクトを使うことができます。
SHEET SHEETを定義します。

Yes

Yes

No

PAGE SHEET上に表示されるそれぞれのPAGEを指定します。

Yes

Yes

No


PANEL、DIALOGで右ボタンをクリックしたときにPOPUPウィンドウを表示します。
POPUP POPUPウィンドを定義します。

Yes

Yes

No

BAR POPUPウィンドウで選択されるアイテムを定義します。

Yes

Yes

No


表示されないその他のオブジェクト
TIMER 経過時間をとるためのタイマーを定義します。

Yes

Yes

No

SENDMAIL 送信用のメイルを定義します。

Yes

Yes

No


PANELに使用するときに、アプリケーションウィンドウのメニュやツールバーを定義するオブジェクト
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で書かれたサンプルがCDのPOBJECTの下にあります。 サンプルをいろいろ変更して、理解してください。


パネルペインタの制限事項   

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の内部で公開されていないところを使っているため、 現在のところ修正できません。