2.画面内検索
2つ目は、「カラムが100以上もあるようなテーブルだと、目的のカラムがどこにあるのか探すだけでも大変なんです」という相談です。
これを解決するために、検索ダイアログを追加して、すぐにたどりつけるようにしました。


入力画面に表示しているカラム名をリストに表示しています。英名、和名に文字を入力すると、その文字に該当するカラムのみリストに表示されます。

リストからカラムを選択して、「ジャンプする」をクリックすると対象カラムに移動します。
移動する際に、ScrollBoxの「scroll-to-object」メソッドを使用しています。「scroll-to-object」はScrollBoxをスクロールして、指定したオブジェクトを表示してくれます。例えば下図のサンプルでは、ボタンをクリックするとデータ10が表示される位置までScrollBoxがスクロールします。

このサンプルのソースは以下のとおりになります。
{let v_text10:TextFlowBox = {TextFlowBox "データ10"}}
{let v_sc:ScrollBox =
{ScrollBox
width=3cm,height=3cm,border-width=1pt,
{VBox
{TextFlowBox "データ01"},
{TextFlowBox "データ02"},
{TextFlowBox "データ03"},
{TextFlowBox "データ04"},
{TextFlowBox "データ05"},
{TextFlowBox "データ06"},
{TextFlowBox "データ07"},
{TextFlowBox "データ08"},
{TextFlowBox "データ09"},
v_text10,
{TextFlowBox "データ11"},
{TextFlowBox "データ12"},
{TextFlowBox "データ13"},
{TextFlowBox "データ14"},
{TextFlowBox "データ15"},
{TextFlowBox "データ16"},
{TextFlowBox "データ17"},
{TextFlowBox "データ18"},
{TextFlowBox "データ19"},
{TextFlowBox "データ20"}
}
}
}
{value v_sc}
{CommandButton
label = "データ10へ移動",
{on Action do
{v_sc.scroll-to-object v_text10}
}
}
上記のように、メソッドを呼ぶだけで簡単にScrollBox内のオブジェクトを表示できます。入力チェック時に、エラーのある位置までにスクロールするなどの用途にも使用できて非常に便利です。
まとめ
DBメンテツールの開発を通じてCurlのコントロールを紹介させていただきました。少しでもCurlの良さが伝わっていればいいなと思います。Curl Apps Galleryでは実際にCrulアプリを操作できますので、実際の動きを見ていただければ、Curlがどのようなものか分かりやすいかと思います。
これまで3回にわたり記事を書いてきましたが、少しでも開発のお役に立てれば幸いです。ありがとうございました。


