「FAQ」カテゴリーアーカイブ

Curlに関するFAQのページです

RecordGridのValueFinishedイベント時に直前に選択していた行を取得するには

◆ご質問◆
RecordGridにてValueFinished イベント処理時に
直前に選択されていた行を取得するにはどのようにしたらよいのでしょうか?

◆回答◆
ValueFinished イベント処理時に直前に選択されていた行のセルを取得する方法として、
直前のセルのインデックスを持たせる為のグローバル変数を作成し、
ValueFinishedイベントの中でその変数を使用して処理を記述する方法がございます。

まず、直前のセルのインデックスを持たせる為のグローバル変数を作成します。

次に、RecordGridクラス内でRecordGridに対する
“CurrentRecordChangeRequestイベント”と”CurrentRecordChangedイベント”を呼び出し、
両方でレコードグリッドのcurrent-indexを上記のグローバル変数に格納する処理を行わせます。

これにより、フォーカスを移動した後のValueFinishedイベントにおいて、
CurrentRecordChangedRequestイベントで取得した
「直前のセルのインデックス」を使用することができます。
(CurrentRecordChangedRequestはValueFinishedの前に発生します。
ValueFinishedのタイミングでcurrent-indexの値が変わる為、
CurrentRecordChangedRequestのタイミングでのcurrent-indexは
直前のレコードのインデックスとなります。)

RecordGridの1レコードにつき2行で表示させるには

【ご質問】
RecordGridの行を、1レコードにつき2行で表示させることは可能でしょうか。

【回答】
RecordGrid、RecordGridCell関連の標準APIでは
複数行にまたがって表示することはできません。

ただし、TextFieldの中にVBox等のコンテナを埋め込み、
その中に複数行に表示するようコントールを埋め込むという方法は考えられます。

しかし、この場合、どのようにRecordSetでデータを持たせるか、
tabキーでの遷移の制御など、非常に複雑なロジックが必要になると思われます。

曲線上でイベントを実施したい

【ご質問】
曲線を作成し、その線上にてイベントを実施させることは可能でしょうか?

【回答】
Pathを使用することで実現可能です。
詳細は以下のサンプルをご参照ください。

{curl 6.0,7.0,8.0 applet}
{curl-file-attributes character-encoding = “shift-jis”}

{import * from CURL.GUI.SHAPES}

{define-proc package {make-path}:Path
    let path:Path =
        {Path
            {Distance2d  0mm, 40mm},
            PathOperation.curve-to,
            {Distance2d  0mm, 20mm},
            {Distance2d 20mm, 20mm},
            {Distance2d 20mm, 40mm},
            PathOperation.move-to,
            {Distance2d 20mm, 40mm},
            PathOperation.curve-to,
            {Distance2d 40mm, 40mm},
            {Distance2d 40mm, 60mm},
            {Distance2d 20mm, 60mm},
            PathOperation.move-to,
            {Distance2d 20mm, 60mm},
            PathOperation.curve-to,
            {Distance2d 20mm, 80mm},
            {Distance2d  0mm, 80mm},
            {Distance2d  0mm, 60mm}
        }
    {return path}
}

{define-class package final CurvePathShape {inherits PathShape}
  field private curve-path:Path
  field private approx-path:Path

  {constructor package {default path:Path, …}
    set self.curve-path = path
    set self.approx-path = {path.to-line-segment-path max-angle = 10deg}
    {with-compiler-directives allow-slow-spliced-arguments? = true do
        {construct-super
            self.approx-path,
            …
        }
    }
  }

  {method public {draw renderer2d:Renderer2d}:void
    {unless self.path == self.approx-path do
        set self.curve-path = self.path
        set self.approx-path = {self.path.to-line-segment-path max-angle = 10deg}
        set self.path = self.approx-path
    }
   
    let constant p-s:Distance = {self.get-local-device-pixel-size}
    let (stroke-thickness:Distance, thin-line?:bool) =
        {self.quantize-line-thickness
            self.stroke-thickness,
            quantum-size = p-s
        }
    {if thin-line? or stroke-thickness <= p-s then
        set stroke-thickness = 0m
    }

    {renderer2d.render-path
        self.curve-path,
        fill-pattern = self.color,
        stroke-thickness = stroke-thickness,
        line-style = self.line-style
    }
  }
}

