Biz/Browser V互換モード

概要


Biz/Browser DT(以下DT)には初版よりBiz/Browser Vエミュレータ機能が搭載されています。


これはBiz/Browser V実行環境そのものをDTのタブに埋め込む形で動作しており、実行エンジンレベルで完全に独立して動作します。

この方式は高い後方互換性と引き替えにDTの機能を利用することができない弊害がありました。


バージョン1.3.0より、DTの実行エンジン上でBiz/Browser XE(以下XE)用に開発されたアプリケーションを動作させる方法として、互換モードおよび互換パッケージ(クラスライブラリ)が追加されています。

またバージョン1.4.0より、Biz/Browser V(以下V)用に拡張されたバージョンが搭載されています。

../_images/compatible1.png

実行エンジンの互換モード


VとDTの実行エンジンの動作差異を緩和するモードです。


DTでは実行エンジンに様々な改良が施されているため、Vとはスクリプトの実行結果が異なる部分があり、それを旧バージョンと同等の解釈に補正します。


互換クラスライブラリ


Vのクラスセットを再現するライブラリです。


DTでは既存のクラスセットを統廃合し、高機能かつ、シンプルで分かり易い体系に再構成を行いました。


しかしそのため、VのアプリケーションをDTで実行した場合、そのままではクラスが存在しない、プロパティが存在しない、などのエラーが発生し動作させることができません。


Vと同等の機能のクラスやプロパティを実装したクラスセットをDTのクラスセットを拡張する形で実現したものがV互換クラスライブラリとなります。

Vのアプリケーションは互換クラスを介しDTの機能を実行する形となります。

構造上、アプリケーションはVの機能(互換クラスライブラリ)とDTクラスライブラリの双方の機能を利用することが可能です。


またスクリプトの実行、オブジェクト描画もDTのエンジンにより実行されるため、最新の実行環境で既存のアプリケーションを動作させることが可能となります。


互換クラスライブラリ専用定数


バージョン1.4.5より互換ライブラリ実行時は定数 $COMPAT_VERSION に互換ライブラリのバージョン番号が設定されるようになりました。

これにより互換ライブラリ上で実行されているかどうかの判定、また互換ライブラリのバージョンにより処理を分岐させる、などに利用することが可能です。


制約事項


Biz/Browser Vまでの既存の製品では、Windows専用アプリケーションという特性を活かし、Windows固有の機能を活用するように設計されています。


しかし、DTはマルチプラットフォームを指向して開発されており、OS固有の機能差異を無くすため、OS固有機能をなるべく使用しないように設計されています。

そのため、Windows固有の機能を活用した一部の機能は互換クラスライブラリでは再現できません。


互換モードでの初期化


下記、いずれの場合も、初期化時に実行エンジンが互換モードに設定され、自動的に互換クラスライブラリがimportされ、名前空間の指定なしに使用可能な状態(using namespace CRS::Compatible::V51::*された状態)になります。


逆に標準のDTクラスセットのusing namespace指定は解除されますので、互換モード上でDTのクラスを使用する場合は明示的に名前空間を指定する必要があります。


V互換モードでのアプリケーション実行方法


ログイン画面からの実行

../_images/compatible2.png

DT起動時のログイン画面にて、「V互換パッケージ」オプションを選択し、VアプリケーションへのURLを入力し実行します。


Application.loginメソッドからの実行

TARGET_COMPATTAB (新しくタブを開いて実行)または、 TARGET_COMPATWINDOW (新しくウィンドウを開いて実行)オプションを指定します。


コーディング例:

Form frmVLogin {
        x = 0;
        y = 0;
        width = 800;
        height = 600;

        if (!Application.DESIGNTIME) {
                # ここに初期化処理を記述してください。
                Application.login("http://aries/biz/TestSuite41/login.crs", Application.TARGET_COMPATTAB);
        }
}

コマンドラインオプションによる互換モード指定

ショートカットなどの引数として -compatBizV を指定すると、V互換モードとしてDTが起動します。


Biz/Designer DTでの編集、デバッグ


プロジェクト設定

[Biz/Browser V互換モード]チェックをONにした場合、プロジェクト全体をVアプリケーションプロジェクトと見なし、ファイル編集、テスト実行を互換モードで実行します。


旧Biz/Designerプロジェクトのインポート

[既存のプロジェクトを開く...]でBiz/Designer XEまたはBiz/Designer Vで作成されたプロジェクト(bdpファイル)を指定した場合、自動的に[Biz/Browser V互換モード]がチェックされた状態でインポートされます。


bdpファイルは[ファイル名].bakへリネームされ、新しいDT用のプロジェクトファイルに変換されます。


現状プロジェクト個人設定ファイル(bdlファイル)はインポート対象外となりますので、個人設定ファイルに記載されている一部の設定はインポート対象外となります。

V互換モードとBiz/Browser Vとの差異、制限事項


V互換モードはDTのエンジンとクラスライブラリ上で動作しているため、DTの振る舞い・動作に依存する部分があります。


以下、主な差異について記載します。



実行エンジンの動作差異


V互換モードの実行エンジンに起因する差異です。目的に応じて以下の3つに分類しています。


  • 言語仕様・実行モデルの差異: 構文解釈、コンストラクタ、プロパティ、文字列変換など、スクリプト言語そのものの解釈に関する差異

  • UI操作・入力の差異: キー入力、IME、マウス操作、ウィンドウ制御などUI操作に関連する差異

  • ファイルI/O・印刷・通信の差異: 印刷、ファイル、URL取得(HTTP通信)に関連する差異


