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

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

SOAPプロトコルについて

【ご質問】
SOAPプロトコルは使用可能でしょうか。

【回答】
SOAP1.1に対応した標準APIが用意されています。

詳細は、Curl開発者ガイドの
[外部リソースとの対話]-[SOAP インターフェイス]
の項をご参照ください。

オープンソースライブラリであるWSDKを利用するとさらに豊富な機能を使用出来ます。
WSDLファイルからCurlのオブジェクトに変換するツールなど豊富なAPIが用意されています。

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

RecordGridの複数行のコピーについて

【ご質問】
RecordGridにおいて、複数行のコピーと貼り付けは可能でしょうか。

【回答】
Curlのバージョン5.0以降から、RecordGrid上で表示されているデータは
マウス操作による行、列の選択はもちろん、任意の範囲選択も可能になり、
Ctrl+C キーでコピーして、Ctrl+V キーでペーストすることが可能になっています。
これらの操作はプログラムからでもコントロールすることが出来ます。

行・列の選択を行う際にはプロパティ
 record-selection-enabled?、column-selection-enabled?
がtrueである必要があります。また、複数行・複数列の選択を行う際には
 multiple-selection-enabled?
がtrueである必要があることにもご注意ください。

詳細は、Curl開発者ガイドの
[データの管理と表示]-[データ レコードとグリッド]
の項内の[データのコピーと貼り付け]の項をご参照ください。

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

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

{let people:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField “First”, domain = String},
            {RecordField “Last”, domain = String},
            {RecordField “Age”, domain = int},
            {RecordField “Age2”, domain = int}
        },
        {RecordData First = “A”, Last = “AAA”, Age = 21, Age2 = 1},
        {RecordData First = “B”, Last = “BBB”, Age = 22, Age2 = 2},
        {RecordData First = “C”, Last = “CCC”, Age = 23, Age2 = 3},
        {RecordData First = “D”, Last = “DDD”, Age = 24, Age2 = 4},
        {RecordData First = “E”, Last = “EEE”, Age = 25, Age2 = 5},
        {RecordData First = “F”, Last = “FFF”, Age = 26, Age2 = 6},
        {RecordData First = “G”, Last = “GGG”, Age = 27, Age2 = 7},
        {RecordData First = “H”, Last = “HHH”, Age = 28, Age2 = 8},
        {RecordData First = “I”, Last = “III”, Age = 29, Age2 = 9},
        {RecordData First = “J”, Last = “JJJ”, Age = 30, Age2 = 10}
    }
}
{let rg:RecordGrid = {RecordGrid
                                 record-source = people,
                                 height = 8cm,
                                 width = 13cm
                             }
}
{let fr:Frame = {Frame}}
{let cb1:CommandButton = {CommandButton
                                            width = {make-elastic},
                                            label = “行(レコード)選択を無効化”,
                                            {on Action do
                                                {set rg.record-selection-enabled? = false}
                                                {fr.clear}
                                                {fr.add “行(レコード)選択を無効化しました”}
                                            }
                                        }
}
{let cb2:CommandButton = {CommandButton
                                            width = {make-elastic},
                                            label = “行(レコード)選択を有効化”,
                                            {on Action do
                                                {set rg.record-selection-enabled? = true}
                                                {fr.clear}
                                                {fr.add “行(レコード)選択を有効化しました”}
                                            }
                                        }
}

{VBox
    rg,
    {HBox
        cb1,
        cb2
    },
    {HBox
        {CommandButton
            width = {make-elastic},
            label = “3行目から5行目を選択”,
            {on Action do
                {rg.select-record-range 2, 4}
                {fr.clear}
                {fr.add “「コピー」ボタンを押してください”}
            }
        },
        {CommandButton
            width = {make-elastic},
            label = “コピー”,
            bound-command = {rg.get-command “copy”},
            {on Action do
                {fr.clear}
                {fr.add “下のTextAreaでCtrl+vで貼り付けてください”}
            }
        }
    },
    {TextArea height = 2cm},
    fr
}

 

DLLの利用について

◆ご質問◆
DLLを利用することは可能でしょうか。

◆回答◆
Curlの実行環境4.0以降の外部ライブラリAPIを使用することで、指紋認証、デバイスコントロールなどが
Curlのアプレットで利用できるようになります。

外部ライブラリを利用する場合、Curlアプレットの特権設定が必要です。

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

P2Pについて

◆ご質問◆
CurlのプログラムでP2P技術の実装は出来るのでしょうか。

◆回答◆
Curlは高レベルの通信プロトコル(HTTP・HTTPS)によって実装したAPI以外に、
ソケットレベルの通信APIも用意されていますので、P2Pの実装が可能ですが、
そのようなアプレットを実行する時には特権の設定が必要になります。