{let shape:PathShape =
    {CurvePathShape
        {make-path},
        {on PointerEnter at l:PathShape do
            {set l.color = “pink”}
        },
        {on PointerLeave at l:PathShape do
            {set l.color = “black”}
        },       
        dragee = {ShapeDragee},
        shape-selectable = null,
        cursor = cursor-hand,
        stroke-thickness = 3
    }
}

{let p1:Distance2d = {Distance2d 10mm, 10mm}}
{let p2:Distance2d = {Distance2d 10mm, 20mm}}
{let p3:Distance2d = {Distance2d 100mm, 20mm}}
{let p4:Distance2d = {Distance2d 100mm, 10mm}}
{let newPath:Path = {Path p1, PathOperation.curve-to, p2, p3, p4}}

{let c:Canvas =
    {Canvas background=“white”, width=200mm, height=200mm}
}

{value
    {set shape.path = newPath}
    {c.add shape}
    c
}

複数アプレットを同時に起動させたくない

◆ご質問◆
既にアプレットが起動していた場合、別のアプレットを起動させたくないのですが可能でしょうか。

◆回答◆
独立型アプレットの場合、
デフォルトでは同一アプレットの複数起動は行いません。
これを複数起動を許す場合、
Appletクラスにallow-multiple-instancesメソッドを呼び出すことで
複数のアプレットを起動することができます。

独立型アプレットで無い場合、
Curl自身でご質問にあるような機能は標準APIでは御座いません。

このような機能を実現するには何らかの作りこみが必要になってきます。
例えば、
ただ単純に1つのPCの中で同時に2つ以上のアプレットを起動したくない場合は、
1つ目のアプレットが起動した時に、ファイルもしくはパーシスタントデータ等に
1つ目のアプレットが起動していることを表すデータを書き込みます。
2つ目に起動しようとしたアプレットは、
1つ目のアプレットが書き込んだデータを読み、1つ目のアプレットが存在していることを知らせ、
起動させるのではなく、終了させるようにプログラムの中で分岐させます。
また、1つ目のアプレットが終了する際には書き込んだデータを削除しておきます。

ただ、正常に1つ目のアプレットが起動、終了を行う場合は問題ないのですが、
何らかの問題により1つ目のアプレットが異常終了した場合(OS自身が強制終了してしまった、電源が急に落ちた等)、
1つめのアプレットが起動していることを示すデータが残ったままになるため
再びアプレットを起動することができなくなる問題があります。
これを回避するようにある特定の時間が経過するとそのデータを無視するなどの
工夫も必要になってくるかと思います。

Record順にデータを取得するには

◆ご質問◆
RecordGridのRecord順に取得するにはどのようにすればよいのでしょうか?

Curl開発者ガイドの以下サンプルでは、表示順が不規則になっています。
 データの管理と表示
 └データレコードとグリッド
  └RecordGridでのデータ選択
   └行と列の選択

◆回答◆
該当の箇所はrg.selection.recordsで、
返されるオブジェクトは{Iterator-ofint}となります。
Iterator-ofはヘルプにもありますように要素の順列は保証されません。

また、RecordSet自身はただのデータの集合のみで
データ(レコード)の順序は厳密には持ちません。

ですのでレコード順に取得したい場合は、
何かレコード順であることを示すキーを用いてソートする必要があります。

RecordGridのカラム幅をPixcelで取得するには

【ご質問】
レコードグリッド上のカラム幅を任意に伸縮した後に当該カラムの幅をPixcelで取得するには
どのようにしたらよいのでしょうか。

【回答】
カラムの幅は何も処理を加えずに単純に取得するとSI-単位のm(メートル)で返されます。
これをpixelに変換するにはDisplayContext.pixel-sizeを使用して計算する必要があります。

詳細は以下のサンプルをご参照ください。
「First」列のカラム幅をドラッグで適当に変更して
「Savevalue」ボタンを押してください。
「First」列の幅の値がpxで表示されます。

