4D v16.3階層リストの管理 |
||
|
4D v16.3
階層リストの管理
階層リストの管理
階層リストはフォームオブジェクトで、拡張/折り畳み可能な複数レベルのデータリスト表示に使用できます。 フォーム中で、階層リストはデータの表示および入力に使用できます。リスト項目ごとに20億文字 (テキストフィールドの最大サイズ) までの文字を含めることができ、アイコンを割り当てることができます。一般的に階層リストはクリック、ダブルクリック、キーボードナビゲーション、そしてドラッグ&ドロップをサポートします。リストの内容を検索することも可能です (Find in list コマンド)。 階層リストは( New list または Copy list コマンドを使用することによって)プログラミングで全て作成することが出来ます。また、デザインモードのリストエディターで定義されたリストを使用(Load list コマンド)することで作成することもできます。 階層リストの内容やアピアランスは、"階層リスト"テーマのコマンドを使用して、プログラムで管理できます。特定のアピアランス等については オブジェクトプロパティ テーマのコマンドで設定できます (後述)。 OBJECT SET LIST BY REFERENCE または OBJECT SET LIST BY NAME コマンドを使用することによって、階層リスト参照をフォームオブジェクトの選択リスト(ソース、指定リスト、除外リスト)と、動的に関連付けることもできます。また、プロパティリストを使用することによって、リストエディターにて定義された選択リストをフォームオブジェクトと関連付けることもできます。 階層リストはメモリ上に存在するランゲージオブジェクトであり、同時にフォームオブジェクトでもあります。 ランゲージオブジェクトは倍長整数型のユニークな内部IDで参照されます (本マニュアル中ではListRefと表記)。このIDはリストを作成するNew list、Copy list、Load list、BLOB to listから返されます。メモリ中にランゲージオブジェクトのインスタンスはひとつのみしか存在せず、このオブジェクトに対して行われた変更は即座に使用されているすべての場所に適用されます。 フォームオブジェクトはユニークである必要はありません。同じ階層リストを同じフォームや異なるフォーム上で使用できます。他のフォームオブジェクト同様、ランゲージ中でシンタックス (*;"ListName") を使用してオブジェクトを指定します。 ランゲージオブジェクトとしての階層リストと、フォームオブジェクトとしての階層リストは、ListRef の値を格納した中間的な変数により接続されます。例えば:
mylist:=New list のように記述するとListRefがmylistに格納され、階層リストフォームオブジェクトのプロパティリストにmylist変数名を記述でき、ランゲージオブジェクトを管理できます。 リストはフォームオブジェクトごとに個別の性質を、および他のリストフォームオブジェクトと共有される性質を持ちます。以下の性質はリストフォームオブジェクトごとに固有のものです:
他の性質 (フォント、フォントサイズ、スタイル、入力コントロール、カラー、リストの内容、アイコン、その他) は他のリストフォームオブジェクトと共有され、個別に変更することはできません。 したがって、拡張/折りたたみ状況に基づくコマンドやカレントの項目に関するコマンド、例えば Count list items (最後の * 引数を渡さずに) を使用するとき、どのフォームオブジェクトに対する処理なのかを明示的に示すことが重要です。 メモリ中の階層リストを指定する場合は、ランゲージコマンドにListRef IDを使用しなければなりません。 警告, プロパティを設定するコマンドの場合、オブジェクト名に基づくシンタックスは、指定されたフォームオブジェクトのみがコマンドで変更されることを意味せず、それよりもコマンドの動作はこのオブジェクトの状態に基づきます。階層リスト共有の性質は常にすべてのオブジェクトで変更されます。 例えば、SET LIST ITEM FONT(*;"mylist1";*;thefont)を実行すると、mylist1フォームオブジェクトに関連付けられた階層リスト項目のフォントを変更します。コマンドはmylist1オブジェクトの現在選択されている項目を更新の対象としますが、変更はすべてのプロセスのすべてのリストに対して実行されます。 他のオブジェクトプロパティ管理コマンドのように、 ListName 引数で “@” 文字を使用できます。このシンタックスはフォーム中のオブジェクトグループを指定するために使用されます。しかし階層リストコマンドのコンテキストでは、 これはすべてのケースで適用されるわけではありません。このシンタックスはコマンドのタイプにより、2つの異なる効果があります:
4Dの汎用コマンドを使用して、フォーム上の階層リストオブジェクトのアピアランスを変更できます。これらのコマンドには (* 引数を使用して) 階層リストオブジェクト名または (標準シンタックスの) 変数名を渡します。 Note: 階層リストの場合、フォームの変数はListRef値を含んでいます。階層リストに関連付けられた変数を渡して属性を変更するコマンドを実行すると、複数の階層リストフォームオブジェクトがある時に、それらの一つを特定することができません。それぞれ異なる表示をさせたい場合はオブジェクト名で指定します。 以下は階層リストに対して適用可能なコマンドのリストです: Reminder: OBJECT SET SCROLL POSITION コマンドを除き、オブジェクト名を指定したとしても、これらのコマンドは同じリストのすべての表示を変更します。
階層リストの特定のプロパティ (例えば入力可属性やカラーなど) は3つの異なる方法で設定できます: デザインモードのプロパティリスト、“オブジェクトプロパティ” テーマのコマンド、“階層リスト” テーマのコマンド。
この原則は、コマンドが呼び出された順番に関係なく適用されます。階層リストコマンドを使用して個々に項目プロパティを変更すると、同等のオブジェクトプロパティコマンドは、そのあとに呼び出されたとしても、その項目に対しては効果を持たなくなります。例えばSET LIST ITEM PROPERTIES コマンドを使用して項目のカラーを変更すると、この項目に対してOBJECT SET COLOR コマンドは効果を持たなくなります。 階層リストのコンテンツにアクセスするには通常2つの方法、位置または参照のいずれかを使用します。
階層リストのそれぞれの項目は倍長整数型の参照番号 (itemRef) を持ちます。この値は開発者が使用します。4Dはたんに番号を保存するだけです。 警告: どの倍長整数値も参照として使用できますが、0だけは特別な意味を持ちます。このテーマのほとんどのコマンドで、0は最後にリストに追加された項目を指定するために使用されます。 参照番号を使用するにあたりいくつかTipsを紹介します:
Note:ビットワイズ演算子を使用して、項目参照番号に情報を格納できます。例えば2つの整数値、4バイトの値、32個のブール値です。 階層リストをユーザインタフェースとして使用し、選択された項目のみを処理する場合は、ほとんどの場合項目参照番号を必要としません。Selected list items や GET LIST ITEM を使用すれば、現在選択されている項目を扱うことができます。さらにINSERT IN LIST や DELETE FROM LIST などのコマンドは、選択された項目からの相対位置でリストを操作できます。 基本的に、選択に関係なく、プログラムで任意のリスト項目にアクセスする必要がある場合に項目参照番号が必要です。
参照
OBJECT SET COLOR
|
プロパティ
プロダクト: 4D
履歴
ARTICLE USAGE
ランゲージリファレンス ( 4D v16) |