Curl開発者ガイドの
[Curlプロセス間のコミュニケーション]→[ソケットの使用]の項を
ご参照ください。

Curlからexeファイルを起動するには

【ご質問】
Curlアプレットから、ローカルのexeを起動出来るのでしょうか。

【回答】
以下の標準APIを使用することで可能です。
 ・run-host-process
 ・run-host-shell
 ・spawn-host-process
 ・spawn-host-shell
上記APIを使用するためには特権が必要です。

詳細は、APIリファレンスの
[CURL.RUNTIME.HOST-PROCESS]
の項内にある各APIの項をご参照ください。
また以下のページも参考にして下さい。
http://developers.curlap.com/re-reference/19-others/49-command.html

※バージョン8では非同期ホストプロセス呼び出しAPIが追加されました。
spawn-host-process、spawn-host-shellの非同期バージョンである
async-spawn-host-process、async-spawn-host-shellが追加されました。
詳細は以下のページをご参照ください。
http://developers.curlap.com/re-reference/19-others/756-async-host-process.html

ActiveXの利用について

【ご質問】
ActiveXを利用することは可能でしょうか。

【回答】
可能です。
ただし、ActiveXオブジェクトの仕様に関しては、提供元にご確認ください。

詳細は、Curl開発者ガイドの
[グラフィカルユーザーインターフェース]→[ActiveX コントロール]
の項をご参照ください。

通信プロトコルについて

◆ご質問◆
http以外の通信プロトコルを使用することは可能でしょうか。

◆回答◆
HTTPSプロトコルが使用可能です。
HTTP/HTTPS以外にソケット通信APIも用意されています。

Curl開発者ガイドの以下の項をご参照ください。
  ・[外部リソースとの対話]→[Webサイトとの対話]→[Webサイトのファイルを読む]
  ・[Curlプロセス間のコミュニケーション]→[ソケットの使用]

印刷領域の設定

【ご質問】
Curlで印刷を行う場合、印刷領域を指定することはできるのでしょうか。

【回答】
Curlにはの印刷用のAPIとしてprint-graphicプロシージャがあります。

Curlのオブジェクトを印刷領域として印刷APIに渡し、印刷することになりますので、
印刷したいCurlオブジェクトを指定することにより自由に印刷領域を選択することができます。

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

RecordGridの属性を変更するには

【ご質問】
StyleSheet 、StyleRule 等で条件にもとづいてセルや文字の属性を変えることは可能でしょうか。

【回答】
セル内の文字の属性などをスタイルシートで変更することは可能です。

詳細は、Curl開発者ガイドの
[グラフィカルユーザーインターフェース]-[スタイルコントロール]-[スキンが適用された RecordGrid]
をご参照ください。

日付の取得

【ご質問】
日付を取得する為の標準APIはあるのでしょうか。

【回答】
日付に関する操作を行うためのAPIとしてDateTimeがあります。

Curlの実行環境5.0以降であればグラフィカルなカレンダー表示や
カレンダーからの日付の取得を行うためのAPIとして
・CalendarControl
・DateField
があります。

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

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

{VBox
    spacing = 1cm,
    “現在日時は” &{DateTime} &“です。”,
    {CalendarControl},
    {DateField
        width = 5cm
    }
}
 

詳細は、Curl開発者ガイドの
[基本概念 – ライブラリ]-[日付と時刻ライブラリ]
の項と
[グラフィカル ユーザー インターフェイス]-[その他のコントロール]
の項内の[カレンダー コントロール]と[日付フィールド]の項をご参照ください。

また各APIの詳細は、APIリファレンスの
[CURL.LANGUAGE.DATE-TIME]-[DateTime]
[CURL.GUI.CONTROL-LOGICAL]-[CalendarControl]
[CURL.GUI.CONTROL-LOGICAL]-[DateField]
の項をそれぞれご参照ください。

印刷について

【ご質問】
帳票ツールを使わなくても、Curlで画面の印刷が出来るのでしょうか。

【回答】
Curlアプレット上で右クリックして表示されるメニュー内の「印刷」を
選択することでアプレット画面の印刷が実行出来ます。

また、標準APIのprint-graphicプロシージャを使用することで、
「画面全体の印刷」および「任意のグラフィカルオブジェクトの印刷」が可能です。

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

3Dグラフィックの作成

【ご質問】
2D,3Dを利用したグラフィックの作成などは可能でしょうか。

【回答】
Curl言語のグラフィックスとマルチメディア機能を利用して、
2D及び3Dのレンダリング、シーンの作成、イメージのフィルタリングなどが出来ます。

詳細は、Curl開発者ガイドの
[シェイプ(形状)]、[グラフ]、[グラフィックスとレンダリング]
の項をご参照ください。 

