改良されたディスティンクト・ファンクションを紹介します。
ユニークなデータ要素のリストを取得することは、データを操作する際に常に役に立ちます。場合によっては、各値の出現回数を取得することが不可欠です。Collectionと Entityの選択クラスのdistinct 、ユニークな値のリストを取得することができます。4D v20では、各特異的な値の出現回数を取得することも可能です。
そして、それだけではありません!
データベース内のオブジェクトを使用して、ユーザーが入力したカスタムデータを保存することができます。そのため、コード側では、オブジェクトへの可能なパスをすべて知っておく必要があります。 Entity選択クラスには、distinctPaths 関数が追加されています。
ここでは、あなたが知る必要のあるすべてを紹介します。
コレクションに便利な関数を追加しました!
コレクションのクラス関数は、4D v16 R6 で導入され、map() や reduce() のように、いくつかの関数はフォーミュラを扱えるように進化しました。4D v20 では、同様に実用的な機能がいくつか追加されていますので、ここで紹介します。
コレクション型のリストボックスにおける自動行高
リストボックスは、もっとも汎用性が高くてカスタマイズ可能なフォームオブジェクトです。自動行高機能は、配列型のリストボックスではすでに可能でした。4D v19 R8 では、この機能が コレクションまたはエンティティセレクション型のリストボックス にも拡張されました!
コレクションとコールバックコマンドにおけるフォーミュラの使用
コレクションのメンバー関数がコールバックを必要とする場合に、もっとわかりやすい方法はないかとのご要望を多数いただきました。
この度、このご要望に応えることができました!
4D v19 R6 より、コレクションのメンバー関数に定義するコールバックのほか、EXECUTE METHOD IN SUBFORM、CALL FORM および CALL WORKER コマンドにもフォーミュラが受け渡せるようになりました。もし、コードを簡単な式に減らすことができれば、メソッドを使用せずに直接受け渡すこともできます。
フォームオブジェクトでコレクションとリストを使用する
4D プログラミングでは、コレクションを使用することが多くなっています。4D v19からは、Form機能を含め、いくつかのインターフェースオブジェクトのコンテンツを定義するために、これらを使用することができます。これは、一般的なインターフェイスの管理に非常に便利です。
また、リストの使用方法にも改良を加えました。詳しく見ていきましょう!
ORDA新4Dタグで簡単ループ
ORDAのエンティティセレクションやコレクションを扱う際に、For each…End for eachループを使用したことがあるかと思います。その使い方は簡単でわかりやすいものです。 SHTMLページで4Dタグとして使用したいですか?あるいは、PROCESS 4D TAGSコマンドで使用したいですか?
4D v19で、それが可能になりました。もっと詳しく知るために、読み進めてください。
ORDA – リストボックスの行選択を改善しました。
コードで複数のメソッドのプロパティを一度に変更する
複数のメソッドのプロパティを、それぞれのメソッドのプロパティダイアログを開かずに変更したい場合があるかと思います。
例えば、すべてのメソッドを「プリエンプティブモードで実行可能」な状態に設定してから、データベースをコンパイルしたいとします。コンパイルエラーで、プリエンプティブに変更するメソッドの概要がわかるわけです。
コマンドを使用して METHOD GET NAMESコマンドを使用してデータベースからメソッドのリストを取得し、次に METHOD SET ATTRIBUTESコマンドを使って属性を変更することで、すべてのメソッドを同時に変更することができます。
多階層コレクションを異なるリストボックスで表示する方法!
4D v17から、マルチレベル・コレクションのコンテンツを、異なるリストボックスに簡単に表示することができるようになりました。つまり、複数のリストボックスをバインドして、ネストされた詳細を表示することができます…一行のコードも必要ありません!これは、オブジェクトまたはコレクションを別のリスト ボックスのデータ ソースとして使用することで実現できます。
新しいリストボックスのコレクションタイプには、“Current item”と“Selected items”のプロパティが追加されています。Current item “プロパティはオブジェクトを取得でき、”Selected item “プロパティはコレクションを返すことを覚えておいてください。
ループ、ループ、そして……さらにループ!
他の多くのプログラミング言語と同様に、4Dでは、数値の反復処理を行うために For(…) / End for 文による数値の反復処理や、条件付きで While(…)/End whileと Repeat/Until(…)キーワードによって、数値の反復処理を行うことができます。これらの反復処理(またはループ)は非常に便利ですが、コレクションやエンティティセレクションのような高度なデータ型に対する反復処理には最も適切な方法ではありません。そのため、新しい For each(…)/End for each イテレータが作成され、コーディングが容易になりました!