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

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

オブジェクトサイズの伸縮について

【ご質問】
オブジェクトの幅や高さを固定せずに、ウィンドウサイズによって伸縮させる方法はあるのでしょうか。

【回答】
エラスティックという技術があります。
これによってオブジェクトの伸長度や圧縮度を制御することができます。

詳細はCurl開発者ガイドの
[グラフィカルユーザーインターフェイス]→[エラスティックとページレイアウト]→[オブジェクトの伸長と圧縮]
の項をご参照ください。

テンプレート機能について

◆ご質問◆
Curlの開発環境でテンプレート機能を使用できるのでしょうか。

◆回答◆
Curl IDE 5.0よりVisual Layout Editorで複合オブジェクトの利用が可能となりました。
その中で、テンプレートとして利用できるような複合オブジェクトを作ることができます。

Curl VLEユーザーガイドの[複合オブジェクトの構築]の項をご参照ください。

修正したモジュールが反映されない

【ご質問】
修正したモジュールをデプロイしましたが、クライアントで
最新のモジュールがダウンロードされないことがあります。

デプロイ後のモジュールを確実にクライアントでダウンロードさせる方法はありますか。

【回答】
“resync-as-of”プロシージャの日時を指定して頂くことで可能ですが、
クライアントマシンの時刻が大幅にずれているとダウンロードされない場合があります。

その場合、クライアントのCurl実行環境のキャッシュを空にしてシャットダウンして頂くか、
Curlのアプレット上で右クリックして「再ロード時に再同期する」を選び再ロードして頂く必要があります。

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

バイナリデータを読み取るには

【ご質問】
バイナリデータを読み取るためにread-fromプロシージャを使用したところエラーが発生しました。
なぜでしょうか。

【回答】
read-fromプロシージャはテキストデータを読み取るためのプロシージャです。
バイナリデータを読み取るためにはread-bytes-fromプロシージャなどを使用してください。

詳細は、APIリファレンスの
[CURL.IO.FILE]-[read-from]
の項と
[CURL.IO.FILE]-[read-bytes-from]
の項をご参照ください。 

フォントサイズの指定

【ご質問】
アプレット全体のフォントサイズを一箇所で指定してコントロールすることはできるのでしょうか。

【回答】
“set-document-properties”プロシージャでfont-sizeを指定することで可能です。

詳細は、APIリファレンスの
[CURL.ENGINE.APPLET]-[set-document-properties]
の項をご参照ください。 

3Dで作成したグラフのサイズを変更するには

【ご質問】
3Dで棒グラフを作成していますが、棒グラフ全体のサイズの変更はどのようにして行うのでしょうか。

【回答】
Sceneクラスのcameraの設定でサイズを変更することが可能です。

詳細は、Curl開発者ガイドの
[グラフィックスとレンダリング]-[シーン]-[カメラのコントロール]
の項をご参照ください。

ファイルの圧縮・解凍について

【ご質問】
Curlでデータの圧縮・解凍は出来るのでしょうか。
例えば圧縮したZIPファイルの解凍は出来るのでしょうか。

【回答】
gzip 形式または zlib 形式であれば標準APIである
DeflateByteOutputStream、InflateByteInputStream
を使用することで圧縮・解凍が可能です。

詳細は、APIリファレンスの
[CURL.IO.ZSTREAM]-[DeflateByteOutputStream]
[CURL.IO.ZSTREAM]-[InflateByteInputStream]
の項をご参照ください。

また以下のページもご参照ください。
http://developers.curlap.com/re-reference/14-io-networking/64-compress.html

それ以外の形式の場合は、Curlの標準APIのみでは実現することが出来ませんが、
外部の解凍・圧縮用DLLを呼び出すことによって実現可能です。

トグルボタン押下時のイベント取得について

◆ご質問◆
ツリーノードに子がある場合に表示されるプラス・マイナスのアイコンのイベントを取得するためには、どのようにしたら良いのでしょうか。

◆回答◆
トグルボタン(プラス・マイナスのアイコン)押下時ですが、
TreeControlUIクラスに、note-expansion-toggled というメソッドがあります。
これはnodeが縮小、拡大された時にオブジェクトに対して通知を行う役割を果たしており、
このメソッドをオーバーライドし、中に実行したい処理を書くことでトグルボタン押下時の処理を記述することが可能です。

Excelへのデータ出力について

【ご質問】
Curlから、直接Excelファイルへのデータ出力を行うことは出来るのでしょうか。

【回答】
直接Excelファイルへのデータ出力を行うことはできません。
ただし、ActiveXオブジェクトを経由してエクセルを利用することはできます。

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

またDeveloperCenterの以下の記事をご参照ください。
http://developers.curlap.com/re-reference/25-data/93-activexexcel.html

CSVデータに関しては入力・出力を行うためのAPIが用意されています。
詳細は、Curl開発者ガイドの
[データの管理と表示]-[外部ソースのデータの管理]
の項をご参照ください。

IPアドレスの取得

【ご質問】
クライアント端末のIPアドレスを取得することはできるのでしょうか。

【回答】
SocketInetAddressクラスを使用することでクライアントPCのIPアドレスを
取得することが可能です。(ただし特権アプレットに限ります)
またその他の方法としてはspawn-host-shellを使用してWindowsコマンドを
使って取得する方法なども考えられます。

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

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

