4

メモリ TDataSet の子孫でDevExpress TdxMemDataを使用しています。Filtered: Boolean および Filter: String プロパティがありますが、OnFilterRecord イベントの Accept パラメータの結果に依存する代わりに、実際にはそれらを自動的に処理するようには見えません。

したがって、私が探しているのは、フィルター テキストを解析してデータセットに適用する方法です (おそらく、TdxMemData または DevExpress のコード スイートのどこかにあります)。

理想的には、フィルターに対して個々の行をテストして、データセットからフィルター処理せずに一致するかどうかを確認する方法が必要です (フィルターに一致する行を強調表示したい)。

フィルター文字列の例:

((Name = 'Jim') and (Rep > 1000)) or (Rep > 5000)

したがって、ネストされた and と or があります。実際には、DevExpress TcxDBFilterControl によって構築されます。

私が見逃している単純なものがあることを本当に望んでいます。

更新: DevExpress でチケットを開いて、何らかの種類のソリューションがサポートされているかどうかを確認しました。TdxMemDataでの フィルタリングをサポートしていないという彼らのストックアンサーを見つけました。

4

3 に答える 3

4

これがあなたが探している答えではないことはわかっていますが、TdxMemData データセットはフィルター文字列をサポートしていません。フィルターを使用するには、独自の OnFilterRecord イベントをコーディングするか、ProgrammedFilter を true に設定して、(実行時に) フィルター処理されるレコードのリストを FilterList に入力します。

1 つの可能性は、独自のパーサーをコーディングして、フィルター文字列を OnFilterRecord イベントの現在のレコードと比較することです。

于 2009-05-20T23:18:25.470 に答える
2

TdxMemDataをTkbmMemTableに置き換えることを検討することをお勧めします。これは無料で、DXコンポーネントと同様に機能し、フィルター文字列をサポートします。OnFilterRecordにフィルター文字列パーサーを実装するよりも、移植にかかる時間が大幅に短縮される可能性があります。他のDXコンポーネントでも問題なく動作します。

于 2009-05-20T23:35:43.097 に答える