「Curlにて実現したい動作について」カテゴリーアーカイブ

Curlに対する要求仕様について、過去にお問い合わせの多かった事例を紹介いたします。記載日時点での状況(最新or問い合わせ時指定バージョンにおける仕様)を元に回答したものです。
 

他言語からの移植性について

【ご質問】
他言語からの移植性について教えて下さい。

【回答】
VBシステムに関しては、VBで構築されたC/S型システムの自動変換ツールを
ベースにしたマイグレーションサービスを提供しております。
自動変換ツールを用いることで、画面やロジックをCurlのコードにコンバージョンします。

詳細は以下のページをご参照ください。
http://www.curlap.com/solution/vb/

.NETやJ2EE等で自動生成されたWSDL文書などは読めますか

【ご質問】
.NETやJ2EE等で自動生成されたWSDL文書などは読めますか。

【回答】
オープンソースライブラリであるWSDKを利用することでWSDLを読み込むことが出来ます。
WSDKではWSDLを読み込み、Curlのパッケージを自動生成することなどが出来ます。

WSDKのインストール方法は、以下をご参照ください。
http://developers.curlap.com/re-reference/25-data/107-wsdkweb-service-development-kit.html

CurlからHTML(CurlをEMBEDしているページ)へアクセスする方法

【ご質問】
CurlからHTML(CurlをEMBEDしているページ)へアクセスする方法はありますか。

【回答】    
Curl の実行環境6.0以降では、HTMLにEMBEDされたCurlのアプレットと、
そのHTMLに定義されているJavaScriptとの相互連携ができるようになりました。

詳細は、Curl開発者ガイドの
[外部リソースとの対話]-[子アプレットとJavaScriptサポート]
の項をご参照ください。 

パーシスタントデータは暗号化されていますか

【ご質問】
パーシスタントデータは暗号化されていますか?
 
【回答】    
パーシスタントデータは暗号化されていません。
ただし、Curlの実行環境4.0より暗号化APIが追加されましたので、暗号化をしてファイルに保存するなどセキュアなソリューションを実現することが可能です。
サンプルにつきましては「APPS Gallery」よりご確認ください。
APPS Gallery 【暗号化】
http://developers.curlap.com/gallery/apps/56

Curlのアプレットとブラウザの間のセッション継続は簡単に出来ますか

【ご質問】
Curlのアプレットとブラウザの間のセッション継続は簡単に出来ますか。

【回答】    
次の方法が考えられます。

①request-browser-resident-http プロシージャを利用することによって、
  ブラウザセッションの継続が簡単に出来ます。

  詳細は、Curl開発者ガイドの
  [外部リソースとの対話]-[Web サイトとの対話]-[ブラウザ常駐HTTP]
  の項をご参照ください。 

②期限付きcookieでセッションを管理している場合は、
  set-secure-http-cookieやset-insecure-http-cookieプロシージャで、
  Curlアプレットにcookieを渡すことができます。

③セッションcookieでセッションを管理している場合は、
  サーバ側で起動ファイル(一般的には、start.curl、start.dcurl)を動的に生成することで、
  Curlアプレットにcookieを渡すことができます。
  set-secure-http-cookieやset-insecure-http-cookieプロシージャに
  サーバが生成した値を設定してください。

クッキー情報の共有について、以下のページもご参照ください。

Cookieを引き継ぐ方法

パッケージキャッシュのメリットを最大限に活かしたアプリケーション

【ご質問】
パッケージキャッシュのメリットを最大限に活かしたアプリケーションを
作成したいのですが、設定方法がわかりません。

【回答】
Curlにおけるキャッシュと同期についての詳細は、Curl開発者ガイドの
[コンテンツの構成要素]-[キャッシュと同期]
の項をご参照ください。

RTEのインストール判断

【ご質問】
Curlの実行環境(Curl RTE)がクライアントにインストールされていない場合はインストールガイダンスページに遷移、
インストールされている場合はCurlアプリケーションを実行したいのですが可能でしょうか。

【回答】
VBScript・JavaScript等でインストールの有無を確認することが出来ます。

“Curl.Surge”(VBScript)、”text/vnd.curl.surge”(JavaScript)のオブジェクトが
作成可能かを判断することによりインストール有無を確認するようなアプローチがあります。

VBScript・JavaScriptで確認可能かどうかはブラウザの種類に依存する場合がありますのでご注意下さい。

RecordGridにて特定桁数入力時にカーソルを自動移動させたい

【ご質問】
RecordGridにおいて、必要な桁数入力された場合は、
自動的に次の項目へカーソルを移動させることは可能ですか。

【回答】 
StandardRecordGridCellなどを継承したカスタムセルを作成することで可能です。

詳細は、Curl開発者ガイドの
[データの管理と表示]-[データ レコードとグリッド]-[カスタム セルの作成]
の項をご参照ください。 