{curl 6.0,7.0,8.0 applet}
{curl-file-attributes character-encoding = “shift-jis”}
{applet
    {compiler-directives
        allow-any-calls? = true,
        allow-implicit-any-casts? = true
    }
}
{import * from  CURL.GRAPHICS.DISPLAY}
{def display = {Display.get-primary}}

{import * from CURL.LANGUAGE.SOURCE}
{let display-context:DisplayContext =
    {get-default-display-context}}

{let people:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField “First”, domain = String},
            {RecordField “Last”, domain = String},
            {RecordField “Age”, domain = int}
        },
        {RecordData First = “John”, Last = “Smith”, Age = 25},
        {RecordData First = “Jane”, Last = “Smith”, Age = 29},
        {RecordData First = “Jane”, Last = “Jones”, Age = 28}
    }
}
{def rgc1 = {RecordGridColumn
                width = 100px,
                “First”}
}
{def rgc2 = {RecordGridColumn width = 2cm,“Last”}}
{def rgc3 = {RecordGridColumn width = 1.5cm,“Age”}}

{let save-width-value:String = {format “%s”,rgc1.width }}

{value
    {VBox
        {RecordGrid
            record-source = people,
            cells-take-focus? = false,
            select-current-record? = true,
            height = 10cm,
            width = 13cm,
            automatic-columns? = false,
            rgc1,
            rgc2,
            rgc3
        },
        {VBox
            {HBox
                {TextDisplay value = “Set-width with cm”},
                {TextField
                    {on ValueFinished at tf:TextField do
                        {if tf.value != “” then
                            set rgc1.width = {evaluate {format “%scm”,tf.value}}
                        }
                        {popup-message
                            tf.value & “cm = “ &
                            {format “%s”,{round rgc1.width / display-context.pixel-size}} &
                            ” px”
                        }
                    }  
                }
            },
            {HBox
                {TextDisplay value = “Set-width with px”},
                {TextField
                    {on ValueFinished at tf:TextField do
                        {if tf.value != “” then
                            ||String型で保存していたので、単位をつけてevaluate
                            set rgc1.width = {evaluate {format “%spx”,tf.value}}
                        }
                    }  
                }  
            }          
        },
        {HBox
            {CommandButton label = “Show width !”,
                {on Action do
                    {popup-message
                        {VBox
                            “rgc1.width = “ & {format “%s”,rgc1.width}
                        }
                    }
                }
            },
            {CommandButton label = “Save value”,
                {on Action do
                    set save-width-value =
                        {if rgc1.width isa PixelDistance then
                            {format “%s”,rgc1.width}
                         else
                            {format “%spx”,{round rgc1.width / display-context.pixel-size}}
                        }
                    {popup-message
                        “saved-value = “ & save-width-value    
                    }
                }
            },
            {CommandButton label = “Restore value”,
                {on Action do
                    set rgc1.width = {evaluate save-width-value}
                }
            }
        }
    }
}

EmbeddedBrowserGraphicのHTTPリクエストについて

◆ご質問◆
EmbeddedBrowserGraphic内のHTMLコンテンツから発信されたHTTPリクエストについて
 ①事前にCurlで実装された通信により付与されたCookieは、当該リクエストにも付与されますか?
 ②Curlの実装から、当該リクエスト内容を参照可能でしょうか?
 ③Curlの実装から、当該リクエストに対するレスポンス内容を参照可能でしょうか?
 ④Curlの実装から、当該リクエストに対するレスポンスに付与されたCookieの参照・操作が可能でしょうか?

◆回答◆
EmbeddedBrowserGraphicの内部的には、
ActiveXを使用しCurl内部にブラウザを埋め込んで
表示するという実装となっています。
ですので、CurlのプロセスとEmbeddedBrowserGraphicを
利用して表示しているブラウザのプロセスは全くの別物となります。

①C/S間に、中間サーバを介すということですので
 そのサーバのアドレスは別ドメインとなっているということでしょうか。
 その場合、Curlに付与されたクッキーはEmbeddedBrowserGraphic内で
 表示されているHTMLでは読み取ることができません。
 また、CurlからクッキーをHTMLに付与するAPIもございません。
 勿論、EmbeddedBrowserGraphicを使用しているからといって自動的にCurlのクッキーを
 EmbeddedBrowserGraphic内で表示されているHTMLに付与することはありません。