言語仕様・実行モデルの差異


  1. ガベージコレクションの実行タイミングの違い

    オブジェクトが破棄されることを期待したコーディングは動作タイミングが変わる可能性があります。

    例えばFileオブジェクトなどをCloseせず、スコープを抜けた場合、従来とファイルがクローズされるタイミングが変化する可能性があります。


  2. コンストラクタの引数の厳密化

    Biz/Browser V以前のエンジンではコンストラクタ引数のチェックが緩く、コンストラクタの引数の個数が仕様通りでない場合もエラーとならず動作してしまうケースがありました。

    DTではコンストラクタ引数も厳密に個数のチェックが行われるため、仕様外のコンストラクタ引数を定義している場合エラーとなります。


  3. プロパティ属性の変更

    Biz/Browser V以前のエンジンではプロパティ属性として、生成時(定義時)のみ書き込み可能な属性がありました。

    DTでは定義時のみ書き込み可能な属性は撤廃されたため、生成後も変更可能となっています。


  4. 代入文での暗黙のnew

    Biz/Browser V以前では代入文においてnewを省略する記法が可能でしたが、DTではこの記法は非推奨となります(Biz/Designer DT上では警告表示されます)。

    例:

    var s = String("文字列"); /* new String("文字列")と等価 */
    

  5. 参照演算のタイミング

    Biz/Browser V以前では参照演算の再評価を常時行いますが、DTではパフォーマンス向上のため変更された変数に関してのみ行うため、常時更新されることを意図した式は期待した結果とならない場合があります。

    例:

    value &=  ^.object.calculateValue();
    

    右辺に更新対象の変数がないため、DTでは初回のみ実行されます。


  6. イベントの発生

    イベント発生契機、イベント発生元はクラス派生元のDT実装クラスの発生に依存します。


    DTではクラス別にばらつきのあったイベントを統一化しており、そのためVでは発生しなかったイベントが発生する可能性があります。

    イベントオブジェクトの内容はVと互換性を持つよう調整されますが、上記の通り発生元(fromプロパティ)は元のDT実装クラスに依存します。


  7. var 宣言を条件式のサブ式として使用できない

    Biz/Browser V以前では var 宣言を式の一部として任意の位置に埋め込めますが、Biz/Browser DT互換モードでは var 宣言が使えるのは if / while / for の条件部分そのもののみであり、他の演算子と組み合わせたサブ式としては使用できません。


    例:

    # BizV では動作するが、BizDT では構文エラーになる例
    while( (var node = result.iterateNext()) != null ){
        ^.^.EditBox2.Value += node.xml+"\r\n";
    }
    

    Biz/Browser DTでこのスクリプトを実行すると、以下のコンパイルエラーが発生します。 パーサ実装方式の違いに起因する構文上の制約となります。

    エラー内容:

    Compiler-20:1  構文エラー '('を処理中に無効なシンボル'var'が発見されました
    

    代替案:

    # `var` 宣言をループの外に出し、条件部では通常の代入式にする。
    var node;
    while ((node = result.iterateNext()) != null) {
        ^.^.EditBox2.Value += node.xml+"\r\n";
    }
    


  8. FindChild / FindObject メソッド — クラス識別子指定時に複数の子オブジェクトが該当する場合の検索優先順

    FindChild(cls) / FindObject(cls[, rule]) のようにクラス識別子を指定して検索した場合、対象クラス(またはその派生クラス)に該当する子オブジェクトが複数存在すると、最初に見つかったオブジェクトが1件返されます。


    同一階層に該当クラスのオブジェクトが複数存在する場合、「最初に見つかったオブジェクト」として採用される子オブジェクトの優先順(並び順)がBiz/Browser VとBiz/Browser DTで異なります。


    例:

    Form Form1 {
        Button Button1 { x = 100; y = 100; }
        Button Button2 { x = 50; y = 50; }
    
        if (!Application.DESIGNTIME) {
            var found = FindChild(Button);
        }
    }
    

    上記のように、Form内にButton1、Button2の順で定義した状態でFindChild(Button)を実行した場合の結果は以下のようになります。


    実行環境

    FindChild(Button)の結果

    Biz/Browser V

    Button2(後に定義したオブジェクト)

    Biz/Browser DT (互換モード)

    Button1(先に定義したオブジェクト)


    影響: 同一クラス(または同一の派生関係)の子オブジェクトが複数存在するフォーム等に対し、名前を指定せずクラス識別子のみでFindChild / FindObjectを実行しているスクリプトは、意図しないオブジェクトが取得される可能性があります。該当箇所は、名前を指定したFindChild("オブジェクト名")、または個々のオブジェクトへの直接参照(^.Button1など)への置き換えを検討してください。



  9. グローバル関数(SYSDATE()等)— 宣言以上の引数を渡しても例外が発生しない

    Biz/Browser V ではグローバル関数に宣言された引数個数を超えて呼び出すと例外が発生しますが、Biz/Browser DT 互換モードではこれらのグローバル関数の多くが余剰な引数が渡されても無視されるだけで例外が発生しません。


    代表例として SYSDATE() (引数0個) を挙げます。

    観点

    Biz/Browser V

    Biz/Browser DT 互換モード

    sysdate(1) の呼び出し結果

    例外発生 (「関数 'SYSDATE' の引数が多すぎます。」)

    例外は発生せず、現在日時が返る (余剰引数の 1 は無視される)


    以下のような固定引数のグローバル関数についても、同様の傾向があります。(可変長引数を受け取る関数(StrF、DebugMessage、print、Avg、Max、Min、Std、StdS、Var、VarS、Sum、IRR等)は対象外です)。

    文字列系

    Find, Fullp, Halfp, Lower, Upper, Length, Left, Right, Mid, Replace, Str, Suuji, Trim, Val, Split

    日付系

    Year, Month, Day, Youbi, Hour, Minute, Second, DateDif, DateVal, SYSDATE

    システム/アプリ制御系

    CacheDate, DeleteCache, SetPalette, Link, SetBookMark, RemBookMark, GetBookMark, getHttpSession, findHttpSession, encodeURL, decodeURL, getPrinterList, setDefaultPrinter, ChangeProfile, GetLocaleInfo, HasConnectionLicense, ImportConnectionLicense, syncObject

    数値/数学系

    Abs, Int, Rand, Round, RoundUp, RoundDown, RoundM, Sign, Rank, Or, And, Xor

    財務関数系

    CTerm, DB, DDB, FV, Gankin, Ganri, NPV, PMT, PV, Rate, SLN, SYD, Term


    影響: これらのグローバル関数に対して、引数の数が誤っていることを示す例外の発生を前提としたエラーハンドリングを行っているスクリプトがある場合、Biz/Browser DT 互換モード では例外が発生せず余剰引数が黙って無視されるため、不正な呼び出しに気づけない可能性があります。



  10. Math / Hash クラス — インスタンス化せずクラス名を直接記述した場合、className プロパティが参照できない

    Math.floor()のように、インスタンスを生成せずクラス名を直接記述してメソッド・プロパティを参照する書き方において、className プロパティのみ参照できません。


    観点

    Biz/Browser V

    Biz/Browser DT 互換モード

    Math.className

    参照可能(クラス名の文字列が返る)

    "className" is not found発生

    Hash.className

    参照可能(new Hash()で生成したインスタンスの通常プロパティとして参照可能)

    "className" is not found発生


    影響: Math.className や Hash.className のようにクラス名を直接記述してクラス名文字列を取得しているスクリプトがある場合、Biz/Browser DT 互換モード では参照することができません。クラス名文字列を取得したい場合は、代わりに name プロパティ(例: Math.name)を使用してください。



  11. String / UString クラス — localeCompareメソッドの比較結果がBiz/Browser Vと異なる場合がある

    Biz/Browser VにおけるlocaleCompareは、 ロケールを一切参照しない単純なコードポイント順比較 となっていました。対してBiz/Browser DTでは、実行環境のロケール照合規則に基づく 言語的な比較 が行われます。


    通常の英数字列同士の比較では大きな違いは出ませんが、大文字・小文字のみが異なる文字列、全角/半角の異体字、ひらがな・カタカナのように「言語的には同一視されうる文字」を比較した場合、両者で結果が食い違うことがあります。


    比較例

    Biz/Browser V (コードポイント順)

    Biz/Browser DT (ロケール照合)

    "String型" ⇔ "string型"

    -1 (先頭のS/sの文字コード順で判定)

    1 (符号が反転)

    "String型" ⇔ "STRING型"

    1 (2文字目のt/Tの文字コード順で判定)

    -1 (符号が反転)

    "あ"(ひらがな) ⇔ "ア"(カタカナ)

    0以外(別のコードポイント)

    0(言語的に同一視され等しいと判定)

    "A"(全角A) ⇔ "A"(半角A)

    0以外(別のコードポイント)

    0(言語的に同一視され等しいと判定)


    影響: Biz/Browser V で localeCompare の戻り値の符号(正負)や「0(等価)」判定を前提にソート処理や比較ロジックを実装しているスクリプトがある場合、Biz/Browser DT では異なる結果になる可能性があります。特に大文字小文字混在や全角/半角混在の文字列を含む一覧のソート順が、移行前後で変わる可能性があります。単純なコードポイント順での比較を行いたい場合は、localeCompareの代わりに文字コード同士を直接比較する等の代替実装を検討してください。



  12. CSVDocumentクラス — sortメソッドの文字列比較と並び順の差異

    CSVDocument.sort()は、指定した列の値を比較してCSVデータの行を並べ替えるメソッドです。Biz/Browser VとBiz/Browser DT互換モードでは、セルの文字列を保持する形式と比較方法が異なるため、同じCSVデータを同じキーでソートしても行の順序が一致しない場合があります。


    観点

    Biz/Browser V

    Biz/Browser DT互換モード

    文字列の比較単位

    通常のCSVDocumentはMBCSの文字列をバイト列として比較します。UNICODE指定時はワイド文字列の値を比較します。

    Unicode文字列をUTF-16のコード単位で比較します。

    文字コードの影響

    MBCSの場合は、入力データが使用しているコードページのバイト値が並び順に影響します。日本語環境ではShift-JIS系の順序になる場合があります。

    V互換の読み込み処理では、Shift-JISのデータをUTF-8へ変換してからDTのCSVDocumentへ渡します。そのため、ソート時はShift-JISのバイト値ではなくUnicodeの値が使用されます。

    辞書順

    ロケールに応じた言語的な辞書順ではなく、MBCSではバイト列順、UNICODEではワイド文字の値の順です。

    ロケールに応じた辞書順ではなく、Unicodeのコード単位の順です。大文字小文字、全角半角、合成文字などを言語的に同一視する処理は行いません。

    同じキーの行

    qsort()による並べ替えのため、比較結果が等しい行の相対的な順序は保証されません。

    安定ソートが使用されるため、指定した全てのキーが等しい行は元の順序を維持します。

    引数なしのsort()

    列0を昇順キーとして並べ替えます。

    現行実装では比較キーが作成されないため、行の順序は変更されません。



  13. XPathResult クラス — 読み取り専用プロパティへの代入エラー時に表示されるエラー内容の相違

    XPath評価結果を表す XPathResult クラスの resultType / numberValue / stringValue / booleanValue / singleNodeValue / snapshotLength / invalidIteratorState は、いずれも読み取り専用(初期化時のみ設定可能)のプロパティです。


    これらのプロパティに対して代入(値の書き換え)を試みた場合、Biz/Browser V ではプロパティ名によらず常に同一の書式のエラーメッセージが表示され、値も更新されません。


    対して Biz/Browser DT では、プロパティによって表示されるエラー内容が異なります。resultType / snapshotLength / invalidIteratorState は「プロパティは変更できません」という読み取り専用エラーが表示されますが、numberValue / stringValue / booleanValue / singleNodeValue は、代わりに「XPathException - type error」が表示される場合があります。


    対象プロパティ

    Biz/Browser V

    Biz/Browser DT 互換モード

    resultType / snapshotLength / invalidIteratorState

    "〇〇プロパティは初期化できません"と表示され、値は更新されない

    "XPathResult.〇〇プロパティは変更できません"と表示され、値は更新されない

    numberValue / stringValue / booleanValue / singleNodeValue

    "〇〇プロパティは初期化できません"と表示され、値は更新されない

    "XPathException - type error"と表示される


    これは numberValue / stringValue / booleanValue / singleNodeValue の各プロパティが、DOM Level 3 XPath の仕様に準じ、評価結果の実際の型(resultType)と一致しない場合に読み取り(get)自体で type error を送出する実装になっているためです。代入操作の失敗後、Biz/Designer DT のウォッチ/プロパティパネルが表示更新のため値を再取得する際にこの type error が発生し、本来の「読み取り専用」エラーの代わりに表示されてしまいます。読み取り専用の強制自体は7プロパティとも正しく機能していますが、代入失敗時に表示される具体的なエラー内容はプロパティおよび実際の評価結果の型によって異なります。


    影響: Biz/Browser V で XPathResult の読み取り専用プロパティへの代入エラー内容(メッセージ文字列)を判定してエラーハンドリングしているスクリプトがある場合、Biz/Browser DT では判定対象のメッセージが一致しない可能性があります。読み取り専用プロパティへの代入自体は避け、代入エラーの内容に依存したハンドリングを行わないよう実装してください。


  14. XML DOMエンジンの差異

    DTとVで内蔵されるXML DOMエンジンの仕様が異なるため、XMLの規約としては同等の結果でありつつも、実行結果に微細な差異が発生する場合があります。

    例えば名前空間宣言(xmlns:プレフィックス)を含むXMLをパースし、再度シリアライズ(toXMLString等)すると、宣言が元の要素ではなく、そのプレフィックスを実際に使用している子孫要素側に移動して出力される場合があります。プレフィックスを使用している要素の名前空間URIなどは変わらないため、XML名前空間の規約上は問題のない挙動です。

    また、XML内で実際に使用されていない名前空間宣言(xmlns)が含まれている場合、再シリアライズ時にその宣言はXML出力から削除されます。


    影響: 名前空間宣言の位置を基準に名前空間を検索する処理では、パース後にXMLをシリアライズした前後で結果が変わる場合があります。例えば、ルート要素に宣言されていたプレフィックスが子孫要素へ移動すると、ルート要素を起点としたXmlNode.LookupNamespaceURIメソッドの検索結果が、名前空間URIからnullに変わる場合があります。名前空間URIを取得する場合は、対象のプレフィックスを実際に使用している要素を起点に検索してください。


  15. 値から文字列への変換ルールの違い

    値から文字列(String型)へ代入を行う際、自動的に文字列化が行われます。


    その際の変換ルールがVとDTで異なります。


    値

    Vでの文字列

    DTでの文字列

    null値

    null

    (null)

    ""(空文字)

    ブール値

    true

    1

    true

    false

    0

    false