{import * from CURL.IO.SOCKET}

{CommandButton
    label = “SocketInetAddressを使ってIP取得”,
    {on Action do
        {popup-message {SocketInetAddress SocketInetAddress.local-host}.address-as-String}
    }
}

また、APIリファレンスの
[CURL.IO.SOCKET]-[SocketInetAddress]
の項をご参照ください。

HTMLをCurlの中で表示するには

【ご質問】
HTMLファイルをCurlの中で表示したいのですが、どうすればよいのでしょうか。

【回答】
ActiveXオブジェクトを経由して、InternetExplorerを
Curlアプレット内で表示させることによって可能です。

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

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

{import * from CURL.GRAPHICS.ACTIVEX}

{let example-url:String = “http://www.curlap.com”}
{let expl-xobj:ActiveXObject  =
    {ActiveXObject ProgId=“Shell.Explorer”}
}
{let expl-graphic:Graphic =
    {ActiveXGraphic expl-xobj}
}

{do
    {expl-xobj.Navigate example-url}
}

{let ob:OverlayBox =
    {OverlayBox
        {Fill background = expl-graphic.background},
        expl-graphic
    }
}

{value ob}

また、Curlの実行環境6.0以降ではEmbeddedBrowserGraphicを使用することで
簡単にHTMLページを表示させることができます。

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

コントロールのdisabled?がfalse時に背景色を変更するには

◆ご質問◆
コントロールのdisabled?がfalseの場合、背景色やテキストの色を変更させないようにするには、どうしたらよいのでしょうか。

◆回答◆
“control-appearance-changeable?”をtrueに設定し、”control-content-background”や”disabled-color”に色を指定して下さい。
また、”disabled-text-sunken?”をfalseに指定して頂くことでフラットな文字として表示することも可能です。
(通常、enabled?=falseの文字は影付で表示されます)

deleteキーの制御

◆ご質問◆
RecordGridにおいて行を選択し、Deleteキーを押下すると行が削除されますが、この操作を抑制する方法あるのでしょうか。

◆回答◆
RecordGridUIクラスにKeyPressのイベントハンドラーを追加することで可能です。
Deleteキー押下時に処理を行わないようなロジックを追加する必要があります。

BigDecimalについて

【ご質問】
CurlにはJavaにおけるBigInteger、BigDecimalのようなAPIはあるのでしょうか。

【回答】
標準APIにはありませんが、オープンソースライブラリである WSDKORBにて
同様のAPIが提供されています。

WSDKの場合・・・パッケージ[COM.CURL.UTIL.BIGNUM]内のBigInt、BigDecimal
ORBの場合・・・パッケージ[COM.CURL.ORB.TYPE]内のBigInteger、BigDecimal

【コード例】

{curl 7.0 applet}
{curl-file-attributes character-encoding = “shift-jis”}
{applet manifest = “manifest.mcurl”,
    {compiler-directives careful? = true}
}

{import * from COM.CURL.UTIL.BIGNUM}

{value
    let a:BigDecimal = “13119107.3693184179”
    let b:BigDecimal = “202982856.3840000000”
    let c:BigDecimal = {a.divide b}

    {VBox
        {a.to-String}
        ,{b.to-String}
        ,{c.to-String}
    }
}

【実行結果】

13119107.3693184179
202982856.3840000000
0.0646316029 
 

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

ORBの詳細は、以下をご参照ください。
http://developers.curlap.com/re-reference/42-curl-orb-for-java06.html

また、CurlのVer.8より、標準APIにてDecimal型を利用することが可能になりました。
詳細はDeveloperCenter内の以下のページをご参照ください。
http://developers.curlap.com/re-reference/36-basic/741-decimal.html

入力文字の制限

【ご質問】
TextFieldにおいて入力文字を制限することは可能でしょうか。

【回答】
文字数に関してはプロパティ max-chars を使用することで制限可能です。

入力内容の制限を行う場合は、TextFieldを継承した独自クラスを
作成することで制限可能です。
アプリケーションギャラリー(Curl Apps Gallery)内に
参考になるアプリケーションがあります。

RecordGridにてエラー時に対象セルを色付けするには

◆ご質問◆
RecordGridにおいて、エラー時にエラー内容によって対象行、またはセルの色を変えることは可能でしょうか。

◆回答◆
StandardRecordGridCellなどを継承したカスタムセルを作成することで可能です。
また、Curlの実行環境6.0ではRecordGrid.row-background-specを使用することにより簡単に指定可能です。

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

動的に画面サイズを変更するには

◆ご質問◆
動的な画面サイズの変更は可能でしょうか。

◆回答◆
Curlが特許を取得しているエラスティック機能により画面を自動的に伸張、圧縮することが出来ます。

Curl開発者ガイドの
[グラフィカルユーザーインターフェース]→[エラスティックとページレイアウト]の項
をご参照ください。

XMLのハンドリングについて

◆ご質問◆
XMLのハンドリングはどのように行うのでしょうか。

◆回答◆
SAXパーサー、若しくはWSDKを使用してデータを解析することが出来ます。

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

Curlの実行環境4.0からはSAXパーサのパフォーマンスが向上しています。