問題タブ [dbgrid]

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 投票する
3 に答える
2247 参照

c++builder - TDBGrid で編集オプションを無効にしても機能しない

実行時に TDBGrid コンポーネントを動的に作成する場合、ユーザーがセルの値を編集することを禁止できません。これは、私がこのタイプの動作を達成しようとしている方法です:

フォーム デザイナーでdgEditingを無効にすると、すべてが正しく機能します。これら2つのケースの違いを見つけることができません。DBGrid セルの編集を無効にするにはどうすればよいですか?

0 投票する
2 に答える
4223 参照

delphi - TDBGrid.DefaultDrawing が false の場合、全行選択 TDBGrid の適切なオーナー描画を行うにはどうすればよいですか?

TDBGrid があり、行全体が選択されていて、フォーカスされていなくても常に選択を表示し、それを完全に所有者描画したい場合は、非推奨の eventOnDrawDataCellと新しい eventの選択肢がありますDrawColumnCell。私は後者を選択して試しましたこれ:

そして、私を夢中にさせているのは、フォーカスの表示 (ハイライトの色とフォーカスの四角形) が DefaultDrawColumnCell コードによって描画されないことです。

DefaultDrawing をオンにすると、一連の不具合 (奇妙なフォント ペイントの問題) が発生し、オフにすると、別の一連の不具合が発生します (gdSelected の場合でも強調表示されません)。

DBGrids.pas のコードはDefaultDrawColumnCell、テキストを描画するだけです。明らかに、すべての描画コードを自分で引き継ぐ場合は、さらに多くのことを行う必要があります。ただし、DBGrids.pas が依存する Grids.pas に組み込まれたハイライト描画コードは、このコンテキストから呼び出されるようには設計されていません。直接呼び出しDrawCellHighlightて (上記のコメントアウトを参照)、Col と Row の値を計算する必要があるのか​​、それともさまざまなケースをすべて手動で処理する TCustomGrid.DrawCellHighlight の独自の複雑なバージョンを作成する必要があるのか​​、わかりません。

確かにこれは非常に単純で明白ですが、私はそれを見落としています。DefaultDrawing をオフにしておく必要があるため、所有者の描画イベント内から完全にペイントする必要があることに注意してください。また、テーマ サービスが利用できない場合でも実行できる必要があり、利用可能な場合はテーマ サービスを使用する必要があります。そのため、TCustomGrid.DrawCellHighlight を直接呼び出す必要があります (方法がわかりません)。または、完全に再実装する必要があります。

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

delphi - フォームへの dbgrid 自動調整

私は BDS 2006 で DBGrid を使用しました。実行時に入力される 6 つの列があります。1 つの列のデータ型は、mysql データベースでは char(150) です。データベースから dbgrid に取得している間、長さがかかり、スクロールバーで列が広くなり、いくつかの列が非表示のままになるためです。だから私の質問は、dbgrid のこれらの列をフォームに合わせる方法ですか?

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

delphi - EhLib DBGridEh スクロールのトラブル


アプリケーションでEhLib DBGridEh を使用していますが、Scrollbar を使用してスクロールを開始すると、強調表示に問題が発生します。
グリッド内のセルを選択しないと、強調表示が正しく機能します。
しかし、セルを選択してScrollBarを使用してスクロールを開始すると、生全体ではなく 1 つのセルのみが強調表示され、前の生も強調表示されます。
これらは写真で見ることができます。
スクロールバグ

ほんの数週間前、マウスホイールを使用してグリッドをスクロールしたときに同じ状況が発生しました。この問題は、アプリケーション メッセージの処理を追加することで解決しました。

私のグリッドで有効になっているプロパティの完全なリストがあります:
オプション

  1. dg編集
  2. dgタイトル
  3. dgIndicator
  4. dgColumnResize
  5. dgColLines
  6. dgRowLines
  7. dgタブ
  8. dgAlwaysShowSelection
  9. dgMultiSelect

オプションええ

  1. dghFixed3D
  2. dghResizeWholeRightPart
  3. dghHighlightFocus
  4. dghClearSelection
  5. dghMultiSortMarking
  6. dghEnterAsTab
  7. dghRowHighlight
