問題タブ [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.
c++builder - TDBGrid で編集オプションを無効にしても機能しない
実行時に TDBGrid コンポーネントを動的に作成する場合、ユーザーがセルの値を編集することを禁止できません。これは、私がこのタイプの動作を達成しようとしている方法です:
フォーム デザイナーでdgEditingを無効にすると、すべてが正しく機能します。これら2つのケースの違いを見つけることができません。DBGrid セルの編集を無効にするにはどうすればよいですか?
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 を直接呼び出す必要があります (方法がわかりません)。または、完全に再実装する必要があります。
delphi - フォームへの dbgrid 自動調整
私は BDS 2006 で DBGrid を使用しました。実行時に入力される 6 つの列があります。1 つの列のデータ型は、mysql データベースでは char(150) です。データベースから dbgrid に取得している間、長さがかかり、スクロールバーで列が広くなり、いくつかの列が非表示のままになるためです。だから私の質問は、dbgrid のこれらの列をフォームに合わせる方法ですか?
delphi - EhLib DBGridEh スクロールのトラブル
アプリケーションでEhLib DBGridEh
を使用していますが、Scrollbar を使用してスクロールを開始すると、強調表示に問題が発生します。
グリッド内のセルを選択しないと、強調表示が正しく機能します。
しかし、セルを選択してScrollBarを使用してスクロールを開始すると、生全体ではなく 1 つのセルのみが強調表示され、前の生も強調表示されます。
これらは写真で見ることができます。
ほんの数週間前、マウスホイールを使用してグリッドをスクロールしたときに同じ状況が発生しました。この問題は、アプリケーション メッセージの処理を追加することで解決しました。
私のグリッドで有効になっているプロパティの完全なリストがあります:
オプション
- dg編集
- dgタイトル
- dgIndicator
- dgColumnResize
- dgColLines
- dgRowLines
- dgタブ
- dgAlwaysShowSelection
- dgMultiSelect
オプションええ
- dghFixed3D
- dghResizeWholeRightPart
- dghHighlightFocus
- dghClearSelection
- dghMultiSortMarking
- dghEnterAsTab
- dghRowHighlight
vb6 - Visual Basic 6 でデータ コントロールとデータソースを使用して DBGrid からレコードをフィルター処理する
この問題が発生しました。ユーザーがテキストフィールドに情報を入力したときにグリッドの結果をフィルタリングしたいと思います。
実際には、テキスト フィールド、グリッド (DBGrid コントロール)、およびデータ コントロールがありますが、テキスト フィールドが挿入されたグリッドをフィルター処理する方法がわかりません。
mysql - DBGrid列の値を組み合わせる
アプリケーションにBDS2006のDBGridコンポーネントがあります。グリッドのスナップショットは次のとおりです。
DBGridコンポーネントはMySQLデータベースに接続されており、実行時に入力されます。私が使用したクエリは次のとおりです。
表示したいので、値は2_1で、2で1の場合、値は2_1である必要がBILL NO
あります。これを行う方法はありますか?Machine id
BILL NO
Machine id
BILL NO
編集1
このクエリは次のような結果をもたらします
ここでmachineandbillno=billno+pcidが得られます
delphi - DBGridが表示されたときにメソッドが呼び出されるようにするにはどうすればよいですか?
TMSのDBStringGridコンポーネントには、行の高さを自動サイズ設定する組み込みのメソッドがあります。メソッドが機能するために必要なプロパティ設定を理解しており、呼び出されたときにうまく機能します。
グリッドが表示されるたびにグリッドの行のサイズを自動化したいのですが、メソッド呼び出しをどこに配置すればよいかわかりません。コンポーネントのOnCustomCellDrawイベントが適切な選択だと思いましたが、それは無限ループに関連するちらつきとメモリ使用量を引き起こします(grid.doubleBufferingがtrueに設定されている場合でも)。
グリッドが表示されているときにAutoSizeRowsを呼び出したい場合は、どこでAutoSizeRowsを呼び出すことをお勧めしますか?
更新:ケンの答えは良いですが、DBが編集モードに入るときはいつでも、データソースのOnDataChangeイベントに呼び出しを配置することも私の目的に適している可能性があります。
delphi - 小数点以下 2 桁を表示するように DBGrid 列をフォーマットする方法
小数点以下 2 桁を強制するように特定のセルをフォーマットしたいと思います。データは ElevateDB ストアド プロシージャから取得され、TDataSource にフックされます。
編集: SQL プログラミング注:
これが単なる ElevateDB の問題かどうかはわかりませんでした。Fields Editorについて知る前に、ストアド プロシージャ内で CAST (NumericField as varchar(10)) ステートメントを使用して、SQL レベルでデータをフォーマットしようとしました。そうすることで、この特定のフィールドのフィールド エディター内に DisplayFormatプロパティが公開されませんでした。
ストアド プロシージャから CAST() ステートメントを削除すると、DisplayFormatプロパティがFields Editorに表示されました。
delphi - Delphi 2010で親カテゴリを表示するには?
OK、私は Embarcadero Delphi 2010 を使用しています。現在、そのファイル内で名前が付けられた Access データベース ファイルを使用していflib.mdb
ます。次のMCategory
名前の 4 つの列を持つテーブルを作成します。テキストとして。codecategory
parentcategory
category
notes
データベース接続には、ADOConnection を使用します。クエリには ADOQuery を使用します。テーブルには ADOTable を使用します。
コードはプレフィックス付きで自動生成されますが、例では通常の数値を文字列として使用しています。
ROOT は 1 つだけです:codecategory="0" // parentcategory="" // category="ROOT"
別の ROOT を追加することはできません (parentcategory が空のもの)
私の質問は、下の図のようにすべての親カテゴリを再マスクする方法ですか? そして、それを DBGrid で表示する方法は?
recursive を使用する必要がありますか? そうする簡単な方法はありますか?
また、Delphi 2010 のソース コードもお願いします.... ^^