CodeZine(コードジン)

特集ページ一覧

Curlで構築する電子県庁システム(DBメンテナンスツール編)
アクセス制御と画面内検索をGUIで実現する

第3回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

2.画面内検索

 2つ目は、「カラムが100以上もあるようなテーブルだと、目的のカラムがどこにあるのか探すだけでも大変なんです」という相談です。

 これを解決するために、検索ダイアログを追加して、すぐにたどりつけるようにしました。

データ入力画面(カラムが多いと、目的のカラムをなかなか見つけることができない)。
データ入力画面(カラムが多いと、目的のカラムをなかなか見つけることができない)。
追加した画面内検索ダイアログ
追加した画面内検索ダイアログ

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

絞込み後画面内検索ダイアログ
絞込み後画面内検索ダイアログ

 リストからカラムを選択して、「ジャンプする」をクリックすると対象カラムに移動します。

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

scroll-to-objectの例
scroll-to-objectの例

 このサンプルのソースは以下のとおりになります。

scroll-to-objectのロジック
{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回にわたり記事を書いてきましたが、少しでも開発のお役に立てれば幸いです。ありがとうございました。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Curlで構築する長崎電子県庁システム(DBメンテナンスツール編)

著者プロフィール

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5