0 投票する
2 に答える
2709 参照

vb6 - Visual Basic 6 でデータ コントロールとデータソースを使用して DBGrid からレコードをフィルター処理する

この問題が発生しました。ユーザーがテキストフィールドに情報を入力したときにグリッドの結果をフィルタリングしたいと思います。

実際には、テキスト フィールド、グリッド (DBGrid コントロール)、およびデータ コントロールがありますが、テキスト フィールドが挿入されたグリッドをフィルター処理する方法がわかりません。

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

mysql - DBGrid列の値を組み合わせる

アプリケーションにBDS2006のDBGridコンポーネントがあります。グリッドのスナップショットは次のとおりです。

ここに画像の説明を入力してください

DBGridコンポーネントはMySQLデータベースに接続されており、実行時に入力されます。私が使用したクエリは次のとおりです。

表示したいので、値は2_1で、2で1の場合、値は2_1である必要がBILL NOあります。これを行う方法はありますか?Machine idBILL NOMachine idBILL NO

編集1

このクエリは次のような結果をもたらします

ここに画像の説明を入力してください

ここでmachineandbillno=billno+pcidが得られます

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

delphi - DBGridが表示されたときにメソッドが呼び出されるようにするにはどうすればよいですか?

TMSのDBStringGridコンポーネントには、行の高さを自動サイズ設定する組み込みのメソッドがあります。メソッドが機能するために必要なプロパティ設定を理解しており、呼び出されたときにうまく機能します。

グリッドが表示されるたびにグリッドの行のサイズを自動化したいのですが、メソッド呼び出しをどこに配置すればよいかわかりません。コンポーネントのOnCustomCellDrawイベントが適切な選択だと思いましたが、それは無限ループに関連するちらつきとメモリ使用量を引き起こします(grid.doubleBufferingがtrueに設定されている場合でも)。

グリッドが表示されているときにAutoSizeRowsを呼び出したい場合は、どこでAutoSizeRowsを呼び出すことをお勧めしますか?

更新:ケンの答えは良いですが、DBが編集モードに入るときはいつでも、データソースのOnDataChangeイベントに呼び出しを配置することも私の目的に適している可能性があります。

0 投票する
3 に答える
32502 参照

delphi - 小数点以下 2 桁を表示するように DBGrid 列をフォーマットする方法

小数点以下 2 桁を強制するように特定のセルをフォーマットしたいと思います。データは ElevateDB ストアド プロシージャから取得され、TDataSource にフックされます。

編集: SQL プログラミング注:

これが単なる ElevateDB の問題かどうかはわかりませんでした。Fields Editorについて知る前に、ストアド プロシージャ内で CAST (NumericField as varchar(10)) ステートメントを使用して、SQL レベルでデータをフォーマットしようとしました。そうすることで、この特定のフィールドのフィールド エディター内に DisplayFormatプロパティが公開されませんでした。

ストアド プロシージャから CAST() ステートメントを削除すると、DisplayFormatプロパティがFields Editorに表示されました。

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

delphi - Delphi 2010で親カテゴリを表示するには?

OK、私は Embarcadero Delphi 2010 を使用しています。現在、そのファイル内で名前が付けられた Access データベース ファイルを使用していflib.mdbます。次のMCategory名前の 4 つの列を持つテーブルを作成します。テキストとして。codecategoryparentcategorycategorynotes

データベース接続には、ADOConnection を使用します。クエリには ADOQuery を使用します。テーブルには ADOTable を使用します。

コードはプレフィックス付きで自動生成されますが、例では通常の数値を文字列として使用しています。

ROOT は 1 つだけです:codecategory="0" // parentcategory="" // category="ROOT"別の ROOT を追加することはできません (parentcategory が空のもの)

私の質問は、下の図のようにすべての親カテゴリを再マスクする方法ですか? そして、それを DBGrid で表示する方法は?

親カテゴリのマスキング

recursive を使用する必要がありますか? そうする簡単な方法はありますか?

また、Delphi 2010 のソース コードもお願いします.... ^^