2024/09/03

作ってみよう:#10)お小遣い帳 - プレイスタイプの日本語化

前回までの対応で、お小遣い帳としては使える状態になりました。今後は使いながら気になった点を少しずつ機能を改善して、より使いやすくしていきます。

最初の改善は、前回作成したばかりの機能です。計画性がないですね...。

プレイスタイプを指定して購入場所を検索する機能を作成しました。この機能について、一部の方から drugstore など内部的な文字列(英語)ではなく、日本語表記としてほしいというご意見をいただきました。今回は、少し予定を変更して、この対応を行います。


プレイスタイプマスタの作成

まずは、単純なマスタフォームを作成します。基本的な操作ですので、詳細な手順や設定は割愛します。ご了承ください。

フォーム名 a.PlaceType
別名 fPlaceType

項目名 フィールド名 種類 補足
並び順 SortNo 数値
プレイスタイプ PlaceType テキスト
名称 Name テキスト

[閉じる][編集][保存]などの最低限のアクションボタンもあわせて作成します。


続いて、マスタメンテ用ビューを作成し、上記 3 つのフィールドを表示する列を配置します。当たり前ですが、並び順でソートしておきます。

ビュー名 a.PlaceType
別名 vPlaceType

ビューには[閉じる]と [新規作成]のアクションボタンを作成します。


ここまで出来上がったら、ビューをプリビュー表示して、選択肢として必要なマスタデータを作成します。


選択用のビューの作成

先ほど作成したビューをコピペして、選択用のビューを作成します。

ビュー名 (vPicPlaceType)
別名 vPicPlaceType

選択画面(PickList)では不要となるので、「並び順」を非表示にし、「プレイスタイプ」を削除します。また、ビューのプロパティで列ヘッダと選択用余白を非表示にします。


ライブラリの修正

lsGoogleMAP_UI を開き、ビュー経由でプレイスタイプを選択する関数を追加します。

Public Function PicPlaceType() As String
   Dim ndc As NotesDocumentCollection
   Dim nd As NotesDocument
   Dim s As String

   s = "検索するプレイスタイプを選択してください。"

   '選択画面の表示
   Set ndc = xnuiw.PickListCollection(_
         PICKLIST_CUSTOM , False, xndb.Server, xndb.FilePath,_
         "vPicPlaceType", xndb.Title, s)

   If ndc.Count > 0 Then
      '戻り値のセット(名称|別名)
      Set nd = ndc.GetFirstDocument()
      s = nd.GetItemValue("Name")(0)
      s = s & "|" & nd.GetItemValue("PlaceType")(0)
      PicPlaceType = s
   End If
End Function

選択画面は、NotesUIWorkSpace クラスの PickListCollection メソッドを使用しています。2 つ目の引数を False に設定し複数選択できないようにしていますが、戻り値は NotesDocumentCollection で返されます。1 以上の場合、選択したことになるので最初の文書を取得して PlaceType フィールドの値を戻り値にセットしています。


メインルーチンの修正

プレイスタイプを選択する関数が変更となったので、メインルーチンを調整します。

エージェント NearBySearch_Google の Initialize を次の通り修正します。

Sub Initialize
         ・・・
   Set oLoc = New Location(nd.Sch_Latitude(0), nd.Sch_Longitude(0))
   Set oSch = New NearBySearch(oLoc)

   'プレイスタイプの選択
   Dim s As String
   s = PicPlaceType()
   If s = "" Then Exit Sub

   v = Split(s, "|")
   oSch.SearchType = v(1)
   Call oSch.Search()

   '検索結果の確認
   If oSch.Count = 0 Then
         ・・・
End Sub

なお、元の状態ではプレイスタイプの選択をキャンセルした場合でも、検索を実行しているバグがありました。今回はキャンセル(=戻り値が null)の場合、処理を終了するように修正しています。


動作確認

修正が終わったらテストします。Nomad から [近隣]ボタンをクリックします。以下のように選択肢が日本語で表示されれば成功です。


今回の対応では、PickList を利用しました。選択肢の一覧の実体はビューとなります。文字色や文字サイズや行間などの設定ができるので、利用者のニーズに合わせて調整できますね。

前回 作ってみよう 次回


0 件のコメント:

コメントを投稿