問題タブ [tvirtualstringtree]
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.
delphi - InitNode イベントで VirtualStringTree のノードにデータを割り当てる方法
VirtualStringTree のノードにデータを割り当てる方法がわかりません。ツリー コントロールの InitNode イベントで、レコード オブジェクトへのポインターをノードの Data プロパティに割り当てる必要があります。ただし、「ポインター型が必要です」というコンパイル時エラーが発生します。
InitNode イベントでノードにデータを割り当てる必要がありますが、割り当てる方法がわかりません。
delphi - TVirtualStringTree: 編集されたテキストを取得するには?
TVirtualStringTree に表示されているノードの 2 列目を編集しています。ただし、編集が完了した後、Sender.GetNodeData(Node) を使用してテキストを取得できません。テキストが含まれていません。
OnEdited イベントでテキストを取得するにはどうすればよいですか? 編集されたテキストを取得する他の方法はありますか? Virtual Treeview CHM ヘルプ ドキュメントの最初のいくつかの FAQ ページを読み、この SO の質問の回答も参照しましたが、回答が見つかりませんでした。
現在のコードは次のとおりです。
delphi - VirtualStringTree - 格納されたポインタ <> ポインタが取得されました! 私のコーディングアプローチは間違っていますか?
レコードへのポインタを格納するために TVirtualStringTree を使用しています。
もともと、レコードのリストを含む TList があります。
OnInitNode イベントを使用して TList を反復処理し、各レコードのデータをツリーのノードに割り当てています。
ただし、OnNewText イベント ハンドラーでノードに関連付けられたデータを取得すると、返されるポインターのアドレスは、ツリーに最初に格納されたアドレスとは異なります。
さらに、ノードから取得した (レコード データへの) ポインターが、ノードに最初に格納されたものと同じではないことをデバッグで確認できます。変更されたデータをデータベースに保存し、変更されたデータでレコードを参照する必要があります。ポインターを参照するだけの単純なはずですが、問題はポインターが同じでないことです。
何が間違っているのかわかりません。誰かがこれを修正するのを手伝ってくれることを願っています。
前もって感謝します。
これが私のコードです:
データ構造と宣言:
データを TList にロードしてから、ツリーにロードします。
データを取得しています。ここで問題に気づきました:
これは、リストデータをデータベースに保存する場所であり、コピーではなく元のデータを変更するためにツリーが必要な理由です。
以下は、Debug->Watch List ウィンドウからのスクリーンショットです。
delphi - この TVirtualStringTree Onheaderclick 非互換パラメータを解決するにはどうすればよいですか?
Delphi 7.0 Windows XP 2 で Mike Lischke による TVirtualStringTree (バージョン 4.8.7) をテストしました。正常に動作します。同じ TVirtualStringTree (v.4.8.7) を別のマシン (Delphi 7.0 Windows XP 3 システム) にインストールし、同じプロジェクトを Windows XP 3 システムでテストしました。ヘッダーをクリックすると、エラーが表示されました。Delphi 7.0 Windows XP 3 から TVirtualStringTree (バージョン 4.8.7) を削除し、より新しいバージョンの TVirtualStringTree (バージョン 5.3.0) を Windows XP 3 にインストールしました。同じ問題がまだ存在していました。
Windows XP 3 でプロジェクトをビルドすると、以下のプロンプトが表示されました。
[いいえ] をクリックして、テスト プログラムを実行しました。ヘッダーをクリックすると、「... でのアクセス違反」というメッセージが表示されました。
そして、それは以下のエラーを促しました:
どうすればこれを解決できますか?
delphi - OnChange イベントを適切に処理する方法 - VirtualStringTree
ノードデータを表すレコードを既に作成しましたが、イベントOnChange
を適切に処理したいのですが、別のノードをクリックするたびに、イベントが1回呼び出されます(2回ではなく、これが私の問題です)。
このツリーは、ディレクトリの圧縮ファイルの構造を示しています。ツリーの項目をクリックするたびに、そのフォルダーに含まれるファイルのリストが読み込まれます。しかし、OnChange
イベントを使用してアイテムをクリックすると (または上/下矢印キーを押すと)、イベントが 2 回呼び出され、アプリケーションがファイル リストを 2 回連続してロードします。
フォーカスされたアイテムが変更された場合にのみ、イベントを適切に使用してファイルリストをロードするにはどうすればよいですか?
delphi - ユーザーが VirtualTreeView コントロールのヘッダー列のチェック ボックスをクリックしたときに通知を受け取る方法は?
VirtualTreeView ヘッダー列のチェック ボックスのクリックを通知するイベントはありますか? この図で強調表示されているチェック ボックスです。
delphi - TVirtualStringTree: OnGetText イベントの列パラメータとは?
OnGetText イベント プロシージャの定義は次のとおりです。
このイベントのドキュメント CHM ヘルプ ファイルには次のように書かれています。
ニュース グループや Delphi Gems メッセージ ボードなどの他のリソースを使用して、説明を見つけてください。
このイベントで (Column < 0) をチェックしている SO に関する他の投稿を見たことがあります。
FWIW、データベース データから親子ツリー ビューを実装しようとしています。
delphi - VirtualStringTree - 親子ノードが正しく機能しない
TVirtualStringTree で Main-Menu をレンダリングする必要があります。各メニュー項目にはカテゴリがあります。カテゴリはツリーのルート ノードを構成し、各カテゴリ ルート ノードの下にメニュー項目があります。
Categories と MenuItems のデータセット フィールドは次のようになります。
OnInitNode の私のコードは、カテゴリ データセットのレコードをスクロールし、各カテゴリのメニュー項目を子ノードとして読み込みます。ただし、何か問題があり (画像を参照)、Category ノードはすべて同じテキストです。つまり、データセットが次のレコードにスクロールしていません。
イベント内のこのコード行がInitNode
ループを終了させているようで、問題の原因のようです:
しかし、子ノードをレンダリングする適切な方法は何ですか?
これは私のコードです:
これが何が起こっているかです。各ルート ノード (親) は異なる必要がありますが、そうではありません。さらに、2 番目のルート ノードの子ノードは異なるはずですが、1 番目のルート ノードの最後の子ノードでスタックしているようです。
前もって感謝します!
delphi - TVirtualStringTree で画像をホバリングするとカーソルが変わる
ノードから ImageIndex をホバリングしているときにカーソルを変更するにはどうすればよいですか
基本的に、ノードに添付アイコンが表示されています。カーソルを変更することで、ファイルを押すことでファイルをダウンロードできることをユーザーに理解させたいと思います。