問題タブ [tstringgrid]
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++ - C++ビルダーTstringGridは特定のセルから文字列を取得します
みなさん、こんにちは。C++を持っています。tStringGrid
座標を使用して特定のセルから文字列を取得したい
私はこれを試しましたが、運がありませんでした:
エラー:
助けてください。
delphi - Firemonkey StringGrid でテキスト サイズを変更する
stringgridヘッダーのテキストサイズを変更するには?
delphi - Delphi を使用して文字列グリッド内のディレクトリからすべてのファイルを一覧表示する
私は Delphi 7 を使用しており、特定のディレクトリ内のすべてのファイルを文字列グリッド (行ごとに 1 つのファイル、すべて 1 列に) に一覧表示したいと考えています。私は今約1時間検索しましたが、これを行う方法の例が見つからないので、あなたが提供できる助けがあれば幸いです.
delphi - Firemonkey StringGrid の並べ替えの例
他の例が見つからなかったため、Firemonkey Stringgrid をソートする私の基本的な試み。これを最適に達成するための最適化やその他の提案を歓迎します。私のコードは基本的に、ソートするために選択された列を取得し、そのソート順で他の列を完成させます:
前もってありがとうポール
delphi - TStringGrid の子コントロールが正しく動作しないのはなぜですか?
TCheckBox
最初の列の文字列グリッド ( )にチェックボックス ( ) を配置TStringGrid
しています。チェックボックスは正しく表示され、正しく配置され、マウスをホバーすると光って反応します。ただし、それらをクリックしてもトグルしません。それらはクリックに反応して強調表示されますが、最終的に実際のChecked
プロパティは変更されません。OnClick
さらに不可解なのは、これらの値がいったんそこにあると変更するコードがなく、これらのチェックボックスにイベントが割り当てられていないことです。また、これらのチェックボックスをデフォルトでオフにしていますが、表示されるとチェックされます。
チェックボックスは、リストに追加される各レコードとともに作成され、チェックボックスが配置されるセル内のオブジェクトに割り当てられたレコード ポインター内で参照されます。
セルの強調表示のための文字列グリッドのハック:
チェックボックスを含むレコード:
チェックボックスの作成/破棄:
行をグリッドに追加:
グリッドの OnDrawCell イベント ハンドラ:
クリックするとこんな感じ・・・
何が原因でしょうか? Checked
私のコードのどこでもプロパティを変更することは絶対にありません。チェックボックスをグリッドに配置すると、チェックボックス自体が奇妙な動作をすることがあります。
編集
簡単なテストをTCheckBox
行い、フォームにレギュラーを配置しました。正常にチェック/チェックを外します。次に、フォームのOnShow
イベントで、チェックボックスParent
をこのグリッドに変更しました。今回は、クリックしてもトグルせず、同じ動作になります。そのため、TCheckBox
別のコントロールを親に持つと a が正しく反応しないようです。これを克服する方法は?
delphi - 複数のセルをグリッドからクリップボードにExcel形式でコピーしますか?
SQLデータベースに接続し、データセットを取得して、そのデータをグリッドに表示するツールに取り組んでいます。ユーザーは、セルのブロック(長方形のみ)を選択し、CTRL+Cを押してクリップボードにコピーできる必要があります。
これを行うにはどうすればよいですか:
Excelに貼り付けることができる形式で?このための既製のものがすでにあることを願っています。Excelのようなすべてのクリップボード機能は必要ありません。長方形のセルのグループを強調表示して、クリップボードにコピーするだけです。
それがでできるなら、
TStringGrid
私はその中で私の機能を維持したいと思いますが、これをサポートするコンポーネントで動作することもできます。
delphi - スムーズ スクロール文字列グリッド
一番上の行/左の列の位置でロックするのではなく、スムーズにスクロールできる文字列グリッドが必要です。をスクロールするTStringGrid
と、左に表示されている列と上に表示されている行が、上端/左端に沿って配置されます。これらの端を所定の位置にロックするのではなく、ユーザーがスムーズにスクロールできるようにする必要があります。
、、などのプロパティに依存しているため、これをVCL でTStringGrid
(さらに言えば)変更することはできないと思います。サード パーティ製のコントロールが必要になると確信していますが、私はすでに多くのコードをラップしているので、可能であれば使用するのが大好きです。サードパーティのグリッドが必要な場合は、.TCustomGrid
TopRow
LeftCol
VisibleRowCount
TStringGrid
TStringGrid
delphi - スクロールホイールがTStringGridの最後の行を選択しないようにするにはどうすればよいですか?
ある種の「読み取り専用」行を実装したいくつかの行を持つTStringGridがあります。もっと正確に言うと、ユーザーが最後から2番目の行をクリックすることを許可しません。ユーザーが最後の行をクリックしても、何も起こりません。フォーカスはその行のセルに移動しません。
私は(KeyDownに)コードを持っていて、すべてがスムーズに機能します。ただし、ユーザーが一番上の行をクリックしてからマウスホイールを使用して下にスクロールすると、最終的にフォーカスは最後から2番目の行に移動します。これを防ぐ方法はありますか?
delphi - 外部アプリケーションからDelphiTStringGridへのデータの書き込み
Delphiで記述されたレガシーアプリケーションがあり、次のメカニズムを構築する必要があります。
- 読書と
- 書き込み
TStringGridとの間のデータ。
アプリケーションのソースコードがありません。自動化インターフェースがなく、ベンダーが提供する可能性はほとんどありません。
したがって、私は作成しました
- 注入するC++DLL
- Delphi DLL(私が書いた)に
- レガシーアプリケーションのアドレス空間。
DLL 2は、レガシーアプリケーション内のTStringGridインスタンスにアクセスし、セル値を読み取り、それらをデバッグログに書き込みます。
読書はうまくいきます。しかし、次のような呼び出しを使用してグリッドセルにデータを書き込もうとすると
アクセス違反が発生します。
コードは次のとおりです。
アクセス違反の問題が発生することなく、TStringGridにデータを書き込むにはどうすればよいですか?
delphi - 多くの行を TStringGrid にすばやく追加する方法は?
私はググってたくさんのアドバイスを見つけましたが、それはすべて数年前のもののようで、どれも役に立ちませんでした.
8列の文字列グリッドがあり、数百行を超えると、入力に2秒以上かかります(GetTickCountを使用して比較しました)。
私は試しましたStringGrid.Perform(WM_SETREDRAW, 0, 0)
(そして0, 1
最後に)。
Visible := False
アップデートしながら設定してみました。どちらも駄目。
方法はありませんBeginUpdate()
。
何かアドバイス?Delphi XE2 スターター。FOSS サードパーティの VCL ストリング グリッドが試用され、テストされている場合は、喜んで使用します。
[更新] TDrawGrid を使用して ...「TDrawGrid には、兄弟の TStringGrid のようなプロパティ「セル」がありません。コードは、データを表示する場所を計算する必要があり、次に「キャンバス上にデータの表現を描画する必要があります。 「グリッドの」。
それは私にとって大変な作業のように聞こえます:-(
VirtualTreeView の使用 - 十分に高速な場合は問題ありません。子ノードはありません。(更新++ホームページでこれを読んだところです「仮想ツリービューは非常に高速です。100万ノードの追加には700ミリ秒しかかかりません」)。それなら速度的には問題ありません。しかし、文字列グリッドを使用するのはいいことです。特に、ユーザーがクリックしてソートできる場所。
または、stringgrid の高さは 20 行のみです。たぶん、スクロールバーのクリックを処理し、ユーザーがスクロールしたときにそれらの 20 行をクリアして再入力できますか?
[追加更新] コードが持つ TStringGrid から TListView に変更しましたBeginupdate())
が、ほとんど違いはありませんでした。おっと、「仮想モード」を忘れていました-brb。
ところで、データは表示専用で読み取り専用です。
確かにこれは非常に一般的な問題ですか?