リストボックス、カレントセレクション指定時のセルカラー変更について
2 posters
リストボックス、カレントセレクション指定時のセルカラー変更について
初めまして、v16.1を使用しております。
普段、リストボックスはいつも配列指定で使用しておりましたが、カレントセレクションを指定した際の挙動につきまして困惑しております。
LISTBOX GET ARRAYSで取得した$arrColVarsではそれぞれフールドへの参照と式を入れたセルではNilが返ってくるのがその原因だとは思いますが、カレントセレクションを指定したリストボックスでのセルに色付けの方法は他にありませんでしょうか?
もし不可能であれば、カレントセレクションを配列にコピーしてリスト表示を更新する仕組みを作らないといけませんが、セレクションに対して処理を行う様になっている以前のバージョンで作成されたフォームでの処理における互換性を考えると工数が増えそうで気が重いところでございます。
逆に、セレクションをリストボックスに表示更新する仕組みを汎用的にすることができれば良さそうですね。そう言ったコンポーネントなどがあれば嬉しいですが・・・
よろしくお願い致します。
普段、リストボックスはいつも配列指定で使用しておりましたが、カレントセレクションを指定した際の挙動につきまして困惑しております。
- Code:
LISTBOX GET CELL POSITION(*;"ListBox1";$clicked_col;$clicked_row;$clicked_var)
LISTBOX SET ROW COLOR($clicked_var->;$clicked_row;0x00FFCCCC;lk background color)
LISTBOX SET ROW COLOR($clicked_var->;$clicked_row;0x00FF0000;lk font color)
LISTBOX GET ARRAYSで取得した$arrColVarsではそれぞれフールドへの参照と式を入れたセルではNilが返ってくるのがその原因だとは思いますが、カレントセレクションを指定したリストボックスでのセルに色付けの方法は他にありませんでしょうか?
もし不可能であれば、カレントセレクションを配列にコピーしてリスト表示を更新する仕組みを作らないといけませんが、セレクションに対して処理を行う様になっている以前のバージョンで作成されたフォームでの処理における互換性を考えると工数が増えそうで気が重いところでございます。
逆に、セレクションをリストボックスに表示更新する仕組みを汎用的にすることができれば良さそうですね。そう言ったコンポーネントなどがあれば嬉しいですが・・・
よろしくお願い致します。
osaru- 投稿数 : 67
登録日 : 2017/08/14
Re: リストボックス、カレントセレクション指定時のセルカラー変更について
カレントセレクションを指定したリストボックスでのセルに色付けの方法は他にありませんでしょうか?
v14のドキュメント(63ページ)をご覧ください。
http://library.4d-japan.com/REFERENCE/v14/4d-upgrade-14.pdf
リストボックス全体ではなく,列のプロパティで制御します。
カレントセレクションの場合,配列ではなく,式(プロジェクトメソッドまたはChoose文など)で色を指定します。LISTBOX GET ARRAYSの「制御配列」は使用しません。
http://library.4d-japan.com/SAMPLE_DATABASES/4D/4D_v14/demo_dbs_hdi/
"HDI_SetStyleToCells.zip" の例題で取り上げられています。
カレントセレクションを配列にコピーしてリスト表示を更新する仕組みを作らないと・・・
ボックス内で更新したレコードの自動保存を回避したいのでない限り,その必要はないはずです。
セレクションをリストボックスに表示更新する仕組みを汎用的にすることができれば・・・
無料イベント "World Tour" で紹介された例題です。
https://github.com/4D-JP/event-world-tour-2017/blob/master/ユーザーモードコンポーネント.pdf
https://github.com/4D-JP/event-world-tour-2017
miyako- 投稿数 : 468
登録日 : 2016/07/05
Re: リストボックス、カレントセレクション指定時のセルカラー変更について
miyakoさま、ご連絡ありがとうございます。
"HDI_SetStyleToCells.zip" の例題はプロパティに式として配列を入れて、そちらの配列を制御することでもOK、こちらならリストボックスのOn Display Detailイベントで逐次処理もできそうなので、オブジェクトメソッドの一箇所にコードを集約できて良いかもしれませんね。
何れにしてもリストボックスの表現力が格段に上がったので使いこなせる様頑張って参りたいと思います。
列のプロパティでの制御、やっと理解できました。この場合choose式で賄いきれない複雑な色付けをしたいと思ったら小さなプロジェクトメソッドが増えてしまうのは致し方ないですよね。リストボックス全体ではなく,列のプロパティで制御します。
"HDI_SetStyleToCells.zip" の例題はプロパティに式として配列を入れて、そちらの配列を制御することでもOK、こちらならリストボックスのOn Display Detailイベントで逐次処理もできそうなので、オブジェクトメソッドの一箇所にコードを集約できて良いかもしれませんね。
こちらは4Dというより作り方の問題なのですが、セレクションの変化タイミングが読めないところが多少あるので・・・ボックス内で更新したレコードの自動保存を回避したいのでない限り,
何れにしてもリストボックスの表現力が格段に上がったので使いこなせる様頑張って参りたいと思います。
osaru- 投稿数 : 67
登録日 : 2017/08/14
Permissions in this forum:
返信投稿: 不可
|
|