Curlファイルのアップデート時にProxyのキャッシュを無視したい

◆ご質問◆
アプリケーションサーバ側のCurlアプリケーションをアップデートした時には
Proxyサーバ上のキャッシュを無視して必ずアプリケーションサーバから
モジュールを取得するようにしたいのですが、可能でしょうか。

◆回答◆
生憎、Curlだけで制御することは困難です。

Curlの通信のメカニズムは、
Curl独自の通信メカニズムを使っているわけではないため、
クライアントサイドの設定を用いることができます。

例えば、以下のようなことを行うことで、制御することは可能かと思われます。
 ・インターネットプロパティにてプロキシを使わない設定をする
 ・PACファイルと呼ばれるブラウザのプロキシ設定を制御できる仕組みを用いる
 ・サーバサイドにて、Cache-Controlを用いるなどして制御する

ページ指定による印刷

【ご質問】
ページを指定して印刷をすることは可能でしょうか。

【回答】
ページを制御する(例えば2ページ目と3ページ目だけを印刷する)ような場合、
print-graphicプロシージャ内のfrom-page、to-pageで実現可能です。

詳細は、APIリファレンスの
[CURL.GUI.BASE]-[print-graphic]
の項をご参照ください。 

グラフの色を指定するには

【ご質問】
複数系列を表示するグラフにおいて、系列毎の色を任意に設定することは可能でしょうか。

【回答】
Chartクラスのフィールドcolor-paletteを設定することで実現可能です。

詳細は、APIリファレンスの
[CURL.GUI.CHARTS]-[Chart]
の項内のプロパティ[color-palette]の項をご参照ください。 

グラフの凡例を表示する位置を変更するには

【ご質問】
Curlで棒グラフを描画すると、デフォルトでは凡例はグラフ描画フィールド外に表示されます。
この凡例を棒グラフの近くやグラフ内に表示したいのですが、可能でしょうか。

【回答】
凡例をグラフ描画フィールド外のどこに表示するかに関しては
・legend-location
・legend-alignment
を使用することで調整できます。

上記を調整しても表示できない場所に表示したい場合、例えばグラフ内に表示したい時などには
・create-legend
を使用することでグラフの凡例グラフィックを取得出来ますので、
create-legendで取得したグラフィックをグラフ内に追加することで実現出来ます。

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

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

{import * from CURL.GUI.CHARTS}

{let records:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField
                “Region”,
                domain = String},
            {RecordField “M1”, caption = “January”, domain = int},
            {RecordField “M2”, caption = “February”, domain = int},
            {RecordField “M3”, caption = “March”, domain = int}
        },
        {RecordData Region = “North”, M1 = 100, M2 = 140, M3 = 130 },
        {RecordData Region = “East”, M1 = 110, M2 = 140, M3 = 170},
        {RecordData Region = “South”, M1 = 140, M2 = 100, M3 = 130},
        {RecordData Region = “West”, M1 = 160, M2 = 190, M3 = 140}
    }
}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 7cm,
        legend-enabled? = false,
        {LineLayer
            records,
            “M1”,
            “M2”,
            “M3”,
            legend-enabled? = true,
            x-axis-data = {ChartDataSeries records, “Region”},
            {on ChartLayoutChanged at ll:LineLayer do
                ||凡例グラフィックの定義
                let legend1:#Graphic = {chart.create-legend}
                {ll.add
                        {HBox
                            color = “black”,
                            width = {ll.chart.get-x-axis-length},
                            valign = “bottom”,
                            {Fill},
                            legend1
                        }
                }
            }
        }
    }   
}

{VBox
    chart
}

詳細は、Curl開発者ガイドの
[グラフ]-[グラフへのシェイプの追加]
の項と、APIリファレンスの
[CURL.GUI.CHARTS]-[Chart]
の項内のプロパティ[legend-location]、[legend-alignment]の項と
メソッド[create-legend]の項をご参照ください。

Layerの情報を取得するには

【ご質問】
グラフの種類によって凡例のサイズを変更したいのですが、可能でしょうか。
 例:
  LineLayerの場合、凡例のサイズを「height = 2pt」
  BarLayerの場合は、凡例のサイズを「height = 10pt」

【回答】
legend-entry-factoryに設定するファクトリプロシージャの引数”chart”から
チャートに表示する各レイヤの情報を取得可能ですので、
これにより条件分岐させてこの凡例のサイズ(高さ)を設定させてみてはいかがでしょうか。

(実装例)

let height = 0pt
{type-switch chart
    case lc:LayeredChart do
        {type-switch lc.layers[legend-index]
            case ll:LineLayer do
                set height = 2pt
            case bl:BarLayer do
                set height = 10pt
        }
}

Y軸の異なるグラフの表示

【ご質問】
Y軸が異なる、3本のグラフを1つのプロットエリアに表示したいのですが、どうしたらよいのでしょうか。
X軸は同じ値を用いています。

【回答】
2つの異なるY軸であれば左側と右側に出すことが標準APIで可能です。
また、取りうる値の範囲が似た範囲であれば左右どちらかの軸を共有し3本以上のグラフを描くことは可能です。

以下のサンプルを参考にしてください。

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

{import * from CURL.GUI.CHARTS}

{let records:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField “Region”, domain = String},
            {RecordField “M1”, caption = “January”, domain = int},
            {RecordField “M2”, caption = “February”, domain = int},
            {RecordField “M3”, caption = “March”, domain = int}
        },
        {RecordData Region = “North”, M1 = 100, M2 = 140, M3 = 130 },
        {RecordData Region = “East”, M1 = 110, M2 = 140, M3 = 170},
        {RecordData Region = “South”, M1 = 140, M2 = 100, M3 = 130},
        {RecordData Region = “West”, M1 = 160, M2 = 190, M3 = 140}
    }
}

{let left-group:ShapeGroup =
    {ShapeGroup
        color = FillPattern.black
    }
}

{let right-group:ShapeGroup =
    {ShapeGroup
        color = FillPattern.black
    }
}

{LayeredChart
    width = 15cm,
    height = 7cm,
    left-axis =
        {ChartAxis
            {ChartDataSeries records, “M1”},
            {ChartDataSeries records, “M2”},
            axis-group = left-group
        },
    right-axis =
        {ChartAxis
            {ChartDataSeries records, “M3”},
            axis-group = right-group
        },
    {LineLayer
        records,
        “M1”,
        “M2”,
        “M3”,
        x-axis-data =
            {ChartDataSeries records, “Region”},
        stroke-thickness = 2pt,
        ||わかりやすいように折れ線にポインターが入った場合は使用している軸を赤くする
        {on ChartLayoutChanged at layer:LineLayer do
            {layer.series-shapes[0].add-event-handler
                {on PointerEnter do
                    set left-group.color = FillPattern.red
                }
            }
            {layer.series-shapes[0].add-event-handler
                {on PointerLeave do
                    set left-group.color = FillPattern.black
                }
            }
            {layer.series-shapes[1].add-event-handler
                {on PointerEnter do
                    set left-group.color = FillPattern.red
                }
            }
            {layer.series-shapes[1].add-event-handler
                {on PointerLeave do
                    set left-group.color = FillPattern.black
                }
            }
             {layer.series-shapes[2].add-event-handler
                {on PointerEnter do
                    set right-group.color = FillPattern.red
                }
            }
            {layer.series-shapes[2].add-event-handler
                {on PointerLeave do
                    set right-group.color = FillPattern.black
                }
            }
        }
    }
}

TextDisplayのキャレットについて

【ご質問】
TextDisplayにキャレットを表示させることは可能でしょうか。

【回答】
通常、フィールドにキャレットが入るということはユーザにそのフィールドが
入力可能であるということを示します。
これはCurlに限らず一般的なGUIの使われ方です。

CurlのTextDisplayは文字情報を”表示する”だけに使われるものです。
入力を行わないということが前提になるため、TextDisplayではキャレットを表示することができません。

アプリケーションの仕様上どうしても必要である場合、
カスタマイズしたコントロールを作成する必要があります。

入力情報をデータベースやファイルへ保存するには

◆ご質問◆
入力した明細情報を、クライアントのデータベースまたは外部ファイルとしてローカルに保管することは可能ででしょうか。

◆回答◆
可能です。
以下のような方法が考えられます。

1.テキスト形式(csvなど)でファイル出力する
2.ADO接続等によりローカルDBにアクセスする
3.SQLiteを使用する
4.persistent dataを使用する

※SQLiteはVer.7よりサポートしております。
 SQLiteに関しましては、以下サイトもご参照ください。
 http://developers.curlap.com/re-reference/25-data/18-sqlite.html

印刷設定について

【ご質問】
印刷に関しては、どのような設定が可能でしょうか。

【回答】
Curlでは印刷用のAPIとしてprint-graphicがあります。
以下のような設定が可能です。
  ・マージンの設定
  ・タイトル及びページ数
  ・日時の印刷設定
  ・ページの伸長設定
  ・開始ページと終了ページの指定
  ・印刷向きの指定
  ・出力プリンターの指定

詳細は、Curl開発者ガイドの
[グラフィカル ユーザー インターフェイス]-[印刷]
の項とAPIリファレンスの
[CURL.GUI.BASE]-[print-graphic]
の項をご参照ください。

※上記内容はバージョン7の時点でのものです。
  バージョン8以降はさらに設定可能な項目が増えています。
  以下のページの情報もあわせてご参照ください。
http://developers.curlap.com/re-reference/56-print/744-print-graphic.html