UI操作・入力の差異


  1. IMEの確定タイミング

    IME未確定状態で他のオブジェクトへフォーカスを移動した場合、Vでは入力がキャンセルされますが、DTでは入力確定されます。


  2. [半角/全角]キー、CAPSLOCKキー、[無変換]キー、[変換]キー、[カタカナ/ひらがな/ローマ字]キーのKeyDownイベント

    V互換モードでは、[半角/全角]キー、CAPSLOCKキー、[無変換]キー、[変換]キー、[カタカナ]キー、[ひらがな]キー、または[ローマ字]キーを押下しても、フォーカス中のオブジェクトにKeyDownイベントは発生しません。


  3. キー入力の優先度

    キー入力を行った場合のKeyDownイベントの発生、オブジェクトでのキー処理、AltKeyプロパティ、NextTabKeyプロパティなどの優先順位がVと異なります。


    バージョン1.4.12よりDisplayObject派生クラスにオブジェクト固有のキー処理の前に発生する互換モード独自のPreKeyDownイベントが追加されています。

    このイベントハンドラにてreturn trueを返すことによりオブジェクト固有のキー処理をキャンセルしキー入力の優先度を調整することができます。

    Function OnPreKeyDown(e){
            if (e.altKey == $TRUE && e.key == "K") {
                    /* Alt+Kキーの処理 */
                    ^.button1.setFocus();
                    /* trueを返すことで、オブジェクト固有のキー操作がキャンセルされる */
                    return true;
            }
    }
    

    キー操作対象

    キー入力を行った場合、以下のキー操作が実行対象となります。

    • オブジェクト固有のキー操作

    • Button系オブジェクトのaltKeyプロパティに割り当てられているキー操作

    • Tabキー、Shift+Tabキー、またはnextTabKeyプロパティ、prevTabKeyプロパティに設定されているキー操作

    • KeyDownイベント


    オブジェクト固有のキー操作とは、各オブジェクトが持っている固有のキー操作を指します。例えば、TextBoxにおける文字の入力キー操作、矢印キーによるカーソル移動、Home/Endキーによるカーソル移動、FlexViewにおける矢印キーによるカーソル移動やPageUp/PageDownキーによるページスクロールなどです。


    Biz/Browser Vにおけるキー操作優先度

    優先度

    キー操作

    高

    Tabキー、Shift+Tabキー、またはnextTabKeyプロパティ、prevTabKeyプロパティに設定されているキー操作

    ↓

    オブジェクト固有のキー操作

    ↓

    Button系オブジェクトのaltKeyプロパティに割り当てられているキー操作

    低

    KeyDownイベント


    Biz/Browser DT互換パッケージにおけるキー操作優先度

    優先度

    キー操作

    必ず発生

    KeyDownイベント

    高

    Tabキー、Shift+Tabキー、またはnextTabKeyプロパティ、prevTabKeyプロパティに設定されているキー操作

    ↓

    Button系オブジェクトのaltKeyプロパティに割り当てられているキー操作

    低

    オブジェクト固有のキー操作

    Vでは優先度の高いキー操作が行われると、優先度の低いキー操作は実行されません。一方、DT互換パッケージではKeyDownイベントが必ず発生し、イベント発生後は優先度の高いキー操作が実行されると優先度の低いキー操作は実行されません。



  4. イベントハンドラ中での引数なしPostEventメソッド実行時の動作

    イベントハンドラ中で引数なしでPostEventメソッドを実行した場合、親のオブジェクトへイベントの転送を行いますが、互換モードの標準動作ではイベントキュー方式での転送動作となります。

    Biz/Browser Vと同様にイベントを即時実行方式で実行したい場合、以下のようにグローバル設定を行ってください。

    CRS::Common::Core::Application.setProperty("app.compat_bizv.postevent_eventqueuemodel", false);
    


  5. ProgressBar / ProgressPopup クラス — Visible プロパティへの代入で例外が発生する

    ProgressBar.Create()で生成されるポップアップ状態のプログレスバー(ProgressPopupオブジェクト)に対して、Visibleプロパティへ値を代入した際の挙動がBiz/Browser VとBiz/Browser DT 互換モードで異なります。


    観点

    Biz/Browser V

    Biz/Browser DT 互換モード

    Visibleプロパティへの代入

    エラーは発生せず値の変更ができる

    例外(「プロパティは書き込めません」、method: SYS, code: 22)が発生する

    代入によるポップアップ表示状態への影響

    変化しない(表示中のポップアップを非表示にすることはできない)

    (代入自体が例外となるため該当なし)


    Biz/Browser V では ProgressBar(およびポップアップ実体である ProgressPopup)の Visible は読み書き可能なプロパティとして実装されていますが、値を変更してもポップアップウィンドウ自体の表示・非表示は切り替わりません(単なる値の保持のみで、実際の表示制御には連動していません)。


    対して Biz/Browser DT では、基底となるネイティブクラス CRS::Common::UI::ProgressPopup 側で Visible(visible)プロパティが読み取り専用として実装されており、互換クラス側でもこれを書き込み可能な形に上書きしていません。そのため Biz/Browser DT 互換モードで Visible へ代入を行うと、読み取り専用プロパティへの書き込みを示す例外が発生します。


    影響: Biz/Browser V で ProgressBar / ProgressPopup の Visible プロパティへ値を代入しているスクリプト(代入結果を利用していない場合も含む)がある場合、Biz/Browser DT では未捕捉の例外が発生し、スクリプトの実行が中断される可能性があります。該当箇所は Visible への代入処理を削除するか、try/catchで例外を捕捉するように修正してください。


  6. Rootクラス / Dialogクラス — ウィンドウのボタン の仕様変更

    Biz/Browser Vでは、TitleBarプロパティでタイトルバーの表示、非表示の切り替え、ControlBoxプロパティでタイトルバーにあるボタンとアイコンの表示、非表示を切り替えることができました。

    Biz/Browser DT互換モードでは、TitleBarプロパティ、ControlBoxプロパティ は、それ単独では動作しません。 TitleBarプロパティ、ControlBoxプロパティは、CloseBoxプロパティ、MaximizeBoxプロパティ、MinimizeBoxプロパティが全てfalseの時にのみ初めて有効になります。

    タイトルバーを非表示にしたい場合、もしくはウィンドウのタイトルバーにあるボタンとアイコンを非表示にしたい場合は、全てのボタン(閉じるボタン、最大化ボタン、最小化ボタン)を非活性状態($False設定時)にした上で、TitleBarプロパティ、もしくは ControlBoxプロパティ に$Falseを指定します。

    一つでもボタンが表示されている場合は、TitleBarプロパティとControlBoxプロパティに$Falseを設定しても、非表示にはなりません。


    影響: Biz/Browser V で TitleBarプロパティ や ControlBox プロパティへ $False を設定しているスクリプトがある場合、Biz/Browser DT互換モードで実行するとそれぞれ非表示になりません。タイトルバー自体、及びボタン、アイコンを非表示にしたい場合は、ControlBox、 CloseBox 、MaximizeBox 、MinimizeBoxプロパティすべてに $False を設定する必要があります。


  7. ComboBoxクラス — InputMode=$NUMERIC+$EXSPACE指定時の改行コード貼り付け

    ComboBoxに InputMode=$NUMERIC+$EXSPACE を指定し、改行コードを含むテキストをペーストした場合、Biz/Browser VとBiz/Browser DT互換モードで動作が異なります。

    観点

    Biz/Browser V

    Biz/Browser DT互換モード

    改行コードを含むテキストのペースト

    改行コードはペーストされず、数字のみが入力される

    改行コードも含めてペーストされる

    画面上の表示

    12345

    改行コードが単一行内で半角スペースのように表示される

    Biz/Browser DT互換モードで画面上に表示される半角スペース状の部分は、半角スペースがペーストされたものではありません。ComboBox内部に残った改行コードが、単一行テキスト入力域で表示できないため、半角スペースのように描画されています。ペーストされた値をコピーすると、半角スペースではなく改行コードが含まれていることを確認できます。

    影響: Biz/Browser Vで改行コードを含むテキストをComboBoxへペーストした際に数字のみが入力されることを前提としている場合、Biz/Browser DT互換モードでは改行コードが値に残り、値の比較や再利用時に意図しない結果となる可能性があります。


  8. Rootクラス / Dialogクラス — Resizeプロパティ の仕様変更

    Biz/Browser Vでは、Resizeプロパティに$Falseが指定されていた場合(ウィンドウサイズの変更禁止)でも、MaximizeBoxプロパティ、MinimizeBoxプロパティに$Trueを設定することで、ウィンドウの最大化、最小化を行うことができました。

    Biz/Browser DT互換モードでは、Resizeプロパティに$Falseが指定されている(ウィンドウサイズの変更禁止)場合、ウィンドウの最大化は強制的に抑制されるようになり、最小化のみ行うことができるようになりました。

    (Resizeプロパティに$Falseが指定されている場合、MinimizeBoxプロパティに$Trueを設定することで最小化ボタンは有効化できますが、MaximizeBoxプロパティに$Trueを設定しても最大化ボタンは有効化されません。)


    影響: Biz/Browser V では、 ウィンドウのサイズ変更禁止 と ウィンドウの最大化許可は 共存で設定できましたが、Biz/Browser DTでは ウィンドウサイズの変更禁止 と ウィンドウの最大化許可 は同時設定できません。ウィンドウサイズの変更を禁止した場合、最大化も強制的に禁止されるようになります。


  9. EditBoxクラス — WordWrapプロパティ = $False 時のダブルクリック挙動の差異

    Biz/Browser Vでは、EditBox.WordWrap=$False時にEditBox内の任意の文字列をダブルクリックすると、 EditBox 全体が「1つの単語」と判定され、全文選択状態になります。

    一方、Biz/Browser DT互換モードでは、EditBox.WordWrap=$False時にダブルクリックをしても全文選択とはならずに、ダブルクリック位置の文字列だけが選択状態となります。


    影響: Biz/Browser DT互換モードで同様の挙動としたい場合は、EditBoxでのダブルクリックイベントハンドラ内にて、setSelection( 0, -1 )メソッドを使用して全文選択する処理を追加してください。

    例:

    EditBox EditBox1 {
        Function OnDoubleClicked(e) {
            setSelection( 0, -1 );
        }
    }
    

  10. TextBox / EditBoxクラス — 文字列をダブルクリックした場合の選択範囲の差異

    文字列中の任意の位置をダブルクリックした場合、単語として選択される範囲がBiz/Browser VとBiz/Browser DT互換モードで異なります。

    Biz/Browser Vでは、空白までの連続した文字列が一つの単語として選択されます。記号と英数字が連続している場合も、まとめて選択されます。

    一方、Biz/Browser DT互換モードでは、Unicodeの単語境界判定に従って選択されます。そのため、記号列と英数字列が分かれて選択されます。

    対象文字列

    Biz/Browser V

    Biz/Browser DT互換モード

    !"#$%12

    !"#$%12 全体

    !"#$%

    BIZ/Designer is

    BIZ/Designer

    BIZ

    これは、Biz/Browser VとBiz/Browser DT互換モードで利用している文字列の単語境界判定仕様が異なるために発生します。Biz/Browser DT互換モードでは、互換クラス側でBiz/Browser Vと同じ選択範囲への補正は行われません。

    Biz/Browser Vと同じ範囲を選択する必要がある場合は、ダブルクリックイベントハンドラで選択範囲を明示的に設定するなどの対応が必要です。



  11. 全角文字に対してInsertキーでASCII文字を上書きした場合の挙動差異

    Biz/Browser Vでは、全角文字に対してInsertキーでASCII文字を上書きした場合、文字をShift-JIS換算のバイト単位で上書き処理を行い、足りないバイト部分を半角スペースで補充するという動作になっていました。

    対して、Biz/Browser DTでは、現代のアプリケーションの多くで採用されている1文字ベースでの上書き処理となっています。


    あ を a で上書きする場合

    Biz/Browser V

    あ → a□

    □は半角スペース。Shift_JISベースでのバイト数を維持する考え方。

    Biz/Browser DT (互換モード実行時も含む)

    あ → a

    全角文字、半角文字も1文字としてとらえ、文字単位で上書きする考え方。



  12. HtmlViewクラス — zoomメソッドで指定できる拡大縮小率

    zoom メソッドで指定できる拡大縮小率が、Biz/Browser VとBiz/Browser DT互換モードで異なります。


    zoomメソッドの指定可能範囲

    項目

    Biz/Browser V

    Biz/Browser DT互換モード

    拡大縮小率

    0.1~10

    0.3~5


  13. HtmlViewクラス — Scrollプロパティが未指定または$NONEの場合のScrollByメソッド

    Biz/Browser DT互換モードでは、HtmlViewの Scroll プロパティを未指定、または $NONE に設定した場合、ScrollBy メソッドを実行しても表示中のページはスクロールしません。

    ScrollBy メソッドによるページの相対スクロールを使用する場合は、Scroll プロパティに $AUTO または $STATIC を明示的に指定してください。



