問題タブ [livebindings]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
620 参照

delphi - Delphi Livebindings - CustomFormat に他のフィールド値を含める

これは単純なはずですが、機能させるのに苦労しているようです。

簡単に言えば、name 列と id (autoinc) 列があります。Live Binding を使用して、2 つのフィールドを 1 つのラベル コントロールに結合したいと考えています。

カスタムコントロールをに設定しました

"%s (Self.Owner.FieldByName('ind_id').Text)"

しかし、役に立たないので、0 がフィールド ID 値であると想定されている場合、'Name 0' とだけ言います。

私が間違っていることについて何か考えがありますか!?

前もって感謝します。

0 投票する
1 に答える
872 参照

delphi - LiveBinding とデータセットで使用するときに TProgressColumn を機能させる方法

私の目標は、LiveBindings を介して TClientDataSet に接続された、いくつかの列を持つ TGrid を持つことです。列の 1 つは TProgressColumn 型です。

グリッドにはデータが表示されますが、進行状況バーの列には何も表示されません (つまり、進行状況 0%)。

TProgressColumn は ftInteger 型のフィールドに接続されています。このフィールドの値は 0 ~ 100 です。

ftSingle で試してみましたが、うまくいきませんでした。TLinkGridToDataSourceBindSourceDB/Columns の下にある ColumnStyle プロパティを使用して、列のタイプを TProgressColumn に設定します。

奇妙なことに、TPrototypeBindSource を使用して値を生成すると、TProgressColumn は機能しますが、ftUInteger 値に対してのみ機能します。ftInteger ジェネレーターでは失敗します。

ここに小さなデモがあります (Delphi XE7):

TProgressColumn の問題

TProgressCell.DrawCell() にブレークポイントを設定し、Value.IsOrdinal と Value.IsType の 2 つの条件をステップ オーバーすると、スキップされ、ClampValue は 0 である値「Min」を受け取ります。渡された値に何か問題があるようです。関数に。

TProgressColumn を使用する際に何か特別なことはありますか? TLinkGridToDataSourceColumn で CustomFormat、CustomParse を使用する必要がありますか?

それはバグですか、それとも何か見逃していますか?

UPDATE: 「のんぱ」のおかげで謎が解けました!

実際、「asInteger」は TField クラスのよく知られたプロパティです。

TProgressColumn - 解決済み!

CustomFormat プロパティでは、self.asInteger プロパティを含む多くのものにアクセスできます。詳細はこちら:

  1. LiveBinding でのカスタム フォーマットおよび解析式の使用
  2. TLinkPropertyToField コンポーネントの CustomFormat プロパティでバインディング式を使用する
  3. フィールドのフォーマット
  4. 整数フィールドをブール値として扱うには?
0 投票する
2 に答える
1561 参照

delphi - Delphi ライブ バインディングはコンボ ボックスをフィルタリングします

タイプ テーブルとサブタイプ テーブルの値を検索するテーブルにリンクする 2 つのコンボ ボックスがあります。ユーザーが最初のものを選択すると、2番目のデータをフィルタリングする必要があります。

サンプルデータ:

ライブ バインディングの前に、2 番目の before popup イベントまたは最初のコンボ ボックスの close または change イベントで、2 番目のデータ ルックアップ (サブタイプ) をフィルター処理および更新できます。ライブバインディングを使用してこれを試しても効果はありません。私もこの方法を使用しようとしましたがBindlist.Notify、成功しませんでした。

0 投票する
1 に答える
473 参照

class - LiveBinding または OOP?

OOPについて質問です。私は Delphi の初心者ではありませんが、主にインターネットから自分で学び、「正しい」方法で学びませんでした。数週間前に OOP を調べ始めたところです。これが私の問題です。「セッション」と呼ばれる独自のクラスがあります。このクラスは、Visual LiveBinding を介して Edit に接続されます。クラスに TClientDataset のデータを入力したい (データセットを直接編集にバインドしないのには理由があります)。1. データセットを実装し、ファイルとナビゲーションを開く処理を行う別のクラスを作成します。2. ClientDataset を Form にドラッグ アンド ドロップし、次のように Livebindings を使用してクラスに接続します。 DataSet <---> Class <---> Edit

私の説明を理解していただければ幸いです。だから:どちらのアイデアが良いですか?LiveBinding は OOP の概念を「破壊」しているように感じます。一方で、ライブ バインディングがそれを行ってくれるので、コードや型キャストを記述する必要はありません。では、どの方法を選択し、その理由は何ですか? それとも誰か別のアイデアがありますか?

私の言いたいことを理解して、私を助けてくれることを願っています:)

0 投票する
0 に答える
284 参照

delphi - Delphi LiveBinding を使用して、TObjectBindSourceAdapter から 2 列の「名前」、「値」の編集可能なリストを作成できますか?

Delphi XE7 と FireMonkey を使用して、TGrid でいくつかのオブジェクト プロパティ値を表示 (および編集) する簡単な方法を検討しています。TGrid 列をオブジェクト プロパティにバインドする方法を示すチュートリアルに従い、TObjectBindSourceAdapter例に示すように、1 つのオブジェクトからデータが取り込まれたきちんとした単一行のグリッドを使用しました。

ただし、グリッドには 1 つのオブジェクト (1 行) しかないため、グリッド データを 90 度回転させて、固定の「名前」と編集可能な「値」の 2 つの列を作成したいと考えています。オブジェクトのプロパティは縦にリストされます (効果的にオブジェクト インスペクター ビューのように)。

これを行う LiveBindings の方法はありますか、それとも TListView などの別のコントロールを使用する必要がありますか? LiveBinding は初めてです。

提案をありがとう。

0 投票する
0 に答える
277 参照

delphi - iOS での LiveBinding のメモリ リーク

このコードを使用してTListView、実行時のアイテムの表示方法を変更しています。

Instrumentsを使用して iPhone でアプリケーションを監視しましたが、TMoveArrayManagerこのコードが実行されるたびに約 1 ギガバイトのインスタンスがリークされていることがわかります。ほんの数回で、iPhone のメモリが不足し、アプリケーションがシャットダウンします。実行時にライブ バインディングを破棄して作成するためのより良い方法を見つけようとしましたが、より良い解決策を思いつくことができませんでした。ライブバインディングでこのような問題が発生したことはありますか?