Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

BBS-雑談掲示板/37

リストのためのスクロールバーのセットの仕方を教えてください。 - irija_bari (2007年11月15日 10時42分44秒)

リストをスクロールさせるのに、リスト領域の右上下端に表示される矢印の代わりにスクロールバーを使用したいと考えています。
ListAttrType 構造体に hasScrollBar というメンバがあるのでこれをセットしたいのですが、セットする手段(関数)がわかりません。ListType 構造体がこの構造体を持つのですが、ListType 構造体には直接アクセスするなという注意書きがあります。どのように ListAttrType の hasScrollBar メンバの値をセットするのでしょうか?



Companion I 「4-8 リスト」を読んでいて思ったことがありましたので、コメントさせてください。間違っていたらごめんなさい。(ドキュメントのコメント欄には文章を書きにくいのでここに投稿します。)

  • メモリ上にはデータを保持せず、リストを描画する関数を用意する。リストは描画のたびにデータを取得します。メモリにデータを保持しないことにより、リストが長大かつその内容がユーザー操作に依存する場合に発生する容認し難いメモリのオーバーヘッドを避けることができます。例として、ユーザーが選択した都市を基準にして多くの都市の時刻一覧を表示するような時刻変換アプリケーションが考えられます。このような実行時の表示情報取得ができるのはリストだけで、テーブルではできないことに注意して下さい。
訳注:customTableItem を使用したカスタム描画を使えばテーブルでも
   同じようなことができるような気がしますが、この文が言おうと
   していることは違うのでしょうか。訳が良くないかもしれません。

この例の場合、基準都市の時間に時差分を加減して各都市の時間を表示することになるのでしょう。これらの時間を、リストまたはテーブルのカスタム描画関数を使って描いた場合、リストでは LstGetSelectionText() を使用して選択された項目の中から時間を取得することができますが、テーブルにはそれに該当する関数が無いため選択されたセルの列番号、行番号しか取得できないということではないでしょうか。
もちろんテーブルでも、テーブル アイテムをフィールドにしておけば、選択されたフィールドから FldGetTextPtr() などを使ってテキストを取得できるのでしょうが、手間がかかりますよね。
(まだ、テーブルを使ったことがないので間違っているかもしれません。)

コメント

  • リストでカスタム描画関数を使用する場合、そもそも LstGetSelectionText( ) は使用できません。このページをご覧ください。カスタム描画関数はそもそもデータ構造を別で保持しておき、描画コールバックによって画面描画をするものです。そのため、インデックスしか得られない代わりに別途保持しているデータを参照できるということですよね。で、その条件についてはテーブルでも同じことが言えるのでは...というのが訳注に書いたことです。 - 陰郎 (2007年11月15日 12時17分00秒)
  • リストコントロールとスクロールバーの関連付けというのは聞いたことがありません。たしかにListAttrType構造体にはそのようなメンバがあるようですが、もしスクロールバーとの関連付けがサポートされているなら、そのスクロールバーのリソースIDもどこかに保持する必要があるでしょう。ListAttrType 構造体に含まれるスクロールバー有無のメンバは、リスト標準のスクロールインジケータの表示有無を指すものではないでしょうか(もちろん憶測ですが)。いわゆるチカラワザでスクロールバーと関連付けるのは不可能ではないと思いますが、それだけの労力を覚悟するのであれば最初からテーブルを使用することをお勧めします。 - 陰郎 (2007年11月15日 12時20分43秒)
  • 陰郎さん。仰る通り、カスタム描画関数を使用した場合は LstGetSelectionText() を使用できないのですね。私は「実行時の表示情報取得」(pick up the display information on the fly)の「表示情報」を「リストに表示した情報」と解釈したのですが、それがそもそもの誤りで、実際は「リストに表示するための情報」なのですね。そうなると、確かに陰郎さんの書かれた通り、リストとテーブルの違いは無いですよね。う〜ん。。。 - irija_bari (2007年11月15日 23時39分05秒)
  • 陰郎さん。スクロールバーの方は、アドバイスに従ってリストをテーブルに変更しました。スクロールバーも無事動いてくれました。ありがとうございます。 - irija_bari (2007年11月15日 23時39分23秒)
  • ハンドヘルド内の家計簿プログラムはあらかた出来上がったので、いよいよデスクトップとの同期プログラムを作り始めようと思います。「Palm Desktop SDK」を使っての Addin の作り方を参考にやってみるつもりです。 - irija_bari (2007年11月15日 23時39分41秒)
お名前: コメント:


表示された文字列