ファイルI/O・印刷・通信の差異


Biz/Browser Vが使用していたWindows依存の基盤ライブラリ(WinINet等)が出力するエラーコードやエラーメッセージは、Biz/Browser DT互換モードで同一の値・文言を再現する対象外です。Biz/Browser DTはマルチプラットフォーム対応のため基盤ライブラリが異なり、通信エラーのコードやメッセージはDTの基盤ライブラリおよび共通通信処理に基づくものとなります。


  1. HTTP通信 — タイムアウト設定の適用範囲と0の扱い

    Biz/Browser VとBiz/Browser DT互換モードでは、全体のタイムアウトを設定する場所と、Root.HttpTimeoutおよびHttpRequest.Timeoutの適用方法が異なります。

    Biz/Browser Vでは、プロファイルのレジストリ設定 HttpTimeoutSec がWinINetの受信タイムアウトとして適用されます。一方、Root.HttpTimeoutおよびHttpRequest.Timeoutは、通信中のタイムアウト監視値として別に扱われます。

    Biz/Browser DT互換モードでは、設定ファイルの app.http.timeout がHTTP通信の全体設定となります。Root.HttpTimeoutは実行時の全体設定を変更し、HttpRequest.Timeoutはリクエスト単位の設定として全体設定より優先されます。

    観点

    Biz/Browser V

    Biz/Browser DT互換モード

    全体設定

    プロファイルのレジストリ設定 HttpTimeoutSec。WinINetの受信タイムアウトに適用されます。

    設定ファイルの app.http.timeout。HTTP通信の全体設定として適用されます。

    Root.HttpTimeoutの設定

    通信監視のタイムアウトを変更します。レジストリの HttpTimeoutSec は変更されません。

    実行時の全体設定を変更します。設定ファイルの値より優先されます。

    HttpRequest.Timeoutの設定

    通信中だけ通信監視のタイムアウトを一時的に変更します。レジストリの HttpTimeoutSec は変更されません。

    リクエスト単位のタイムアウトとして適用され、全体設定より優先されます。

    タイムアウト値に0を設定

    Root側の通信監視を無効にします。レジストリの HttpTimeoutSec が設定済みの場合、その値は残ります。

    設定ファイルの値へ戻るのではなく、実行時の0が設定ファイルの値より優先されます。HTTP通信の内部期限は無期限になります。

    例えば、全体設定を5秒としている場合の動作は次のとおりです。

    操作

    Biz/Browser V

    Biz/Browser DT互換モード

    Root.HttpTimeoutを変更しない

    WinINet側では5秒が有効です。Root側の監視値は初期値のままです。

    5秒がHTTP通信の全体設定として有効です。

    Root.HttpTimeout = 0

    Root側の監視は無効になりますが、レジストリの5秒は維持されます。

    設定ファイルの5秒には戻らず、実行時の0が優先されます。

    Root.HttpTimeout = 10

    Root側の監視値が10秒になります。WinINet側の5秒は維持されます。

    HTTP通信の全体設定が10秒になります。

    HttpRequest.Timeout = 10

    通信中の監視値が一時的に10秒になります。WinINet側の5秒は変更されません。

    そのリクエストだけ10秒になります。

    そのため、Biz/Browser Vで Root.HttpTimeout = 0 を実行しても、レジストリ設定を未設定の状態へ戻すことはできません。また、Biz/Browser DT互換モードでも、Root.HttpTimeout = 0 によって設定ファイルの app.http.timeout へ戻ることはありません。設定ファイルの値を使用する場合は、Root.HttpTimeoutに値を設定しないでください。


  2. HttpSessionクラス — putメソッドのString型データの文字コード

    HttpSession.put(url, string) の第2引数にString型の値を指定した場合、送信されるデータの文字コードがBiz/Browser VとBiz/Browser DT互換モードで異なります。

    観点

    Biz/Browser V

    Biz/Browser DT互換モード

    String型のデータ

    ローカルMBCSのバイト列として送信されます。日本語環境ではShift-JIS系のバイト列になります。

    UTF-8のバイト列として送信されます。


    影響: Biz/Browser VでString型のデータをShift-JIS系の文字コードで受信するサーバーへ送信している場合、Biz/Browser DT互換モードではサーバー側で文字化けやデータ形式不正が発生する可能性があります。String型のデータを送信する場合は、受信側がUTF-8を扱えることを確認してください。


  3. Doc クラス — ShowPage メソッドの印刷タイミング

    対象条件:Doc.PreView = $PRINTER(プリンターへの直接印刷)

    Biz/Browser V では ShowPage() 実行時にプリンタデバイスが開かれ、ページ単位で印刷スプールへ登録されます。

    そのため、出力先が "Microsoft Print to PDF" 等のファイル出力型プリンタドライバの場合、最初の ShowPage() 呼び出し時点でファイル保存ダイアログが表示されます。

    対して、Biz/Browser DT では、ShowPage() は印刷データの蓄積のみを行い、実際の印刷処理は Delete() 実行時に一括で行われます。ファイル保存ダイアログ等のプリンタドライバ UI は Delete() 実行時に表示されます。


    影響: ShowPage() と Delete() の間にプリンタドライバの応答を前提とした処理を記述している場合、期待どおりに動作しない可能性があります。 印刷結果(出力内容)自体に差異はありません。


  4. Doc クラス — ShowPage メソッドで表示されるプレビューダイアログについて

    対象条件:Doc.PreView = $PRINTER(プリンターへの直接印刷)

    Biz/Browser V では ShowPage() 実行時に表示されるプレビューダイアログは、モーダルとモードレスの中間の状態(ウィンドウの切り替えはできるが、ウィンドウ内のオブジェクトを操作できない)でしたが、 Biz/Browser DT互換モードでは、メインウィンドウとその配下のダイアログとは独立して操作することができるダイアログ(モードレスダイアログ)として表示されます。


  5. PrintStreamDocument クラス — PrintDocument メソッドで、プリンタが対応していない用紙サイズを指定した場合にエラーとならず、意図しない用紙サイズで印刷される

    Biz/Browser V では PrintDocument() 実行時に、指定した用紙サイズ(幅・高さ)がプリンタドライバに登録済みの用紙(Form)と一致するかどうかを厳密にチェックしており、一致するものが無い場合は例外 PSS-2「この用紙サイズは設定されていません、用紙サイズを変更するか追加してください」が発生し、印刷は行われません。


    対して Biz/Browser DT 互換モードでは、この用紙サイズの事前検証を行っておらず、指定した用紙サイズがプリンタでサポートされていない場合でも例外は発生しません。印刷処理自体はプリンタドライバに委譲されるため、プリンタドライバ側で対応可能な用紙サイズへ暗黙的に置き換えられて印刷が実行されることになります(指定と異なる用紙サイズで出力される)。


    観点

    Biz/Browser V

    Biz/Browser DT 互換モード

    用紙サイズの事前検証

    プリンタドライバの登録済み用紙(Form)一覧と厳密照合

    検証なし

    対応していない用紙サイズを指定した場合

    例外 PSS-2 が発生し、印刷を中断

    例外は発生せず、プリンタドライバが選択した用紙サイズで印刷を継続


    影響: Biz/Browser V で PSS-2 の例外発生を前提に、プリンタに登録された用紙サイズの過不足をチェックしているスクリプトがある場合、Biz/Browser DT では例外が発生しないため不正な用紙サイズ指定に気づけず、意図しない用紙サイズで印刷される可能性があります。プリンタに使用する用紙サイズがあらかじめ登録(Form追加)されていることを、運用側で確認しておく必要があります。


  6. DisplayObject派生クラス — SetCursor/ResetCursorメソッドでURL取得に失敗した場合の例外内容の相違

    SetCursor(URL)実行時、指定したURLの取得に失敗した場合(HTTP 404等)に発生する例外の内容がBiz/Browser VとBiz/Browser DTで異なります。

    Biz/Browser V では SetCursor/ResetCursor は全DisplayObject派生クラス共通の実装であり、失敗要因ごとに専用のエラーコードが発生します。

    Biz/Browser Vでのcode

    発生条件・メッセージ

    PKG-57

    配列定義オブジェクトに対して実行した場合。「配列定義に対してSetCursorまたはResetCursorを行うことはできません」

    PKG-58

    Readerからの読込失敗、またはURLのHTTP取得失敗(404等)時。「カーソルデータが取得できませんでした」

    PKG-59

    引数がURL文字列にもReaderにも変換できない場合。「SetCursorの引数が不正です」

    PKG-60

    一時ファイルの作成に失敗した場合。「一時ファイルが作成できません」

    PKG-61

    取得したデータが有効なカーソル形式でない場合。「カーソルデータが不正です」

    対してBiz/Browser DTでは、クラスによって発生する例外の内容が異なります。

    対象クラス

    method

    code

    message

    SSpread

    CRS

    331

    通信エラー: HTTP 404: 要求したオブジェクトは見つかりませんでした(HTTPステータスに応じた汎用メッセージ)

    上記以外のDisplayObject派生クラス(Button、Label、WindowObject、EditBox、TreeView、IconView、DragSource、TrayIcon、Root、TabForm、Brush等)

    SYS

    50

    通信エラー(HTTP/ネットワーク通信に失敗した場合の汎用メッセージ)


    影響: Biz/Browser V で SetCursor/ResetCursorメソッドの例外を method / code の値で判定するエラーハンドリングを実装しているスクリプトがある場合、Biz/Browser DT では対象クラスによって異なる method / code が返るため、意図した分岐処理が行われない可能性があります。また、配列定義に対する実行禁止(PKG-57)、一時ファイル作成失敗(PKG-60)、不正なカーソルデータ(PKG-61)、引数不正(PKG-59)を判定しているスクリプトについても、Biz/Browser DTでは同様の専用エラーは発生しません。


  7. SSpread クラス — ファイル/画像をURLから読み込む各種メソッドで、URL取得に失敗した場合に新たに例外が発生する

    SSpreadクラスには、SetCursor以外にもURL(またはReader)からファイルや画像を読み込む複数のメソッド・プロパティがあります。

    Biz/Browser V では、これらのメソッド・プロパティ実行時にURLの取得(HTTP通信)が失敗しても、 例外は発生せず処理が黙って中断されるだけ でした。

    対してBiz/Browser DT 互換モードでは、共通の読み込み処理を経由するため、URL取得に失敗した場合に method: CRS, code: 331 (通信エラー: HTTP xxx: ...) の例外が新たに発生します。

    対象となるメソッド・プロパティは以下の通りです。

    CursorIconプロパティ

    マウスカーソル画像の設定

    TypeButtonPicture / TypeButtonPictureDownプロパティ

    ボタンセルの画像設定

    TypeCheckPictureプロパティ

    チェックボックスセルの画像設定

    TypePictPictureプロパティ

    ピクチャセルの画像設定

    LoadFromFileメソッド

    SSファイルの読み込み

    LoadTabFileメソッド

    TABファイルの読み込み

    LoadTextFileメソッド

    テキストファイルの読み込み

    GetExcelSheetListメソッド

    Excelシート一覧の取得

    ImportExcelSheetメソッド

    Excel(旧形式)シートの取込

    ExportToExcelExメソッド

    Excelエクスポート時のテンプレート読込(第4引数)

    IsExcel2007Fileメソッド

    xlsxファイル判定

    OpenExcel2007Fileメソッド

    xlsxファイルの読込

    SaveExcel2007Fileメソッド

    xlsxファイル保存時のテンプレート読込(第5引数)

    影響: これらのメソッド・プロパティに対して、URLが取得できない状況(ネットワーク断、対象ファイル削除等)を想定した例外処理を実装していないスクリプトがある場合、Biz/Browser V では処理が静かに失敗していたのに対し、Biz/Browser DT では未捕捉の例外が新たに発生し、スクリプトの実行が中断される可能性があります。


  8. グローバル関数 — getPrinterList関数で取得されるプリンタ一覧のdescriptionの値が正常に取得できない

    プリンタリストの取得エンジンが変更されている関係上、プリンタリストの戻り値 description の値が正常に取得できない可能性があります。


  9. File クラス — Read()メソッドで読み込んだString型データ中の0x00以降のバイト列が復元できない

    File.Read()はファイルの内容をString型として読み込むメソッドです。読み込んだデータの中にNUL文字(0x00)が含まれる場合の扱いがBiz/Browser V とBiz/Browser DTで異なります。

    観点

    Biz/Browser V

    Biz/Browser DT

    Read()で読み込んだString型データ中の0x00以降のバイト列

    内部的には保持されており、ByteArray型へ代入すると元のバイナリデータが復元される

    保持されない(0x00を文字列の終端とみなし、以降のバイト列は破棄される)

    Biz/Browser V では、Read()がString型として読み込んだデータであっても、0x00以降のバイト列を内部的には保持しており、そのString型の値をByteArray型へ代入することで元のバイナリデータをそのまま復元することが可能でした。


    しかし、String型のデータとして0x00以降のバイト列を保持し続ける実装は、文字列操作の過程で意図しない不正な処理につながる可能性があるため、Biz/Browser DTではこの挙動を制限事項として踏襲せず、Read()で読み込んだ時点で0x00以降のバイト列は破棄されます。


    影響: UNICODE(UTF-16)やUTF-32等、文字コードの構造上0x00を含み得るバイナリデータをFile.Read()で読み込み、ByteArray型へ代入して元のデータを復元する実装を行っているスクリプトがある場合、Biz/Browser DTでは0x00以降のバイト列が失われるため、意図した結果が得られません。バイナリデータを扱う場合はRead()の代わりにReadBinary()を使用してください。


  10. DisplayObjectクラス — Droppedイベントの Data (Fileオブジェクト) がドロップ直後もオープンされたまま保持される

    ファイルをドラッグ&ドロップで受け付ける(AcceptDropにFileを含む)オブジェクトの Dropped イベントハンドラ内で、e.Data(ドロップされたファイルを表すFileオブジェクト)を close() せずに使用し、同じファイルに対して FileSystem.Rename() / FileSystem.DeleteFile() を実行すると、Biz/Browser DTでは処理が失敗する場合があります。


    観点

    Biz/Browser V

    Biz/Browser DT

    Droppedイベント生成時のファイルオープン方式

    存在確認のため一度開いた直後にクローズし、実読み書き時まで再オープンしない方式

    ReadOnlyモードでオープンし、そのまま保持する方式

    e.Dataとして渡されるFileオブジェクトのOSハンドル状態

    ドロップ直後はクローズ済み(ハンドルなし)

    ドロップ直後もオープンされたまま(close()を呼ぶまで維持)

    ドロップされたファイルと同名ファイルに対するRename/DeleteFile

    成功する

    Windows環境では共有違反により失敗し、エラーダイアログが表示される場合がある


    Biz/Browser V ではドラッグ&ドロップされたファイルの存在確認のため一度ファイルを開いた後すぐにクローズし、実際にread/write等が呼ばれた時点で再オープンする「遅延再オープン」方式が採られています。

    対して Biz/Browser DT では、Droppedイベントの Data プロパティに渡される File オブジェクトは ReadOnly モードでオープンされたまま保持され、スクリプト側で明示的に close() を呼ぶまで解放されません。


    このアーキテクチャの違いにより、ドロップされたファイルと同一パスのファイルに対して Rename / DeleteFile を実行しようとすると、オープンされたままのハンドルが Windows のファイル共有制御に抵触し、「ファイルまたはフォルダの名前を変更できません」「ファイルを削除できません」等のエラーが発生する場合があります。


    影響: Biz/Browser V でドラッグ&ドロップされたファイルを Dropped イベントハンドラ内でそのまま FileSystem.Rename() / FileSystem.DeleteFile() している場合、Biz/Browser DT では処理が失敗する可能性があります。


    回避策: Dropped イベントハンドラ内で e.Data を使用し終えたら、ファイル操作を行う前に明示的に e.Data.close() を呼び出し、ハンドルを解放してください。

    例:

    Function OnDropped(e) {
        var v = new String(e.Data);
        e.Data.close();   # ファイル操作前に必ずクローズする
        ...
        fs.Rename(fileName, fileName + "_Rename");
    }
    

  11. SSpread クラス — SaveExcel2007Fileメソッドの第2引数(パスワード)によるブック保護は使用不可

    SaveExcel2007File(writer, password, flags[, sheetname[, reader]]) の第2引数にはxlsxファイルのブック保護用パスワードを指定しますが、Biz/Browser DT 互換モードでは、この引数を指定しても保存されるxlsxファイルにパスワード保護は設定されません。


    観点

    Biz/Browser V

    Biz/Browser DT 互換モード

    SaveExcel2007Fileの第2引数(password)

    指定した文字列でブック保護パスワードが設定される

    指定しても無視され、パスワード保護は設定されない


    影響: Biz/Browser V で SaveExcel2007File によりブック保護パスワード付きのxlsxファイルを出力しているスクリプトがある場合、Biz/Browser DT では同じ引数を指定してもパスワード保護のかからないxlsxファイルが出力されます。パスワード保護が必須の運用では、別途xlsxファイルへのパスワード設定手段を検討してください。



