SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

VB6プログラマのためのCurl入門(AD)

VB6プログラマのためのCurl入門
ちょっと凝ったユーザーインターフェースを作ってみよう

  • X ポスト
  • このエントリーをはてなブックマークに追加

今回は、Curlを使って、ちょっと凝ったユーザーインターフェースを作ってみましょう。CurlプログラムはHTMLを生成するものではありませんが、HTMLと同様に画像を表示することやWebページにリンクを貼ることができます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

Curlで作るリッチクライアント

 Curlは、インターネット時代のリッチクライアントプログラミング言語です。今回は、Curlを使って、ちょっと凝ったユーザーインターフェースを作ってみましょう。CurlプログラムはHTMLを生成するものではありませんが、HTMLと同様に画像を表示することやWebページにリンクを貼ることができます。さらに、Curlを使えば、HTMLでは面倒な表形式やグラフ形式のユーザーインターフェースを容易に作ることもできます。

これまでの記事

文字と画像の表示、Webページへのリンク

 いきなりですが、図1をご覧ください。これは、サイズと色を設定した文字列の表示、画像の表示、およびWebページへのリンクを張ったユーザーインターフェースのサンプルです。HTMLでも作れるものですが、Curlを使って作るとどのようになるのでしょうか。さっそく、やってみましょう。