暗証番号等のマスク表示

◆ご質問◆
暗証番号等のマスク表示は可能ですしょうか。

◆回答◆
PasswordFieldクラスを使用することで可能です。

Curl開発者ガイドの
[グラフィカルユーザーインターフェイス]→[テキストコントロール]→[パスワードフィールド]の項を
ご参照ください。

オフライン実行について

【ご質問】
オフラインで使用することは可能でしょうか。

【回答】
随時接続コンピューティング(OCC)機能を使用することにより可能です。

詳細は、Curl開発者ガイドの
[外部リソースとの対話]-[随時接続コンピューティング (OCC)]
の項をご参照ください。

アニメーションについて

◆ご質問◆
アニメーションは使用出来るのでしょうか。

◆回答◆
Timerイベントを使用してアニメーションを表示することが出来ます。

Curl開発者ガイドの
[グラフィックスとレンダリング]→[アニメーション]の項
をご参照ください。

RecordGridで入力チェックを行うには

◆ご質問◆
RecordGridにおいて必須入力チェック、桁数チェック、属性チェック等をクライアント側で行うことは可能でしょうか。

◆回答◆
各列毎に、RecordGridColmnクラスの非ローカルオプションである”cell-spec”に
チェックロジックを含んだカスタマイズしたRecordGridCell指定することで可能です。

RecordGridのIME制御

◆ご質問◆
RecordGridにて、各入力項目の属性によって自動的にIMEの「ON/OFF」を切り替えることは可能でしょうか。

◆回答◆
各列毎に、RecordGridColmnクラスの非ローカルオプションである”cell-spec”に
IMEのON/OFFを切替えるカスタマイズしたRecordGridCellを指定することで可能です。

ListBoxに横スクロールを表示させるには

【ご質問】
Curl RTE5の環境にて、ListBoxの下にスクロールバーを表示することは可能でしょうか。

【回答】
ScrollBoxクラスの”always-disable-hscroll?”プロパティを 利用することで実現可能です。

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

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

{let lbox:ListBox = {ListBox width = 30mm, height = 20mm,
                        “Aardvark”, “Cat”, “Dog”, “Elephant”,
                        “あああああいいいいいうううううえええええおおおおお”,
                        “Aardvark”, “Cat”, “Dog”, “Elephant”
                    }
}

{value
    ||もしも将来のバージョンアップでグラフィック構造が変更されても
    ||出来るだけ対応できるようにするため宣言の型をできるだけ緩くします
    let ui:ListBoxUI = (lbox.ui-object asa ListBoxUI)
    let iterator:{Iterator-of Graphic} = ui.graphical-children

    ||ScrollBoxと決めてしまうとグラフィック構造が変更された場合にエラーになる可能性があるため
    ||any型にしておきます
    let g:any = ({iterator.read-one-as-any})
    ||型がScrollBoxのときのみ実行するように分岐しておきます
    {type-switch g
     case scroll-box:ScrollBox do
        ||こちらの設定で横スクロールが表示され利用できるようになります
        ||詳細は「always-disable-hscroll?」をヘルプドキュメントで検索してください
        set scroll-box.always-disable-hscroll? = false
     else
        ||型がScrollBoxではなかったときの処理を記述してください
    }

    lbox
}

(注意)
ScrollBoxを取得することで、ListBoxでの横スクロールバーの利用が可能となりますが、
上記サンプルは、”Ver5.0においてのListBoxのグラフィック構造”に沿ってScrollBoxを取得しているため、
将来もしもグラフィック構造が変更され、その”グラフィック構造が変更されたバージョン”に
アプリケーションをバージョンアップするとエラーが起こる可能性があります。

choose-fileで設定したファイルが取得できない

【ご質問】
choose-file プロシージャの default-location にファイル名だけを指定した場合、
開発環境ではファイル名が取得出来るのですが、APサーバに配置後アクセスした場合は
ファイル名が取得できません。

APサーバにアクセスしてダウンロードを行った場合に、
ファイル名をダイアログに設定したいのですがどのようにすればよいのでしょうか。

【回答】
{url}マクロに、ファイル名のみを指定した場合にはアプレットのソースファイルとの
相対関係でurlが解決され、ソースファイルと同じディレクトリにファイルがあることが想定されます。

正しくファイルを取得する為には、{url}マクロで、
絶対URLまたは相対URLでリソースの場所を明示する必要があります。
システムの移植性を考慮するとリソースの指定は、相対URLで指定することが
多くの場合望ましい結果をもたらします。

相対URLに関する詳細は、Curl開発者ガイドの
[外部リソースとの対話]-[ファイルやその他のリソースへのアクセス]
の項内の[Web サイト リソースの Url の作成]-[相対 URL]
の項をご参照ください。