DTの構造による動作差異


  1. Rootオブジェクト

    VではRootオブジェクトはメインウィンドウを表していますが、DTではRootオブジェクトはタブ内の範囲を表します。


    そのためRootに対して実行するプロパティ、メソッドに関して反映される動作が異なるものがあります。


    また、RootオブジェクトにはV固有の制御機能が実装されており、現状では対応していない機能があります。対象のプロパティ・メソッドは「サポート対象外クラス・メソッド」の一覧を参照してください。


    FrameWindowへのフォワード処理

    以下のプロパティ、メソッドの実行においてRootオブジェクトが存在するウィンドウ(FrameWindow)へ処理がフォワードされます。

    プロパティ

    X

    Y

    Width

    Height

    Active

    Visible

    ReSize

    MaximizeBox

    MinimizeBox

    CloseBox

    ControlBox

    TitleBar

    Icon

    Title(シングルウィンドウモード時のみ)

    メソッド

    ShowMenu

    SetMenu

    フォワード処理を抑止したい場合、Application.setPropertyメソッドでグローバル設定"app.compat_bizv.forward_root_to_frame"に対しfalseを設定します。



  2. ウィンドウ制御

    Windows APIによりウィンドウを直接制御するVと異なり、マルチOS共通の制御を行うDTでは、ウィンドウ最大化などの制御、ウィンドウボタンの制御などに、設定順序や組み合わせの制約があります。

    具体的な制約内容は、「Rootクラス / Dialogクラス — ウィンドウのボタン の仕様変更」および「Rootクラス / Dialogクラス — Resizeプロパティ の仕様変更」を参照してください。


  3. ファイル処理

    マルチOS共通化のため、ファイルシステムからWindows固有の詳細な情報を取り出すことはできません。

    例えば、互換モードの FileSystem.GetVolumeInfo([path]) メソッドでは、以下の項目のみ実際のボリューム情報を取得できます。

    • VolumeName (ボリューム名)

    • VolumePath (ボリュームのパス)

    • FileSystemName (ファイルシステム名)

    • TotalSpace (ボリュームの総容量)

    • FreeSpace (ボリュームの空き容量)

    Biz/Browser Vの戻り値に含まれる VolumeSerial、MaxComponentLength、大文字・小文字の扱い、ACL・圧縮・暗号化・再解析ポイントなどのWindows固有属性、DriveType などは取得できません。これらの項目は互換モードでも戻り値に含まれますが、数値項目は -1、DriveType は "UNKNOWN" となります。

    そのため、GetVolumeInfo の戻り値からボリュームのシリアル番号、ドライブ種別、ファイル名の大文字・小文字を区別するかどうかなどを判定することはできません。

    またファイルのロック処理などが異なる場合があります。


  4. ふりがな入力処理

    IMEの入力に関してWindows APIを直接制御しているVと異なり、マルチOS共通ライブラリ経由で制御するDTではふりがな入力処理(TextBox.SetIMECompObjectメソッド)に関して詳細な編集操作は行えません。

    TextBox.SetIMECompObjectメソッドの第三引数のshowRealtime(自動入力のリアルタイム実行制御)に$Falseが指定された場合も常にリアルタイム実行となります。

    IME の変換キー等で、確定前 (未確定文字列) の時点で既に半角カナ・全角カナになっている入力を行った場合、リンク先オブジェクトにフリガナが反映されないことがあります。ローマ字入力からの通常変換 (確定前は常にひらがな表示のIME) の場合は正常に反映されます。


    また、SetIMECompObjectメソッドの連携処理は、IMEによる未確定文字列(preedit)・確定文字列(commit)の入力イベントを契機として動作するため、IMEModeに $CLOSE や $ALPHA など、IMEを介さない直接入力状態を指定している場合、この入力イベント自体が発生せず、SetIMECompObjectによるリンク先オブジェクトへのふりがな等の反映は行われません。


  5. 暗号化CARファイル

    Vで暗号化されたCARファイルはWindows固有の暗号化アルゴリズムで暗号化されているため、互換モードでは読み込むことができません。


  6. サポートされる画像フォーマット

    マウスカーソル用のWindows固有フォーマットであるcur・aniファイル、アイコン画像用のicoファイルを読み込むことはできません。


  7. Dialogオブジェクトのモーダル・モードレス動作

    VではDialogオブジェクトがモーダルとモードレスの中間の状態(ウィンドウの切り替えはできるが、ウィンドウ内のオブジェクトを操作できない)でしたが、DTでは一般的なモーダルウィンドウとして表示されます。


  8. Internet Explorer連携機能

    Windows固有機能であるInternet Explorerとの連携機能は使用できません。


  9. 接続ライセンス

    接続ライセンスに関してはVのものではなくDTの接続ライセンスが必要となります。


  10. SetBookMark関数 / Root.SetBookMarkメソッド / GetBookMark関数 / Root.GetBookMarkメソッド の保存範囲がホスト単位に分断される

    Biz/Browser V では単一のグローバルなブックマーク一覧として動作しますが、Biz/Browser DT 互換モードでは内部実装の都合上、接続先ホスト (スキーム + ホスト名 + ポート) ごとに別々のブックマーク一覧として分断されます。

    観点

    Biz/Browser V

    Biz/Browser DT 互換モード

    保存先

    レジストリ固定キー (HKEY_CURRENT_USER 配下)

    接続先ホスト単位の .ini ファイル (ProfileStore 経由)

    保存範囲

    グローバルに1つ (接続先サーバーによらず共有)

    スキーム + ホスト名 + ポートの組み合わせごとに個別

    複数サーバーを使い分ける場合の挙動

    どのサーバーに接続していても同じブックマーク一覧を参照・追加できる

    サーバーが異なると、別のサーバーで登録したブックマークは見えない

    Biz/Browser V の SetBookMark関数 / Root.SetBookMarkメソッド / GetBookMark関数 / Root.GetBookMarkメソッド は接続先を問わない固定のレジストリキーにブックマークを保存するのに対し、Biz/Browser DT の BookMark関連機能 は汎用の**ProfileStore**を使用しています。

    ProfileStore は「現在実行中のスクリプトの接続先ホスト」から算出した HostLocator (スキーム+ホスト+ポートのみ。パスは含まない) 単位で保存します。


    影響: 複数の異なる Biz/Browserアプリケーションサーバー (ホスト:ポートが異なる環境) を切り替えて利用する構成では、サーバーを切り替えるたびにブックマーク一覧が別物として表示されます。単一サーバーのみを利用する構成では影響ありません。


  11. ChangeProfile関数によるプロファイル切替機能の部分実装

    ChangeProfile(id) は互換モードに実装されており、呼び出し自体はエラーにならずプロファイルバージョンが内部に保存されます。しかし、Biz/Browser V で Profile バージョンに応じて切り替わる機能のうち、Biz/Browser DT互換モード で実際にプロファイル分岐が実装されているのは一部のみです。


    以下、各機能の対応状況です。

    機能

    BizV 3.0

    BizV 3.1

    BizV 4.0

    BizV 4.1

    BizDT互換モード での動作

    起動時の背景色

    薄い青

    薄い青

    濃い青

    グレー

    プロファイル無関係 (BizDT固有の背景色で固定)

    CatchEvent, PeekEvent ステートメントの利用

    有効

    有効

    無効

    無効

    常に無効 (パーサレベルで廃止済み)

    イベントハンドラ内の Event, From シンボルの利用

    有効

    有効

    無効

    無効

    常に無効

    ver2.0 用クラス名の置換 (Record→SpreadRow 等)

    有効

    有効

    無効

    無効

    常に無効

    Object.className を Object.class として参照する機能

    有効

    有効

    有効

    無効

    常に無効

    配列定義オブジェクトの index プロパティの利用

    有効

    有効

    無効

    無効

    常に無効

    配列要素オブジェクトの length プロパティの利用

    有効

    有効

    無効

    無効

    常に無効

    Label の VerticalAlign を画面上で有効にする

    無効

    有効

    有効

    有効

    常に有効 (プロファイル無関係)

    Spread.value に行数以上の値を設定時に例外を発生

    無効

    無効

    有効

    有効

    >= 4.0.0 で例外発生 (対応済み)

    Spread.ColumnPosition に不正値設定時に例外を発生

    無効

    無効

    有効

    有効

    >= 4.0.0 で例外発生 (対応済み)

    TabForm.Width, TabForm.Height への値設定で例外を発生

    無効

    有効

    有効

    有効

    >= 4.0.0 で例外発生 (BizVでは3.1.0から有効)


    影響:

    Profile 3.0.0〜3.1.0 を使用して旧バージョン互換の CRS 構文 (CatchEvent/PeekEvent、Event/From シンボル、ver2.0 クラス名置換、Object.class 参照、配列 index/length プロパティ) を利用しているアプリケーションは、Biz/Browser DT互換モード では ChangeProfile を呼び出しても該当機能が有効にならず、スクリプトの書き換えが必要です。

    また、TabForm.Width / TabForm.Height の例外発生は Biz/Browser V では Profile 3.1.0 以上で有効ですが、Biz/Browser DT互換モード では 4.0.0 以上でのみ有効です。Profile 3.1.0 を指定して動作させている環境では、Biz/Browser V で発生していた例外が Biz/Browser DT互換モード では発生しません。


  12. FileSystem クラス — privateroot 以下のフォルダ名にスキームが含まれる

    FileSystem($PRIVATE) で作成される privateroot 以下のサーバー別フォルダの命名規則が Biz/Browser V と Biz/Browser DT (互換モード動作時含む) で異なります。

    観点

    Biz/Browser V

    Biz/Browser DT

    フォルダ名の形式

    <host>[_<port>]

    <scheme>_<host>[_<port>]

    例: http://localhost/ で接続

    localhost

    http_localhost

    例: http://localhost:8080/ で接続

    localhost_8080

    http_localhost_8080

    例: https://example.com/ で接続

    example.com

    https_example.com

    HTTP と HTTPS の区別

    同一フォルダ (区別なし)

    別フォルダ (スキームで分離)

    Biz/Browser V ではホスト名(非デフォルトポートの場合はホスト名_ポート)がそのままフォルダ名となりますが、Biz/Browser DT ではスキーム(http/https)がプレフィックスとして付加されます。

    これにより、同一ホストに対して HTTP と HTTPS で接続した場合に Biz/Browser DT では異なるフォルダとして区別されます。


    影響: Biz/Browser V から Biz/Browser DT へ移行した場合、privateroot 以下に保存されていたデータはフォルダ名が異なるため Biz/Browser DT からは参照できません。既存のローカルデータの移行が必要になる場合があります。