図1 このユーザーインターフェースをCurlで作る
図1 このユーザーインターフェースをCurlで作る

 Curl IDEを起動したら、「ファイル」メニューから「新規プロジェクト」を選択し、表示されたウインドウで「アプレットプロジェクト」を選択します。「マニフェスト」名に「UISample」と入力し、プロジェクトを保存する「ディレクトリ」に「C:¥CurlSamples¥UISample」と入力します。最後に[OK]ボタンをクリックしてください。

 IDEの左上に表示されたstart.curlをダブルクリックしてエディタを開いたら、自動生成されている宣言文の下に、リスト1に示したコードを記述してください。記述が終わったら、「ファイル」メニューから「全て保存」を選んでプログラムを保存します。

 「実行」メニューから「プロジェクトを実行」を選択すれば、Webブラウザが起動して、先ほど図1に示したユーザーインターフェースが表示されます。リンク先は、CurlのWebページ(http://www.curlap.com/)にしてあります。表示する画像は、あらかじめ適当なファイル(ここでは、cat.jpgです)をC:¥CurlSamples¥UISampleに置いておいてください。

リスト1 図1に示したユーザーインターフェースを実現するコード
|| 文字列の表示1
{text
    font-size = 10pt,
    color = "blue",
    フォントサイズ10pt、青色
}

|| 文字列の表示2
{text
    font-size = 20pt,
    font-weight = "bold",
    フォントサイズ20pt、太字
}

|| 文字列の表示3
{text
    font-size = 30pt,
    font-style = "italic",
    フォントサイズ30pt、斜体
}

|| 画像の表示
{image source = {url "cat.jpg"}}

|| Webページへのリンク
{link href = {url "http://www.curlap.com/"}, CurlのWebページへのリンク}

 「文字列の表示1」~「文字列の表示3」とコメント(Curlでは、|| でコメントを表します)した部分では、{text・・・} で文字列を表示しています。デフォルトの設定でよい場合は、{text・・・} で囲まずに、いきなり文字列を記述するだけで表示されますが、フォントサイズ、色、太字、斜体などを設定する場合は {text・・・} で囲む必要があります。それぞれ、font-size、color、font-weight、font-styleで指定します。画像の表示は、{image source = {url "画像ファイル名"}} で指名します。Webページへのリンクは、{link href = {url "Webページのアドレス"}, リンクを示す文字列} で指定します。

 Curl言語の構文にも慣れたと思いますので、ここでクイズを出題しましょう。画像にCurlのWebページへのリンクを張るには、どうしたらよいでしょうか? 答えはこの記事の最後にあります。

表形式のユーザーインターフェース

 それでは、ちょっと凝ったユーザーインターフェースを作ってみましょう。最初に紹介するのは、表形式のユーザーインターフェースです。この記事の第1回で説明しましたが、CurlのIDEにはVLE(Visual Layout Editor)というツールがあります。VLEを使うと、VB6のフォームデザイナのようにビジュアル的にコントロールを貼り付けて、ユーザーインターフェースをデザインできます。これも、やってみましょう。

 「ファイル」メニューから「プロジェクトを閉じる」を選択して、IDEを初期状態にしてください。引き続き「ファイル」メニューから「新規プロジェクト」を選択し、表示されたウインドウで「ビジュアルレイアウトエディタプロジェクト」を選択します。先ほどは、「アプレットプロジェクト」でしたが、VLEを使う場合は「ビジュアルレイアウトエディタプロジェクト」ですので、間違えないようにしてください。「マニフェスト」名に「GridSample」と入力し、プロジェクトを保存する「ディレクトリ」に「C:¥CurlSamples¥GridSample」と入力します。最後に[OK]ボタンをクリックしてください。

 IDEの左上にツリー表示された項目の中からvle-container.scurlをダブルクリックしてください。VLEが起動したら、パレット(コントロールを一覧表示したウインドウ)から「表」をクリックし、その中にある「Table」をCanvas(コントロールを貼り付ける土台のことで、VB6のフォームに相当します)に貼り付けてください。さらに、「コントロール」の中にある「CommandButton」もCanvasに貼り付けてください。コントロールの貼り付け方は、VB6のフォームデザイナと同様です(図2)。

図2 TableとCommandButtonを貼り付ける
図2 TableとCommandButtonを貼り付ける

 CommandButtonをクリックしたときのイベントハンドラに、Tableにデータを格納するコードを記述することにしましょう。そのためには、Tableに名前(デザイン名)を付けておく必要があります。Canvas上のTableをクリックして選択状態にしてから、プロパティウインドウの「デザイン名」に「table1」と入力してください(図3)。

図3 Tableにデザイン名を付ける
図3 Tableにデザイン名を付ける

 Canvas上のCommandButtonをクリックして選択状態にしてから、プロパティウインドウの「イベントハンドラ」タブを選択し、イベントハンドラの「Action」の右側に表示された || ボタンをクリックします。これによって、CommandButtonイベントハンドラが自動生成されます(図4)。

図4 CommandButtonのイベントハンドラを作成する
図4 CommandButtonのイベントハンドラを作成する

 CommandButtonイベントハンドラは、VLEではなくCurlのIDEのエディタに表示されます。{on Action・・・do} というイベントハンドラの中に、リスト2に示したコードを記述してください。このコードは、Tableに3行×5列の架空のデータ(果物の商品名、原産地、価格)を格納するものです。{value self.table1} でTableが表示されますが、その前にaddメソッドを使って1行ずつデータを設定しています。Curlのselfは、VB6のMeに相当するものです。

リスト2 Tableにデータを表示するコード
{on Action do
    {value
        {self.table1.add {row-prototype "商品名", "原産地", "価格"}}
        {self.table1.add {row-prototype "りんご", "青森県", "100円"}}
        {self.table1.add {row-prototype "みかん", "和歌山県", "50円"}}
        {self.table1.add {row-prototype "ぶどう", "山梨県", "300円"}}
        {self.table1.add {row-prototype "いちご", "静岡県", "500円"}}
        self.table1
    }
}

 コードの記述が終わったら、IDEの「実行」メニューから「プロジェクトの実行」を選択してください。Webブラウザが起動したら、CommandButtonをクリックします。図5に示したように、表形式で3行×5列のデータが表示されます。

図5 リスト2の実行結果
図5 リスト2の実行結果

 現状のTableには、境界線が表示されていません。プログラムを終了したら(Webブラウザを終了したら)、VLEのプロパティウインドウで、「境界幅」を1pt、「境界色」を「黒色」に設定してみましょう。また、「セルの境界幅」を1pt、「セルの境界色」を「黒色」に設定します。

 再度プログラムを実行すると、Tableの外枠と、セルを区切る境界線が表示されます。このように、VLEを使ってビジュアルにユーザーインターフェースをデザインできるところは、VB6のフォームデザイナと同様です(図6)。

図6 Tableに境界線を表示したときの実行結果
図6 Tableに境界線を表示したときの実行結果

グラフ形式のユーザーインターフェース

 次に紹介するのは、グラフ形式のユーザーインターフェースです。VB6には、MSChartというコントロールがあり、様々な形式のグラフ(棒グラフや折れ線グラフなど)にデータを表示できました。Curlにも、VB6と同様の様々なグラフが用意されています(図7)。

図7 VLEのパレットに表示されたグラフの種類
図7 VLEのパレットに表示されたグラフの種類

 VLEを使えば、Canvasにグラフをビジュアル的に貼り付けることができます。ただし、Curlでは、VLEを使わずにコードだけでユーザーインターフェースを作ることもできるようになっています。ここでは、あえてVLEを使わないでグラフにデータを表示するプログラムを作ってみましょう。

 新たに「GraphSample」という名前で、「アプレットプロジェクト」を作成してください。VLEを使わない場合は「アプレットプロジェクト」になります。IDEの左上に表示されたstart.curlをダブルクリックしてエディタを開いたら、自動生成されている宣言文の下に、リスト3に示したコードを記述してください。

リスト3 VLEを使わずにグラフを表示するコード
{import * from CURL.GUI.CHARTS}

{value
    || レコードセットを用意する
    let data:RecordSet = {RecordSet
                             {RecordFields
                                 {RecordField "fruit", domain = String},
                                 {RecordField "sales", domain = int}
                             },
                             {RecordData fruit = "りんご", sales = 100},
                             {RecordData fruit = "みかん", sales = 200},
                             {RecordData fruit = "ぶどう", sales = 300},
                             {RecordData fruit = "いちご", sales = 400}
                         }

    || 棒グラフを作成し、レコードセットを設定する
    let chart:LayeredChart = {LayeredChart
                                 height = 10cm,
                                 width = 10cm,
                                 {BarLayer
                                     x-axis-data = {ChartDataSeries data, "fruit"},
                                     {ChartDataSeries data, "sales"}
                                 }
                             }


    || 棒グラフを表示する
    chart
}

 コードの記述が終わったら、プログラムを実行してみましょう。図8に示したように、果物の売り上げを示す架空のデータが棒グラフに表示されます。この実行結果をもとに、コードの内容を説明しましょう。

図8 リスト3の実行結果
図8 リスト3の実行結果

 {import * from CURL.GUI.CHARTS} の部分は、グラフを表示するAPI(あらかじめ用意されているソフトウエアの部品群のこと)であるCURL.GUI.CHARTSのインポート宣言です。APIのインポートは、VB6でカスタムコントロールに参照設定をすることに相当します。

 グラフに表示するデータは、レコードセットにまとめて格納します。VB6にもADOでレコードセットが使われますが、Curlのレコードセットも、それと似たものです。let data:RecordSet の部分は、RecordSet型の変数dataを宣言し、2行ある {RecordFileds・・・} でフィールド名とデータ型を指定し、4行ある {RecordData・・・} でデータを格納しています。

 let chart:LayeredChartの部分は、LayeredChart型の変数chartを宣言し、heightとwidthで高さと幅を指定し、{BarLayer・・・} でグラフの種類が棒グラフであることと、X軸とY軸に表示する項目がレコードセット(変数data)のどのフィールドであるかを指定しています。最後にあるchartで、棒グラフが表示されます。

おわりに

 以上、駆け足でしたが、Curlを使ってちょっと凝ったユーザーインターフェースを作る例をいくつか紹介しました。ユーザーインターフェースの作り方がわかったら、次に知りたくなるのはファイルのアクセスでしょう。そこで、次回は、Curlを使ってファイルを読み書きする方法を紹介します。

※クイズの答え
{link href = {url "http://www.curlap.com/"}, CurlのWebページへのリンク}

 の部分を

{link href = {url "http://www.curlap.com/"}, {image source = {url "cat.jpg"}}}

  に変更します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3410 2009/01/08 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング