リストボックスのフッターに計算式を設定できない。

Product :4D - 4D Server
4D : v15.4

リストボックスで、LISTBOX INSERT COLUMNを使って列を追加する時、フッターにNIL変数を渡してダイナミック変数を割り当てた状態で、LISTBOX SET FOOTER CALCULATIONでListbox footer sumをセットするとフィールドのタイプが違うというエラーが発生します。

マニュアルを読むと、LISTBOX INSERT COLUMNでフッターに割り当てられるダイナミック変数のタイプはテキストということですので、Listbox footer sumが返す数値と違うためのエラーですので、仕様どおりなのはわかります。

でも、Listbox footer sumをはじめ、ほとんどの計算式が数値を返すのに、どれも設定できないという仕様はどうなのでしょうか。

何か回避策はないのでしょうか?

http://forums.4d.com/Post/FR/18014516/1/18014517#18014517こちらのスレッド>で回避策が論じられています。

ありがとうございます。

ご紹介の方法では、複数の列を動的に追加する場合、その列数だけあらかじめオブジェクトを用意する必要はありますが、ふと思いついて数値型のダイナミック変数の変数オブジェクトを一つ用意して、それをOBJECT DUPLICATEで追加する列ごとに複製して、そのポインタを入れたらうまくいきました!

ご報告ありがとうございます。

OBJECT DUPLICATEを実行すると,複製されたオブジェクトで_On Load_イベントが発生するので,そちらのオブジェクトメソッドで列の作成をする,という方法もあります。ですが,普通に数値型のフォームローカル変数を複製して使用するか,配列の要素を増員して使用するほうが自然ですね。

ありがとうございます。

配列の要素を増員
これは上手く動作しました。こっちの方がシンプルですね。

数値型のフォームローカル変数を複製して
これは具体的な方法がわからないので、よろしければコードのサンプル等があれば教えてください。

「数値型のダイナミック変数の変数オブジェクトを一つ用意して、それをOBJECT DUPLICATEで追加する列ごとに複製」

「数値型のフォームローカル変数を複製」

はまったく同じ意味です。紛らわしかったですね。

「ダイナミック変数」は,変数の型宣言が「動的」であることを述べているのに対し,

「フォームローカル変数」は,(インター・プロセス・ローカルと同様に)そのスコープを指した表現です。