表示の差異


  1. UIデザイン

    UIのデザインは基底クラスであるDTのオブジェクトのものが使用されるため、Vの画面とは意匠が異なります。


  2. ListViewクラス — ListViewItemに表示される文字列へのfontScaleの適用

    Biz/Browser Vでは、Form.FontScaleプロパティを指定すると、ListViewItemに表示される文字列にもフォントサイズの拡大縮小が適用されます。

    一方、Biz/Browser DT互換モードでは、Form.FontScaleプロパティを指定しても、ListViewItemに表示される文字列のフォントサイズは拡大縮小されません。

    影響: Form.FontScaleプロパティで画面全体の文字サイズを拡大縮小している場合、ListViewItemに表示される文字列だけが指定した倍率と異なるサイズで表示されます。


  3. DisplayObjectクラスのVisualStyleプロパティ

    Biz/Browser VではVisualStyleに$Falseを指定することで、Windows2000風のクラシックスタイルへ変更することができました。 一方、Biz/Browser DT互換モードでは、VisualStyleプロパティへの指定は DisplayObject全体のビジュアルスタイル切り替えには使用されません。

    そのため、VisualStyleに$Falseを指定しても、Biz/Browser Vのように Windows2000風のクラシックスタイルへ変更されることはありません。

    互換モードにおけるコンテキストのビジュアルスタイルは、設定ファイルの app.settings.style により設定されます。app.settings.style は、 全体設定およびコンテキスト設定のいずれでも有効です。


  4. 改行文字の扱い

    文字列表示の際、VではCR・LFの2文字の文字コードで改行表示が行われますが、DTでは文字列内にLF単独の文字であっても改行処理が行われます。

    Root.PasteStringメソッドにて取得した文字列に改行コードが含まれている場合はLFの1文字に統一されます。


  5. 改行、ワードラップの差異

    フォントサイズの差異、ワードラップの基準文字の違いから、折り返しが発生するテキスト表示が異なる場合があります。


  6. TabFrameクラスの複数行タブモード

    Vで使用できたTabFrameクラスの複数行タブモード(Arrangement=$MULTILINE)はDT搭載の描画ライブラリの制約上サポートされていません。


  7. TypeSetterクラスでのフォント制限

    互換TypeSetterクラスではTerminalなどのビットマップフォントはサポートされません(正常なサイズでの表示ができません)。


  8. STreeクラスでの接続線表示の制限

    STreeクラスの基底クラスとなっているDTのTreeViewクラスではツリーの接続線表示を行うスタイルはありませんが、Vでの表現に近づけるため擬似的にツリーの接続線表示を行っています。

    しかしあくまでも擬似的な表示のためルートアイテムから上方への接続線が表示されます。


  9. Spreadクラスでの行ヘッダーの横幅の差異

    Spread.RowLabelModeプロパティに$STDが設定されている場合の行ヘッダーの横幅が、 Biz/Browser DT 互換モード で表示した際に、若干幅広く表示されるようになります。

    Biz/Browser V ではデフォルトで3桁の数字が表示されるギリギリの横幅となっていましたが、Biz/Browser DT 互換モードでは、4桁の数字が表示可能な横幅になっています。


  10. FormクラスのBgPatternプロパティ — SVGの表示領域の差異

    Form.BgPattern プロパティに設定したSVGに、ルート要素の width / height で指定された表示領域の外側まで図形が配置されている場合、表示結果が異なります。

    Biz/Browser Vでは、画面表示時にSVGルート要素の width / height によるクリップを行わないため、ルート要素の表示領域を超えた図形も表示されます。

    一方、Biz/Browser DT互換モードでは、SVGを画像として処理するため、ルート要素の width / height が画像の表示領域になります。その範囲外にある図形は表示されず、右端や下端が見切れた表示になる場合があります。

    これはFormオブジェクトのWidth / Heightによる差異ではなく、SVGの描画方式の違いによるものです。Biz/Browser Vと同じ表示が必要な場合は、SVG内の図形がルート要素の表示領域に収まるよう width / height を設定するか、図形全体を含む viewBox を指定してください。



セキュリティ設定の差異


  1. セキュリティ設定 — Biz/Browser VとBiz/Browser DT互換モードの対応

    Biz/Browser Vでは、接続ライセンスの <security level="..." /> でアプリケーション全体のセキュリティレベルを0~4に設定します。未指定時は2となり、複数の接続ライセンスがある場合は最も低い値が適用されます。

    Biz/Browser DT互換モードでは、crsconf の機能別設定で制御するため、Biz/Browser Vのセキュリティレベルと一対一には対応しません。


    Object.Evalメソッド

    Biz/Browser Vでは、Evalメソッド自体はセキュリティレベルによる制限を受けません。Evalで評価したスクリプトからクラスを生成したり、セキュリティ制御対象のメソッドを実行したりした場合に、各機能のセキュリティチェックが行われます。

    Biz/Browser DT互換モードでは、security.class.object.eval が false の場合はEvalメソッド自体が禁止されます。true の場合でも、評価されたスクリプトから呼び出す機能にはそれぞれのセキュリティ設定が適用されます。この設定はBiz/Browser Vのセキュリティレベルを再現するものではなく、DT独自のEval使用許可設定です。


    ExternalObjectクラスとExtValクラス

    Biz/Browser Vでは、セキュリティレベルによりExtValクラスの使用も制限されます。

    Biz/Browser DT互換モードでは、security.external_execution はExternalObjectクラスの使用を制限します。ExtValクラスは.NETのデータ型を指定するための値ラッパーであり、ExtVal自体の生成や値の設定にはこの設定は適用されません。

    ただし、ExtValはExternalObjectのメソッド呼び出しなどで使用するクラスであるため、security.external_execution = false の場合は、通常、ExtValを使用した外部オブジェクト操作も実行できません。


    外部アプリケーションで開く処理とファイルI/O

    Biz/Browser VのRuntime系メソッドに対するセキュリティレベル別の動作は、以下のとおりです。

    対象

    Biz/Browser Vでの動作

    Runtime.ShellOpen、Runtime.ShellEdit、Runtime.ShellPrint、Runtime.ShellExplore

    レベル0では確認なしで実行します。レベル1では確認ダイアログを表示し、次回以降の確認を省略できます。レベル2および3では、通常ファイルは確認付きで実行できますが、実行形式のファイルと.lnkファイルは実行できません。レベル4では、実行形式のファイルと.lnkファイルを実行できず、通常ファイルも常に確認します。

    Runtime.ShellLink

    HTTP、HTTPS、mailtoなどのURLは、通常ファイルの判定を経ずに開きます。file URLの場合はRuntime.ShellOpenと同じファイル判定を行います。

    Runtime.Exec

    レベル0では確認なしで実行します。レベル1では確認ダイアログを表示して実行します。レベル2以上では、実行形式のファイル、.lnkファイル、および実行ファイルに関連付けられた形式は実行できません。実行形式以外は確認付きで実行できます。

    FileSystem.Open

    Runtimeの外部アプリケーション起動とは異なり、セキュリティレベルによる禁止や確認ダイアログはありません。パス変換後にファイルI/Oを実行します。

    Biz/Browser DT互換モードの security.file.level は、Runtime.ShellOpen、Runtime.ShellLink、Runtime.Exec、Runtime.SyncExecなどの外部オープン・外部実行処理を制御します。

    設定値

    Biz/Browser DT互換モードでの動作

    0

    Runtime.ShellOpen、Runtime.ShellLink、Runtime.Exec、Runtime.SyncExecを確認なしで実行します。ただし、Runtime.ShellOpenで実行形式のファイルを開くことはできず、呼び出し結果は$falseです。

    1

    Runtime.ShellOpenとRuntime.ShellLinkは確認ダイアログを表示して実行します。拡張子・接続先ごとに、次回以降の確認を省略できます。Runtime.ExecとRuntime.SyncExecも確認ダイアログを表示して実行しますが、次回以降の確認を省略することはできません。

    2

    Runtime.ShellOpen、Runtime.ShellLink、Runtime.Exec、Runtime.SyncExecを実行できません。

    Biz/Browser Vのレベル2および3では通常ファイルを確認付きで開けますが、Biz/Browser DTの security.file.level = 2 では通常ファイルも含めて禁止されます。また、Biz/Browser Vのレベル4に相当する「通常ファイルは常に確認し、実行形式だけを禁止する」設定はDTにはありません。

    FileSystem.Open によるCRS内部のファイルI/Oは security.file.level の対象外です。FileSystem.mount の確認動作は、security.disk.level で制御します。


  2. Runtime.Execメソッド — 実行対象ファイルが存在しない場合の戻り値と例外の差異

    Biz/Browser Vでは、セキュリティレベル0の状態でRuntime.Execの実行対象ファイルが存在しない場合、戻り値として$Falseが返ります。

    一方、Biz/Browser DT互換モードでは、security.file.level = 0 の場合でもRuntime.Execの実行対象ファイルの存在確認が行われます。例えば、第一引数に "exe"、第二引数に存在しない C:\aaaaaa.xlsx を指定した場合、戻り値は返らず、RTM-13(指定のファイルは見つかりませんでした)の例外が発生します。第三引数のプロセス名の指定有無は、この差異に影響しません。

    security.file.level = 0 はセキュリティ確認ダイアログを表示しない設定であり、実行対象ファイルの存在確認を無効にする設定ではありません。


    影響: Biz/Browser Vで、Runtime.Execの戻り値が$Falseになることを前提に実行対象ファイルの存在確認やエラー処理を行っているスクリプトは、Biz/Browser DT互換モードでは未捕捉の例外により処理が中断される可能性があります。存在しない実行対象を指定する可能性がある場合は、Runtime.Execの呼び出しをtry/catchで囲み、 RTM-13 を考慮した例外処理を追加してください。


  3. FileSystem クラス — mount メソッドで物理フォルダー名を空にした場合の警告表示

    FileSystem.mount で物理フォルダー名を空にした場合の、セキュリティ警告ダイアログの表示条件は次のとおりです。

    条件

    Biz/Browser V

    Biz/Browser DT互換モード

    保存済みマウント情報なし、セキュリティレベル0 / security.disk.level = 0

    ダイアログを表示

    ダイアログを表示しない

    保存済みマウント情報なし、セキュリティレベル1 / security.disk.level = 1

    ダイアログを表示

    ダイアログを表示

    有効な保存済みマウント情報あり(DTの security.disk.level = 2 を除く)

    保存済みのフォルダーを使用し、ダイアログを表示しない

    保存済みのフォルダーを使用し、ダイアログを表示しない

    security.disk.level = 2

    ―

    確認省略設定にかかわらずダイアログを表示

    有効な保存済みマウント情報がある場合は、指定した物理フォルダー名より保存済みのフォルダーが優先されます。DTでは、security.disk.level = 0 でのマウントや、security.disk.level = 1 で「今後表示しない」を選択した結果も確認省略設定として保存されます。そのため、後から security.disk.level を1に変更してもダイアログは表示されません。

    保存済みの確認省略設定にかかわらずマウント先の選択を促す場合は、security.disk.level = 2 を設定してください。


  4. HtmlViewクラス — WebEngine、Silentプロパティ、および自己署名証明書の扱い

    Biz/Browser VのHtmlViewはInternet Explorerを使用していましたが、Biz/Browser DT互換モードのHtmlViewはChromiumベースのWebEngineを使用します。このWebEngineの変更により、証明書警告の扱いと Silent プロパティの役割が異なります。

    HtmlViewのWebEngineと証明書エラーの扱い

    項目

    Biz/Browser V

    Biz/Browser DT互換モード

    WebEngine

    Internet Explorer

    ChromiumベースのWebEngine

    Silent = $FALSE

    Internet Explorerの警告UIが表示されます。自己署名証明書による警告では、ユーザーが警告画面で続行を選択することでアクセスできる場合があります。

    JavaScriptの警告・確認・入力ダイアログを表示します。証明書エラーを許可する設定ではありません。

    Silent = $TRUE

    Internet Explorerの警告UIを抑止します。そのため、証明書警告画面でユーザーが続行することはできません。

    JavaScriptの警告・確認・入力ダイアログを抑止します。証明書エラーの許可・拒否は Silent では制御しません。

    自己署名証明書

    自己署名証明書を許可する専用設定はありません。Internet Explorerの証明書検証と警告UIに従います。

    security.network.self_signed_certificate で制御します。true の場合は自己署名証明書を使用可能とし、false の場合は使用不可能とします。デフォルト値は false です。

    Biz/Browser DT互換モードでは、security.network.self_signed_certificate の設定はDTネイティブのHtmlViewと同じ扱いになります。この設定を true にして自己署名証明書を許可する動作は、Biz/Browser VのInternet Explorer標準UIを再現するものではなく、ChromiumベースのWebEngineへの移行に伴うDTの仕様です。



