Curlのコントロール
DBメンテナンスツールでは、ユーザビリティの向上に力を入れています。その一例として、「ツリー」「グリッド」を使用しました。ポピュラーなGUIですが、Curlにも標準コントロールとして搭載されており、使い勝手のよい機能を持っています。
1.TreeControl
「かねやん」のデータベースをツリー表示するUIはとてもわかりやすいので、Curl版でも使用しています。Curlのツリービューは便利なコントロールで、ローカルアプリケーションのツリービューと同じように動作します。ノードが選択されたイベント、開いたときのイベントなども取得できます。

カスタムすることで、先頭にアイコンをつけたり、ノードに画像を表示することもできます。DBメンテナンスツールでは、先頭にアイコンをつけて、DB、テーブルをわかりやすく表示するようにしました。

TreeControlのコンストラクタの「tree-item-creation-proc」を設定することでアイコンを追加できます。
tree-item-creation-proc =
{proc
{x:TreeNode}:TreeItem
let v_icon:any = null
{switch (x asa MyTreeNode).icon-type
case my-tree-head do
set v_icon = null
case my-tree-db do
set v_icon =
{DefaultPixmapTreeIcon
{Pixmap.from-url {url "../../default/images/db.gif"}}
}
case my-tree-group do
set v_icon =
{DefaultPixmapTreeIcon
{Pixmap.from-url {url "../../default/images/group.gif"}}
}
case my-tree-table do
set v_icon =
{DefaultPixmapTreeIcon
{Pixmap.from-url {url "../../default/images/tbl.gif"}}
}
else
set v_icon = null
}
{return
{DefaultTreeItem
x,
icon = v_icon
}
}
}
ノード選択のイベントも取得できるので、DBとテーブルの情報を一括で取得するのではなく、DBノードが選択されたときのイベントで、そのDBにあるテーブルを取得して下位ノードに表示するようにして初期起動を速くしています。
2.RecordGrid
こちらはVisual BasicやDelphiにあるようなグリッドコントロールです。一覧表示ができ、見出し列をクリックするとソートすることもできます。

RcordGridはデフォルトではグレーで地味な感じですが、これもプロパティで変更できます。
{RecordGrid
grid-line-color = "#758294",||色の変更
font-size = 10pt,
alternate-row-background = "#E1E1E1",||一行おきの色の変更
select-current-record? = false,||行の選択を不可に
cells-take-focus? = false ,||セルの選択を不可に
width = 500,
height = 300,
header-options =
{RecordGridRowOptions
background = "#B0D0FF",halign = "left"},||カラムヘッダーの色の変更
background="white",||色の変更
display-navigation-panel? = false,||ナビゲーションバー非表示
display-record-selectors? = false||データセレクター非表示
}
}
通常は、テキストの表示に使いますが、グリッド内にコントロールをのせることもできます。

上記の方法でDBメンテナンスツールのデータ一覧表示を行っています。

まとめ
ツリーとグリッドの2つを組み合わせることで、ローカルアプリケーションと同じ操作感を実現できました。Curlには、ツリーやグリッド以外にも質の高い標準コントロールが揃っていますし、カスタマイズもしやすいので、ユーザーのイメージを簡単に実現できます。これらを活用することで、従来のWebシステムでは実現が難しかった画面を、あまり時間をかけずに作成できます。
次回は表示パフォーマンスについてです。大量のデータを取得するSQLを発行すると、どうしても表示に時間がかかってしまいます。これを改善する方法を説明していきます。