②残念ながら不可能です。
③残念ながら不可能です。
④残念ながら不可能です。

“curl-access.txt”にアクセスできない

◆ご質問◆
一度、不正な curl-access.txtを受信した場合は二度とそのcurl-access.txtにはアクセスをしないのでしょうか?
再度 curl-access.txtにアクセスさせる方法は、あるのでしょうか?

◆回答◆
ブラウザのキャッシュに不正なcurl-access.txtが保存されてしまい、
ブラウザキャッシュから読み込まれてしまうという可能性は考えられます。

再度、アクセスをする場合はブラウザのキャッシュを削除することで行えます。

“curl-access.txt”の有効期限について

◆ご質問◆
curl-access.txtには有効期限のようなものが存在するのでしょうか?

◆回答◆
有効期限の指定はできません。

curl-access.txtの詳細については
 「Curl開発者ガイド」→「Webサーバの構成」→
 「アプレットがWebサイトのファイルへアクセスする許可」の項を
ご参照ください。

OCCのモジュール単位のインストールについて

【ご質問】
OCC機能を使用するにあたりモジュール単位(パッケージ単位)でインストールを行うことは可能でしょうか。

【回答】
可能です。

パッケージ単位でOCCのコピーを行なうにはディレクトリ構成に工夫が必要になります。
 ・「メインモジュール」ディレクトリ
 ・「パッケージ1モジュール」ディレクトリ
 ・「パッケージ2モジュール」ディレクトリ
 …
上記の様にパッケージを呼び出すメインモジュール(start.curl、manifest.mcurlファイルなどが含まれる)と
各パッケージモジュールは別のディレクトリに分ける必要があります。

詳細はサンプルをご参照ください。
(バージョン6・7・8用のサンプルです。)
このサンプルでは、Curlルートディレクトリの中に
 「MAIN」ディレクトリ
 「PACKAGE1_1」ディレクトリ
 「PACKAGE1_2」ディレクトリ
 「PACKAGE1_3」ディレクトリ
があります。
「MAIN」ディレクトリ内に manifest.mcurl、start.curl  が格納されており
start.curlがら各モジュール(パッケージ)を呼び出しています。
このような構成で適切に curl-timestamp.txt、curl-archive.car(curl-contens.txt) を配置、
記述すればパッケージ単位で更新することが可能になります。

更新されるモジュールの判断基準は、
Curlルートのタイムスタンプが新しく、各モジュールのディレクトリにあるタイムスタンプの新しいもの
が更新されます。

なお、OCCをモジュール単位で配備して使用する場合は
Curl IDEのOCCデプロイ機能は使用できません。
APIを使用して必要なファイルを作成してください。

・curl-archive.car(curl-contents.txt)
 create-curl-archive-file(create-curl-contents-file)プロシージャを使用して各パッケージごとに作成します。

・curl-timestamp.txt
 create-curl-timestamp-fileプロシージャを使用して各パッケージごとに作成します。

・curl-modules.txt
 create-curl-modules-fileプロシージャを使用してルートディレクトリに作成します。

詳細は、Curl開発者ガイドの
[外部リソースとの対話]-[随時接続コンピューティング (OCC)]
の項と、APIリファレンスの
[CURL.IO.PACK]-[create-curl-archive-file]・[create-curl-contents-file]
                       [create-curl-modules-file]・[create-curl-timestamp-file]
の項をご参照ください。

DLLファイルがエクスポートするクラスの利用について

◆ご質問◆
DLLファイルがエクスポートするクラスの利用(※)は可能でしょうか。
※__declspec(dllexport)でエクスポートしたクラスのメンバ関数呼び出しなど。

◆回答◆
DLLファイルがエクスポートするクラスを利用する方法については、
通常のDLLファイルの利用方法と同様になります。

Curl開発者ガイドの
[基本概念 – ライブラリ]→[外部ライブラリ]の項を
ご参照ください。

RecordGridにて拡張したCellのフォーカスアウトイベントが複数回発生する

【ご質問】
レコードグリッドセルにて拡張したセルをフォーカスアウトすると
イベントが複数回発生してしまいます。
解決するにはどうしたらよいでしょう。

【回答】
RecordGridはさまざまなコントロールが複雑に絡み合って構成されております。
直接セル内のTextFieldに対してFocusIn、FocusOutのイベントを
設定しても意図した通りのイベントの発生となるとは限りません。

RecordGrid内でスクロールされた場合や、クリックされた場合、
再描画する必要がある場合などにrefresh-dataメソッドが呼ばれ、
その中でRecordGridCellが使い回しされ、RecordGridのセルに当てはめられていきます。
その際にそのセルの中で使われているTextFieldに
FocusIn、FocusOutのイベントが付いている場合、複数回のイベントが発生します。

このような状況でセル間のフォーカスが入った、出て行った事を通知する
RecordGridCell.note-grid-focus-in/RecordGridCell.note-grid-focus-out
メソッドが用意されています。
上記メソッドを使用することで実現することが可能かと思われます。

詳細は以下のサンプルをご参照ください。

{curl 6.0,7.0,8.0 applet}
{curl-file-attributes character-encoding = “shift-jis”}

{define-enum public Rank
    First,
    Second,
    Third
}

{let records:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField
                “id”, caption = “User ID”, domain = int,
                index-type = RecordFieldIndexType.unique
            },
            {RecordField “Last”, domain = String},
            {RecordField “First”, domain = String},
            {RecordField “City”, domain = String}
        },
        {RecordData id = 1, Last = “Smith”, First = “Gene”, City = “Boston”},
        {RecordData id = 2, Last = “Smith”, First = “Fred”, City = “Cambridge”},
        {RecordData id = 3, Last = “Smith”, First = “Mike”, City = “Keene”},
        {RecordData id = 4, Last = “Smith”, First = “Ben”, City = “New Haven”},
        {RecordData id = 5, Last = “Abrams”, First = “Ben”, City = “Boston”},
        {RecordData id = 6, Last = “Jones”, First = “Sam”, City = “Storrs”},
        {RecordData id = 7, Last = “Stevens”, First = “Nigel”, City = “Hartford”},
        {RecordData id = 8, Last = “Stevens”, First = “Bert”, City = “Cambridge”},
        {RecordData id = 9, Last = “Linden”, First = “Pat”, City = “Hartford”},
        {RecordData id = 10, Last = “Abrams”, First = “Mat”, City = “Boston”}
    }
}
{define-class public TestCell {inherits StandardStringCell}
  {constructor public {default}
    {construct-super}
  }

  {method public {note-grid-focus-in}:void
    {super.note-grid-focus-in}
    {output “FocusIn “ & “self::[[“ & self & “]]”}
  }
  {method public {note-grid-focus-out}:void
    {super.note-grid-focus-out}
    {output “FocusOut “ & “self::[[“ & self & “]]”}
  } 
}

{let record-grid:RecordGrid =
    {RecordGrid
        record-source = records,
        height = 10cm,
        width = 13cm,
        {RecordGridColumn “id”, cell-spec = TestCell,edit-on-focus? = false},
        {RecordGridColumn “Last”},
        {RecordGridColumn “First”},
        {RecordGridColumn “City”},

        {on FocusIn do
            {output “FocusIn”}
        },
        {on event:FocusOut do
            {output “FocusOut”}
        }
    }
}

{View
    {Frame width = 13cm, height = 10cm,
        {VBox
            record-grid
        }
    },
    visibility = “normal”,
    {on WindowClose do
        {exit}
    }
}

 

画面上に表示されている内容と印刷結果の内容が異なる

◆ご質問◆
画面上では枠内に表示されている文字が、印刷をすると枠外にはみ出して表示される。
解決方法あるのでしょうか。

◆回答◆
画面上に表示されているものと印刷されたものを
【完全に】一致させることは不可能です。

使用されるディスプレスの解像度、DPI、フォントのバージョンや
プリンタドライバ、プリンタフォントなどの様々な要因によって
ディスプレイ上に表示されているものとプリンタで印刷された結果に
微小な差が出ることがあります。
これは、Curlに限ったことではなく多くのアプリケーションでも発生する問題です。