サポート対象外クラス・メソッド


互換クラスライブラリでは、過去の実績より使用頻度が高いと思われるクラス・メソッドを厳選し搭載しています。

使用率、重要度が低いと判断された下記のクラスはサポート対象外となっています。

一部のクラスは、実行時エラーを避けるためクラス定義のみが実装されていますが、実行しても結果を得ることはできません。
サポート対象外クラス

パッケージ

クラス

Standard

Graph

GraphAxis

GraphSeries

Mail

Smtp

Pop3

MailMessage

MailHeader

MultiPartMessage

MultiPartMessagePart

サポート対象外メソッド

パッケージ

クラス

メソッド

備考

Standard

Form

FindSVGElement

Form

GetSVGElementPosition

Form

SetScrollPos

Form

GetScrollPos

Root

PrintScreenMask

Root固有の制御機能。未対応。

Root

SetIcon

Root固有の制御機能。未対応。

Root

SLogin

Root固有の制御機能。未対応。

Root

PostShellEvent

Root固有の制御機能。未対応。

Root

GetProperty

Root固有の制御機能。未対応。

Root

SetProperty

Root固有の制御機能。未対応。

Root

GetDuplicatedProcessInfo

Root固有の制御機能。未対応。

Root

CopyUString

Root固有の制御機能。未対応。

Root

PasteUString

Root固有の制御機能。未対応。

http

HttpSession

setCookieMode

サポート対象外イベント

パッケージ

クラス

イベント

備考

Extention4

TrayIcon

LButtonUp

マウス左ボタンのアップで発生するイベント

TrayIcon

RButtonUp

マウス右ボタンのアップで発生するイベント

サポート対象外プロパティ

パッケージ

クラス

プロパティ

備考

System

Exception

subMessage

補助エラーメッセージ。Biz/Browser DT では削除されています。

Standard

TextBox

ThruKeyDown

キーダウンイベント透過

Standard

EditObject

IMEZoomRatio

IME上の文字表示倍率の指定。プロパティ値の get/set は可能ですが、Ctrl+Insertキー押下によるIME変換文字の拡大表示機能自体はサポートされていません。

Standard

DisplayObject

MouseOperation

マウス操作の受付可否の指定。プロパティ値の get/set は可能ですが、マウス操作の受付可否機能自体はサポートされていません。

Standard

Dialog

TransparencyKey

ダイアログ上で透明効果の対象とする色の指定。プロパティ値の get/set は可能ですが、透過処理機能自体はサポートされていません。

Extention4

ComboBox

SelectionMode

選択モード

SplitterFrame

ThumbSize

つまみサイズ

SplitterFrame

ThumbStyle

つまみスタイル

SplitterFrame

SplitDirection

分割方向

SplitterFrame

SplitPolicy

分割ポリシー

SplitterFrame

SplitPosition

分割位置

SplitterFrame

Resize

リサイズ可否

TrayIcon

shiftKey / ctrlKey / altKey

Clicked / DoubleClicked / RClicked イベントオブジェクトのプロパティ。常に false

Extention5

HtmlView

Mode

表示モード設定

PrintStream

PrintStreamDocument

ImagePrint

イメージ印刷の選択状態の指定。プロパティ値の get/set は可能ですが、イメージ印刷の選択状態指定機能自体はサポートされていません。

PrintStreamDocument

StoragePlace

印刷イメージの保存先($FILE / $MEMORY)の指定。プロパティ値の get/set は可能ですが、保存先の切り替え機能自体はサポートされていません。

Standard

Root

AltKeyPriority

Root固有の制御機能。未対応。

Root

InputTimeout

Root固有の制御機能。未対応。

Root

ExtConnection

Root固有の制御機能。未対応。

Root

AcceptDrop

Root固有の制御機能。未対応。

Root

ShellId

Root固有の制御機能。未対応。

Root

Embedded

Root固有の制御機能。未対応。

Root

DisableActivateDialog

Root固有の制御機能。未対応。

サポート対象外定数

パッケージ

クラス

定数

備考

http

HttpSession

COOKIEMODE_DEFAULT

Cookie モード定数

HttpSession

COOKIEMODE_RFC6265

Cookie モード定数

引数仕様の差異 (Biz/Browser V で拡張されたメソッド)

パッケージ

メソッド名

V引数数

DT引数数

差分概要

Extended

SSpread.IsExcel2007File

1〜2

1

第2引数がBiz/Browser Vのみ

SSpread.OpenExcel2007File

4〜5

4

第5引数がBiz/Browser Vのみ

SSpread.SaveExcel2007File

3〜6

3〜5

第6引数がBiz/Browser Vのみ

  1. TrayIcon クラス — LButtonUp / RButtonUp イベント未対応、Clicked/DoubleClicked/RClicked イベントの shiftKey/ctrlKey/altKey が常にfalse

    Biz/Browser V の TrayIcon クラスには LButtonUp(マウス左ボタンのアップ)/ RButtonUp(マウス右ボタンのアップ)イベントがありますが、Biz/Browser DT 互換モードでは両イベントとも発生しません。


    また、対応済みの Clicked / DoubleClicked / RClicked イベントについても、イベントオブジェクトの shiftKey / ctrlKey / altKey プロパティが常に false を返し、実際の修飾キー押下状態を反映しません。


    これは Biz/Browser DT のタスクトレイ制御がマルチOS対応のライブラリ経由で行われており、ボタンの押下・解放個別の区別や、クリック時の修飾キー押下状態を取得する手段がないことに起因します。


    影響: Biz/Browser V で TrayIcon.LButtonUp / TrayIcon.RButtonUp イベントハンドラを実装しているスクリプトは、Biz/Browser DT では該当イベントが発生しないため実行されません。Clicked(左クリック相当)/ RClicked(右クリック相当)イベントへの置き換えを検討してください。また、Clicked/DoubleClicked/RClicked のイベントハンドラ内で shiftKey/ctrlKey/altKey により修飾キーの押下状態を判定している場合、常に false と判定されるため、該当の分岐処理が意図通りに動作しません。


  2. SetFontFamily関数 — フォント名の "名前/数値" 倍率指定仕様が未サポート

    Biz/Browser V の SetFontFamily(FontKind, p_font [, c_font]) では、フォント名文字列に "フォント名/数値" という書式を指定することで、実際に使用する際の文字の大きさの調整値(倍率)を指定できます。

    指定例

    意味

    "メイリオ"

    従来と同じ指定。フォントサイズはセルサイズ基準

    "メイリオ/120"

    セルサイズ基準で120%の大きさ

    "メイリオ/-100"

    グリフサイズ基準で100%の大きさ(正数はセルサイズ基準、負数はグリフサイズ基準)


    Biz/Browser DT 互換モードにはこの倍率指定仕様が実装されていません。 "/" 以降の文字列は無視されます。(つまり、"メイリオ/90"のような指定がされている場合は"メイリオ"と解釈されます。)


  3. Image クラス — Save メソッドの第四引数(プログレッシブJPEG)は未サポート

    Biz/Browser VのImage.Saveメソッドでは、JPEG保存時の第四引数に true を指定すると、プログレッシブJPEGとして保存されます。

    一方、Biz/Browser DT互換モードでは、Biz/Browser DTがこの機能をサポートしていないため実装されていません。第四引数に true を指定しても無視され、通常のJPEGとして保存されます。


    影響: プログレッシブJPEGの保存を前提としているスクリプトでは、Biz/Browser DT互換モードに移行すると通常のJPEGが出力されます。プログレッシブJPEGでの保存が必要な場合は、別途対応方法を検討してください。