Magic xpa 2.xでは、オンラインタスクのGUIは、Win32ではなく.NETフレームワークに基づいています。
.NETフレームワークでは、前のバージョンでサポートされていた外観とコントロールの動作を全てサポートする訳ではないため、実行時の表示に違いが発生します。
大きな違いを以下に説明します。
注意: |
このトピックでは、Magic uniPaaS V1Plusの既存機能との違いについてのみ説明しています。Magic xpaの新機能については説明していません。新機能の説明は、Readmeを参照してください。 |
フォーム状態の維持は、リッチクライアントタスクと同じ値(フォーム名ではなく Yes/No)で定義します。
この変更により、フォーム状態を維持する場合、フォームのユニークIDのリストを維持する必要がなくなり、[ユーザ状態の維持]特性を設定するだけで単純化されました。
オンラインタスクのフォームとモデル特性で以下のように変更されました:
[フォーム状態識別]特性が削除されました。
[ユーザ状態の維持]特性が追加されました。
注意: |
この変更のために、既存のユーザのフォーム状態は無視されます。 |
オンラインタスクの実行時のMDIフレームは、メインプログラムのGUI表示フォームとして定義します。
この変更により、同じ場所でフォームの特性を定義できるようになりました。
以下の特性が変更されました:
メインプログラムの[タスク特性]の[ウィンドウ表示]特性によってMDIを表示するかどうかを定義します。
[タスク特性]の[メインフォーム]特性に複数のMDIフレームフォームを定義することで、実行時に動的にMDIフォームを切り替えることができます。
メインプログラムの[タスク特性]には、[プロジェクト実行タイプ]と呼ばれる新しい特性が追加されました。これは、Magic xpa Studio でプロジェクトの実行(Ctrl+F7)を実行すると、オンラインで実行するか、リッチクライアントで実行するかを指定します。
[ウィンドウタイトル]や[システムプルダウンメニュー]、[アイコンファイル名]の各特性は、[アプリケーション特性]から削除され、MDIフレームの特性として定義するようになりました。[アプリケーション特性]の[ウィンドウタイトル]特性の値が空白になっている場合、MDIフォームの[フォーム名]特性にプロジェクト名を定義する必要があります。 [ウィンドウタイトル]特性で倫理名を使用している場合、MDIフォームの[フォーム名]特性で式として定義する必要があり、Translate()関数を使用する必要があります。
MDIクライアントエリアは、フォーム特性で指定された色が使用され、開発者によって任意に制御することができます。Ver1.xと同じようなクライアントエリアの色で表示させるには、背景色を「ウィンドウの背景」のシステム色に設定した色を設定するようにしてください。
MDI子ウィンドウのフォームは、MDIフレームより大きくできません。これらのフォームは、実行中は大きさが調整されます。
MDI子ウィンドウのフォームは、MDIフレームより大きくできません。これらのフォームは、実行時にサイズが変更されます。
MDIのプルダウンメニューは、複数行メニューをサポートしません。
アプリケーションがMagic xpa Studioから実行され、2つのモニターがPCに接続されている場合、実行時のMDIが毎回、最初からオープンされるため、モニターっを指定して開くことができません。
MDI上のコントロール …… Magic uniPaaS Ver1.xでは、メインプログラムのフォームをMDI上に表示し、スタティックコントロールを表示させることができましたが、このような機能は現在サポートされません(フォームにコントロールを配置することはできますが、実行時に表示されません)。
Magic エンジンに組み込まれていたMDIは、削除されました。これは、以下のことを意味しています。
開始アプリケーションが定義される場合だけ、実行エンジン(MgxpaRuntime.exe)を起動させることができます。
実行エンジンは、動作環境を修正するエディタ機能を提供していません。
環境設定(例えば動作環境や基本色、フォントなど)の修正やユーザ権利の設定は、以下の方法で行います。
Magic xpa Studioの使用
テキストエディタの使用
INIGetとINIPut関数を利用した専用のプログラムの作成
設定用のテーブルを開くために使用される内部イベントは、サポートされなくなりました。
注意: |
実行版のインストール時に[環境設定ツール]を選択すると Magic xpa Studioのエンジンモジュールがインストールされます。このダイアログを使用して動作環境の設定を行うことができます。 |
ActiveX、OLE、長方形、楕円、水平スライダーと垂直スライダーの各コントロールは、サポートされません。.NET相当、またはサードパーティのコントロールを使用することができます。Windowsフォーム上でのActiveXコントロールの使用は、.NETコントロールでラッピングすることで可能になります。Microsoftは、ActiveXコントロールから.NETコントロールを作成するために、aximp(ActiveX コントロール インポータ)ユーティリティを提供しています。
[テキスト(ラベル)]コントロールは、[長方形]コントロールのように表示させるために使用することができます。
モデルにAcitveXやOLEまたはスライダの各コントロールを定義した場合、変換されたプロジェクトの[モデル]リポジトリでも表示されます。これらのモデルは削除する必要があります。
変換処理によってフォームに定義された[スライダ]コントロールは自動的に削除されます。しかし、スライダのコントロール特性で使用されているデータ項目や式は存在しているため、構文チェッカーを実行すると警告メッセージが表示されます。
ActiveXとOLEのコントロールは、移行処理を行ってもそのまま残りますが、構文チェックでエラーになります。ActiveXコントロールを使用したい場合は、aximpユーティリティを使用して.NETラッバーを作成する必要があり、ActiveXコントロールの代わりにフォーム上に.NETコントロールを配置する必要があります。
注意: |
フォームに表示されないCOMオブジェクトの使用は、変更する必要はありません。Magic uniPaaS V1/V1Plus と同じようにサポートされます。 |
リストボックス、コンボボックス、タブ、グループ、リッチエディットの各コントロールの[水平整列]特性は、サポートされません。
[スタイル]と[境界]特性ではサポートされなくなった値があります。
GUI表示コントロールの[左辺位置]と[上辺位置]の各特性は、[X]と[Y]に変更されました。
コンテナコントロールの背後のコントロールの表示 …… コントロールがコンテナコントロールに配置された場合、コンテナコントロールにリンクされていなければ、コントロールは実行時に表示されません。具体的には以下のようになります:.
[タブ]コントロールの場合 …… (特定のレイヤにリンクしていないことにより)コントロールをすべてのタブ上に表示させることはできません。
[テーブル]コントロールの場合 …… カラムタイトルの上にコントロールを配置することはできません。タイトル領域の上にコントロールを配置したり、カラムの上にコントロールを配置したり、別のカラムに配置したり、コントロールをカラム幅を越えて拡大させることができません。
コンテナコントロールにリンクされたコントロールの[位置]特性 ……コンテナコントロールにリンクされたコントロールの[位置]特性の値は、(Magic uniPaaS ではフォームでしたが)コントロールに依存します。これは以下のことを意味します。
コンテナコントロールにリンクされたコントロールの場所([X]および[Y]特性)で使用されている式は、正しく動作せず、変わる場合があります。
コンテナコントロールにリンクされたコントロールの[位置]特性の値は、 正しく動作せず、変わる場合があります。
立体コントロールの背景色は、(Magic uniPaaSでは、一部のコントロールが白または灰色で表示されていました)指定された色が表示されます。
Zオーダ …… コンテナコントロールにリンクされていないコントロールは、コンテナコントロール上には表示されません。プロジェクトを移行するとき、設定されたZオーダは残りますが反映されません。コンテナコントロールの上に表示されるコントロールは、コンテナコントロールに自動的にリンクされます。
TrueTypeと限定されたOpenTypeのフォントのみサポートされます。Magic xpa Studioでは、非TrueTypeフォントを表示させることができますが、、実行時は自動的にTrueTypeフォントに変わります。これらを置き換えるまで、構文チェッカーは非TrueTypeフォントに対するエラーを表示します。
フォントの傾きは、[ラベル]コントロールとカラムヘッダのみサポートされます。(サポートバージョン:2.4)
Magic uniPaaS のオンラインタスクでは、[コントロール特性]の式は、再計算が発生すると、式にデータ項目が使用されていなくても常に評価されました。この動作は変更され、コントロール特性の式は、変更されたデータ項目を持つ場合だけ再評価されるようになりました。 該当する特性は以下の通りです:色, コンテキストメニュー, データ, 有効, フォント, 書式, 高さ, 範囲, 可視, 幅, X, Y
[.NET]コントロール
Magic xpaのデータ項目を[.NET]コントロールの特性にリンクさせることができます。[.NETのバインディング宣言]特性を参照してください。(サポートバージョン:2.2)
[.NET]コントロールの[データ]特性は、コントロールに関連したデータ項目または式を保持するようになりました。以前のバージョンでは、[データ]特性は、.NETオブジェクトの参照特性として使用されていました。(サポートバージョン:2.2)
.NETモデルとコントロールには、以下の特性が追加されました:選択項目リスト、選択表示リスト、ソーステーブル、表示項目、リンク項目、インデックス、範囲。(サポートバージョン:2.2)
[チェックボックス]コントロール
[チェックボックス]コントロールの[複数行]特性は、[表示]特性が「ボタン」の場合はサポートされません。
[コンボボックス]コントロール
コンボボックスの[高さ]特性は、変更できません。コンボボックスのフォントサイズに依存するようになりました。
[エディット]コントロール
以下の特性は、[エディット]コントロールでサポートされません。
拡張ウィンドウ …… デフォルトの内部ウィンドウとしてサポートされ、任意のサイズで定義することはできません。前のバージョンで、拡張ウインドウが使用されている場合、変換ユーティリティで削除されません。手動で削除することができます。
スクロールバー
[水平スクロール]特性には、「ワードラップ」の値が設定されます。
[エディット]コントロールに割り当てられた項目をイベントによって更新した場合、更新値はコントロールを抜ける前に表示されます。
数値の計算設定(コントロールでの'2+'のような記述)はサポートされません。
[色]特性に設定された値がパーキングしている時に表示されます。
[グループ]コントロール
テキストがコントロールに設定されていなくても、グループの上辺線の位置はコントロールのフォントサイズによって設定されます。[グループ]コントロールの最上位に線を表示させたい場合は、サイズが'1'のフォントを使用する必要があります。
[イメージ]コントロール
以下の特性は、[イメージ]コントロールではサポートされません。
イメージ効果
パーキング/修正関係の特性 …… 次の特性がオンライン用の[イメージ]コントロールから削除されました。このため、実行時に[イメージ]コントロールからズームして、ファイルを選択することができなくなりました。
必須入力
修正可
選択プログラム
起動モード
ヘルプ画面
自動ヘルプ
パーキング可
TABで移動
TAB移動方向
TAB順序
.TGAのイメージフォーマットはサポートされません。
[イメージ]コントロールの[スタイル]特性のデフォルト値は、「境界なし」になります。
[プッシュボタン]コントロール
ハイパーテキスト・ボタンは、デフォルト色を内部の色テーブルではなくCLR(Common Language Runtime)から取得します。
オンラインタスクでの[プッシュボタン]コントロールの[ボタンスタイル]特性には、「イメージ上テキスト」のオプションが無くなりました。これは、リッチクライアントと同じように動作します。ボタンに表示するテキストは、[書式]特性で定義され、ボタンイメージがデータ項目や(データ項目が定義されていない場合)[デフォルトイメージ]特性によって定義されます。
変換ユーティリティは、「イメージ上テキスト」に設定されたコントロールをイメージボタンに変換します。
[ラジオボタン]コントロール
[表示]特性が「ボタン」に設定された場合、[ラジオボタン]コントロールの[複数行]特性はサポートされません。
[RTFエディット]コントロール
[RTFエディット]コントロールには、デフォルトのコンテキストメニューがありません。エンドユーザがRTFの色やフォントを変更できるようにさせたい場合は、メニューにMagic xpaの内部イベント(例えば、「色の変更」や「フォントの変更」、「左揃え」、「右揃え」)を定義し、このメニューをコントロールの[コンテキストメニュー]特性に割り当てることで実現できます。
[RTFエディット]コントロールは、透過の背景色をサポートしません。
[RTFテキスト]コントロール
[RTFテキスト]コントロールは、透過の背景色をサポートしません。
[スタティック]コントロール
オンラインタスクでの[テキスト]コントロールの名前は、[ラベル]コントロールに変更されました。
以下の特性は、[スタティック]コントロールではサポートされません:
スタティックタイプ
線幅
線種
[サブフォーム]コントロール
[非表示での再表示]特性がオンラインタスクでも追加されました。
この特性は、Magic uniPaaS Ver1.9 と同じ方法で[サブフォーム]コントロール内で実行するタスクを読み込み、再表示することができます。
Yes …… ホストタスクの[レコード前]の後で最初と、各サブフォームが再表示されると、サブフォームタスクが呼び出されます。これは、サブフォームがコンテナコントロールに配置され、Magic uniPaaS V1Plusでコンテナコントロールが非表示の場合と同じように動作します。
No …… サブフォームが表示される場合のみ、サブフォームタスクが呼び出されます。これは、サブフォームの[可視]特性が指定されたMagic uniPaaS V1Plusと同じように動作します。
「No」が定義されているネストされたサブフォームの場合、親サブフォームが実行時に「True」と評価されると、ネストされたサブフォームも「True」として動作します。
サブフォームがコンテナコントロールに配置され、[可視]特性も定義された場合、Magic uniPaaS V1Plusで[可視]特性と同じ式が定義されている場合と同じように動作します。
さらに、このバージョンまでは、[サブフォーム]コントロールをクリックすると、最初のコントロールの[コントロール前]と[コントロール後]が常に実行されていました。この動作は修正され、クリックされたコントロールの[コントロール前]だけが実行されるようになりました。
サブフォームの[可視]特性に式が設定されている場合、サブフォーム・タスクにフォーカスがある場合、この式は"False"(サブフォームを非表示にする)として動作しません。この動作を有効にするには、CtrlGoto関数を使用してフォーカスを親タスクの方へ移し、親タスクで処理され、サブフォームの可視を制御する式を変更するイベントを[ウェイト]特性が「No」で発行する必要があります。
[サブフォーム]コントロール上で実行しているオンラインタスクが実行できない場合、そのタスクは終了しサブフォームは非表示となりますがホストタスクは実行状態で継続します(以前は、ホストタスクも終了していました)。例えば、[空のデータビュー許可]特性が「No」に設定され、[登録]特性が「No」に設定されている場合、タスクは終了しサブフォームは閉じますが、親タスクはそのまま実行します。(サポートバージョン:2.4)
[タブ]コントロール
[タブラベル位置]特性の左右のオプションは削除されました。
タブにデフォルト値が定義されていない場合、最初のタブが選択され表示されます。
[テーブル]コントロール
スタイル、ウィンドウ内テーブル、最終区切線、幅固定の各特性はサポートされません。
[テーブル]コントロールで[リストボックス]コントロールを配置することはできません。
[カラムのマーキング ]特性は、削除されました。
テーブルカラムの区切り線をダブルクリックしてもカラムの大きさは変更されなくなりました。
テーブル内でパークしている際、マウスのスクロールのみが可能です。
[ツリー]コントロール
[ツリー]コントロールは、マルチマーキング、ドラッグ&ドロップまたは透過の背景色をサポートしません。
Magic uniPaaSの分割フォームが定義されたタスクを移行すると、フレームセットフォームが追加されます。このフォームは、フレームの1つで、既存のフォームへの参照定義が含まれています。
移行後に、以下の処理を行う必要があります。
他のフレームに対して手動で呼び出すプログラムを定義し、[コール]処理コマンドの定義を削除します。.
呼び出されるプログラムの[タスク特性]の[タスク終了条件]特性(Level(1)='RP'または、Level(1)='TP'が定義されています)を修正します。
分割フォームのモデルは2つのモデルに変更されます。一つはフレームセット用、もう一つは表示されるフォーム用です。フォームがコンポーネントに定義されたフォームモデルを定義している場合、表示フォームモデルを表示フォームに手動で割り当てる必要があります。
GUI表示フォームの[左辺位置]と[上辺位置]の各特性は、[X]と[Y]の特性に変更されました。
フォームの[開始位置]特性が「デフォルト」に設定されている場合、Magic uniPaaS とMagic xpaでは、オンラインタスクのフォームサイズが異なります。
.TGAイメージは、フォームの[背景]特性でサポートされません。
モーダルウィンドウ
データ項目またはコントロールの[選択プログラム]特性を使用してプログラムが呼び出される場合、[ウィンドウタイプ]はモーダルとなり、MDI子ウィンドウ(MDIとして実行した場合)やフロート(SDIで実行した場合)で表示されません。
モーダルウィンドウは、並行プログラムの実行を停止し、Magic uniPaaS V1Plusでのアプリケーションモーダルというウィンドウタイプと同じように動作します。
[ウィンドウタイプ]から「アプリケーションモーダル」は削除されました。(サポートバージョン:2.2)
MDI調整ウィンドウ
[ウィンドウタイプ]が「MDI調整」として定義されたプログラムが、「SDI」として定義された別のプログラムから呼び出される場合、MDI調整プログラムはアプリケーションMDIに表示されます。
分割フォーム
[ウィンドウ分割]特性と[ウィンドウタイプ]特性の「分割子ウィンドウ」はサポートされません。その代わりに新しいフレーム機構を使用することができます。
プログラムまたはバッチタスクを分割子ウィンドウ内で実行させることはできません。
[フレーム特性]から呼び出されたプログラム/タスクにパラメータを渡すことができ、これらのパラメータを変更すると自動的に再表示されます。
2つ以上のフレームが配置されている場合、親タスクから直接複数のプログラムを呼び出すことができます。
注意: |
|
GUIレイヤがWin32からWindowsフォームに変更されたため、外部ツール(例えばget.dll)でMagicフォームとコントロール上で行われるいかなる操作も動作しません。
CtrlHWND()とWinHWND()関数は、FromHandle()関数を使用している.NETライブラリを参照するために使用することができる.NETオブジェクトのハンドルを返します。 これらのオブジェクトを参照する既存のWin32のUDF/UDP dllは、動作しません。
以下の関数は、サポートされなくなりました:
CLeftMDI
CTopMDI
HitZOrdr
SplitterOffset
DirDlg()関数 …… .NETライブラリ内の DirDlg関数を実装したことにより、タイトルとフラグのパラメータがサポートされなくなりました。
Cleft()とCTop()関数は、(リッチクライアントと同じように)CX()とCY()関数に置き換わりました。CX()とCY()関数は、すべてのタスクタイプで利用できます。
以前のオンラインタスクでは、式にデータ項目が使用されていなくても、関数(によっては(例えばInTransとViewMod)、常に再評価されました。この動作は変更され、式が変更された項目を使用している場合だけ、再評価されます。
以下の通りにすることで、レコード移動時は以前のように動作させることができます。
変数項目([データビューの一部]を「No」に設定)をプログラムに追加します。
[レコード前]で変数をFalseに更新します。
ViewMod()では、以下の条件を指定した式イベントによるロジックユニットを追加します。
ViewMod(0) AND A<>ViewMod(0) [A:変数項目]
ロジックユニット内で、ViewMod(0)で、変数項目を更新します。
InTrans()では、[コントロール修正]イベントに対する[イベント]ロジックユニットを追加します。
ロジックユニット内で、変数項目をInTrans()で更新します。
これだけです。これで、項目はそれに応じて更新され、フォーム上で使用することができます。
[前面表示]特性は、サポートされません。Magic uniPaaS V1Plusでは、[MAGIC_SPECIALS]セクションのSpecialOldZorderパラメータを「Y」に設定した時だけ表示されていました。
以下のタスクモードは、オンラインタスクでサポートされなくなりました:削除、位置付、範囲、キー、ソート、ファイル、オプション。
SDIのウィンドウタイプは、並行実行のプログラムでなくても指定できます。
並行実行でないプログラムがSDIウィンドウで実行した場合、(他のウィンドウの場合のように)親タスクを閉じると、ウィンドウが閉じることを意味します。
実行時は、EscボタンをクリックしてもSDIウィンドウは閉じません。Escを使用してSDIウィンドウを閉じるためには、Escを押下すると[ウィンドウを閉じる]イベントを発行するロジックユニットを作成してください。
SDI実行モード
[動作環境]ダイアログの[実行モード]から「SDI」が削除されました。
SDIスタイルで実行するためにMDIウィンドウを表示させないようにするには、メインプログラムの[タスク特性]の[ウィンドウを開く]特性を「No」に設定します。
[メディア]カラムの「コンソール」タイプは、サポートされなくなりました。Ver1.xのプロジェクト内でコンソール・メディアが定義されているタスクは、[プレビュー]特性が「Yes」に設定された「GUI形式プリンタ」に変更されます。
オンラインタスクの実行時に使用できる組み込み型のエンドユーザ機能の一部がサポートされなくなりました。
この機能には、範囲や、位置付、インデックス変更、ソートとデータ出力の各機能が含まれています。
これらの特性はまだ[タスク特性]ダイアログに表示されていますが、実行エンジンで処理されません。
新しいコンポーネントが追加され、範囲や、位置付、ソートとデータ出力の各機能をよりよいGUIで提供されます。このコンポーネントは、ソースコードも提供されるため、任意に変更することができます。
範囲と位置付を実行している間、式エディタを開くことができません。
ステータスバーには、ユーザ名が表示されなくなりました。
[コントロール]特性の[選択プログラム]特性から呼び出されたタスクは、必ずモーダルウィンドウで表示されます。
画面やビューの再表示のタイミングが変更されたため、以下ような動作で値が変更されない場合があります。
[エディット]コントロールの[データ]特性の式でユーザ定義関数を使用した場合、フィールドの移動による再計算処理が実行されません。式には、内部関数や演算子を使用するように変更してください。
ViewMod関数やInTrans関数の結果の値は即、'False'に変更されるため。各フィールドに対する[項目変更]ロジックユニット(または、コントロールに対する[検証]ロジックユニット)を定義して、その中でViewMod関数の値を変数項目に格納するようにしてください。
F10キーに対する[イベント]ロジックユニットの動作が、Magic uniPaaSと異なります。Magic xpaでは[エディット]コントロール以外に[イベント]ロジックユニットが定義されている場合、ロジックユニットの実行後にカーソルがメニューバーに移動します。
以下の環境設定は、サポートされなくなりました。
実行時のカスタムコピーライト(RtUserCopyright)
コピーライトメッセージ表示 (CopyrightMessages)
GUI実行時ツールバー (RtToolBarGUI)
イメージキャッシュサイズ(ImageCacheSize)
イメージキャッシュ (ImageCacheCheckTime)
インデント文字(IndentCharacters)
日付入力 (InputDate)
ロゴファイル(LogoFile)
プルダウンメニュータイムアウト(MenuCloseTimeout)
MDIClientEdge
MDIClientImageFile
MDIClientImageStyle
[MAGIC_SPECIALS]セクションの以下の特殊設定は、サポートされなくなりました。
Special3DStyle
SpecialAsyncCOMEvents
SpecialBatchOptions
SpecialCenteredFloatingWindow
SpecialExitControlOnClick
SpecialExitNoParkable
SpecialFlat2DCombo
SpecialNoSplash
SpecialOldWinRunner
SpecialOldZorder
SpecialPaintFormInCreate
SpecialShowDBLogin
[dbMAGIC_ENV]セクションの以下の特殊設定は、サポートされなくなりました。
EnableRefreshAction
WriteCheckerLog …… 通常機能として組み込まれていますが「Y」を設定するとログファイルが作成されます。
DisableTransparent
TrimParamDSQL
VCGetUnit
以下のユーティリティはサポートされなくなりました。
Mg2Mgic