「ずれ」に対して対応できるように余裕を持たせて
レイアウトの作成を行うようお願いします。

キャッシュの最終更新日付がサーバ上の更新日付より新しい場合の同期について

◆ご質問◆
キャッシュの最終更新日付がWebサーバー上の
更新日より新しい場合は再同期はされるのでしょうか?

◆回答◆
クライアントPCにキャッシュされているファイルの最終更新日付が
webサーバー上のファイルの最終更新日付より新しい場合は、再同期は行われません。

基本的に、クライアントPCにキャッシュされているファイルの最終更新日付は
同期元となるwebサーバー上のファイルの最終更新日付より
古い日付もしくは同じ日付であるという前提があるため、
クライアントPCにキャッシュされているファイルが
webサーバーのファイルの最終更新日付より新しい最終更新日付となる場合は
再同期が行われないように実装されております。

RecordGridにて表示される値に誤差が生じる

◆ご質問◆
グリッドのドメインが「double」の場合に、
小数値を入力すると誤差が生じるケースが存在します。

どのようにすれば誤差を生じさせず、表示することができるのでしょうか。

◆回答◆
小数以下の数値で誤差を生じさせない方法として、
2点挙げられます。

■1点目
 RecordFieldのドメインにStringを設定し、
 入力した値をそのまま表示させるようにし、
 計算を行う際には値の小数を整数に変換した上で
 計算するという方法です。

 まず、プログラムで扱う小数点以下の最大桁数を決めます。
 (下記のサンプルであれば、小数点以下3桁が最大桁数)
 その桁数までが整数となるように
 10のN乗を掛け、整数として計算を行い、
 その結果を10のN乗で割ります。
 これにより、浮動小数点数を介さずに計算を行い、
 誤差の発生を抑止できます。

 ==============================================
 {let number:double = 0}

 {for i:int = 1 to 100000 do
     ||小数0.003を整数にするために1000倍する
     set number = number + 0.003*1000
 }
 ||上記で1000倍した分を元に戻す
 {set number = number/1000}
 {value (number asa int)}

 ==============================================

■2点目
 RecordFieldのドメインにStringを設定し、
 計算の時には、BigDecimalを使用するという方法です。

 CurlではjavaでいうところのBigDecimalと類似した機能を扱うことができます。
 BigDecimalでは任意の長さの10進数の表現と操作を行え、
 浮動小数点数のように10進数から2進数に変換するという動作をしないため、
 丸め誤差を生じさせずに計算を行う事ができます。

 BigDecimalクラスは既存のCurlAPIではないため、
 以下URLよりダウンロードする必要がございます。
 http://www.curlap.com/curl/bigDecimalSample.zip

 ダウンロードしたパッケージ(big-pkg.curl)をBigDecimalを
 使用したいアプレットにインポートすることにより、
 BigDecimalクラスを使用することができます。
  (但し、big-pkg.curlの内容に関してサポートの範囲外になるため、
 このパッケージに関するサポートは行いません。
 あらかじめご了承下さい。)

 詳細はサンプルをご参照ください。

TabContainer内のテキストが範囲選択できない

【ご質問】
HBoxやVBoxに配置したテキストは範囲選択が可能ですが、
TabContainer内に配置したテキストは範囲選択することができません。

TabContainer内のテキストを範囲選択可能にするためには、
どのような設定をすればよいでしょうか。

【回答】
TabContainer内に配置したテキストが範囲選択できないのは仕様です。
TabPane内のテキストをGuiRangeSelectionFrameで囲めば選択できるようになります。

詳細は以下のサンプルをご参照ください。

{curl 6.0,7.0,8.0 applet}
{curl-file-attributes character-encoding = “utf8”}

{TabContainer
    {TabPane
        {GuiRangeSelectionFrame
            {text font-size = 28pt, TabContainerの作成}
        }
    },
    {TabPane
        {text font-size = 28pt, 2}
    },
    {TabPane
        {text font-size = 28pt, 3}
    }
}

ListBoxにて右クリックでValueFinishedを行いたい

【ご質問】
ListBoxにて値を左クリックで変更するときには”ValueFinished”イベントが
実行されますが、右クリックで変更するときには実行されません。

右クリック時に”ValueFinished”イベントを実行させることは可能でしょうか。

【回答】
ListBox内において、右クリックでイベントを発生させる方法として、
ValueFinishedの代わりにValueChangedを使用する方法が考えられます。

{on ValueChanged at box:ListBox do
    {popup-message “ValueChanged”}
}

また、ValueFinishedを使用する必要がある場合は、
ValueChangedイベントの中でValueFinishedイベントを呼び出すという方法もあります。
動作としてはValueFinishedの代わりにValueChangedを使用した場合とほとんど変わりません。

ListBoxクラスの既定では、ValueFinishedはマウスの左ボタンを
離した際に、イベントが発生するようになっています。
その為、既定のListBoxにおいて、マウスの右ボタンを使用して
ValueFinishedのイベントを発生させることはできません。

PointerReleaseがマウスの左ボタンによって行われた場合は、
ListBoxクラスのfire-value-finishedメソッドが呼び出されるように設定されています。
マウスの右ボタンでPointerReleaseが行われても、
fire-value-finishedメソッドが呼び出されないためValueFinishedは発生しません。

マウス左ボタンのPointerReleaseイベントでのみ、
ValueFinishedイベントが発生するように設定されている理由は、
マウス右ボタンのPointerReleaseイベントを
コンテキストメニューの呼び出しに利用するためです。

子画面起動時のKeyPressイベントについて

【ご質問】
画面からボタン押下で子画面(ダイアログ(modal?=true))を生成して、子画面の起動を行い、
子画面でESCキーを押下すると子画面のWindowCloseイベントが発生し、子画面が閉じます。

「×」をマウスでクリックした場合は、WindowsCloseイベントを発生させ、
ESCキーを押下した際に、WindowCloseイベントを発生させないようにすることは可能でしょうか。

【回答】
DialogにKeyPressイベントをつけるのではなく、
GuiManager(アプレット全体)にKeyPressイベントを
つけてはどうでしょうか。

{{get-gui-manager}.add-event-handler
    {on key:KeyPress do
        {if key.value == KeyPressValue.esc then
            {key.consume}
        }
    }
}

しかし、アプレット全体につけることになるので
他の場所(Dialog以外)でもKeyPressイベントが動きますので
他の場所においてエスケープキーで何か処理させているような
箇所がある場合は注意が必要になります。

「各行の先頭の文字番号」を取得するには

【ご質問】
テキストエリアに表示している文字の
「各行の先頭の文字番号」を取得するにはどうしたらよいのでしょうか。

【回答】
CurlRTE4.0ではオープンコントロールを利用すれば
“テキストエリアの各行の先頭の文字番号”を取得することが出来ます。

詳細はサンプルをご参照ください。

※オープンコントロールを使用しているため、
  パッケージをロードする際にパフォーマンスに影響が生じる可能性があります。
  使用する際にはご注意ください。

pacファイルを使用してのプロキシ設定について

【ご質問】
InternetExplorerの「インターネットオプション」にてプロキシ設定を行い、
プロキシーサーバを介して接続を行っている端末があるのですが、この端末から

 1.ネットワーク上に存在する独立型アプレットにcurl://launch/~を使用してアクセスする場合
 2.独立型アプレット内で別のネットワークに対して、通信処理を実施する場合

のどちらについてもプロキシ設定が有効になっておらず、直接アクセスを行ってしまいます。
独立型アプレットにてプロキシ設定を有効にするにはどのようにすればよいのでしょうか?

※pacファイルを利用して自動的にプロキシサーバの設定をしています。

【回答】
IEでプロキシの設定を行った場合、その設定された値はレジストリに保存されます。
しかし、pacファイルで動的に指定される場合は、
レジストリにプロキシサーバのアドレスが保存されません。
(pacファイルのパスは保存されています。)

Curlは通信時にこのレジストリの値を参照しますので、
何らかの理由で読み取れていない可能性があります。

プロキシサーバの指定をpacファイル等で動的に指定するのではなく、
プロキシサーバのアドレスを直接指定して
(設定の自動検出、自動構成スクリプトの使用をやめ
「LANにプロキシサーバを使用する」にチェックをいれて指定する)
確認を行ってください。