コレクション型リストボックスのドラッグ&ドロップ

自分自身へのドラッグ&ドロップによる順序の変更を行おうとしたのですが
自動的にコレクションの位置を変更はしてくれないのでしょうか?

エンティティセレクションは,セットと命名セレクションをベースにしていますが,

命名セレクション型のリストボックスも並び替えはサポートされていないので,

同様に,コレクション型でもドラッグ&ドロップによる順序の変更はコーディングが必要になるかと思います。

(ちなみにフッターの自動計算もサポートされていないですね)

たとえば,オブジェクト型のメタ情報フィールドを用意しておき,
そこにウエイトを書き込む,といった実装ができるかもしれません。
(並び順をデータベースに保存したい場合)

例:

On Begin Drag Over: LISTBOX GET CELL POSITIONまたはカレント位置をペーストボードに

On Drag Over: LISTBOX GET CELL POSITION (x,yモード) でペーストボードとカレント位置を比較:同一であればドロップを許さない

On Drop: ペーストボードとDrop positionのエンティティでウエイトを入れ替え:ウエイトは位置に(エンティティセレクション.lengthとテーブルのレコード数の比率を掛けた0-1の値)

エンティティセレクションは,「メタ情報フィールド.ウエイト」でソート

データベースに保存するのではなく,表示上のソートであれば,また違った処理になるかと思います。

https://forums.4d.com/Post//30107170/1/

フッタの自動計算も対応していないんですか :frowning:

コレクション/エンティティセレクション型のリストボックスはまだまだ改善の余地がありそうですね。
少なくともセレクション型と同等くらいまでは実装してくれないと移行しずらいです。

開発途中でそれに気がつくのは結構疲れます。 :pray:

テクニカルノート(英文)に収録されていた例題です。

https://forums.4d.com/4DBB_Main/x_User/298210/files/30275443.zip

わりとベーシックなサンプルなので,あまり,参考にはならないかもしれませんが・・・