問題タブ [virtualtreeview]
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 - TVirtualStringTreeのホットノード座標を取得するにはどうすればよいですか?
マウスを上に置いたときに、 VirtualStringTreeのセルを別の方法でペイントしようとしています。ホットノードの座標を検出するにはどうすればよいですか?HotNodeプロパティがあることは知っていますが、マウスカーソルの下にあるノードのみを返します。そのノードのセル座標(X、Y)を取得する必要があります。
delphi - 仮想StringTree:OnGetHintイベントハンドラーによって返されるテキストはヒントウィンドウに表示されません
Virtual StringTreeコントロールのOnGetHintイベントのハンドラーを作成しました。ヒントテキストが返されることは確かですが、ヒントウィンドウが空白です。下のスクリーンショットを参照してください。この問題の原因は何ですか?前もって感謝します。
コントロールの設定:
delphi - 仮想 TreeView で複数のノードを展開できますか?
Delphi プロジェクトで TVirtualStringTree ( Virtual TreeView Componentの一部)を使用しており、2 つの列が [+] 記号で展開/折りたたみ可能な子を持つことができるビューを作成したいと考えています。サンプルとしての下の図では、サーバー列だけでなく画像列にも[+]記号を付けたいと思います。ツリーには複数のサーバー ノードがあり、それぞれに多くのプロセスの子 (メインの列はイメージ) があり、一部のプロセスにはプロセスのノードの子であるサブプロセスがあるという考え方です。

(出典: remkoweijnen.nl )
このようなレイアウトは可能ですか?デフォルトのコンポーネントを使用していない場合は、これを子孫に実装する方法についてアドバイスをいただければ幸いです。
/編集: 次のスクリーンショットは、TOndrej が提案する方法を使用した場合の もの です。 http://www.remkoweijnen.nl/temp/TreeView4.png
OK、TOndrej のアイデアに従って実装することにしました: alt テキスト http://www.remkoweijnen.nl/temp/TreeView5.png
delphi - 仮想StringTree:ノードテキストが完全に表示されているかどうかを判断する方法は?
TVirtualStreeTree.HintMode = hmTooltipの場合、ノードテキストが完全に表示されていないノードおよび列にマウスを合わせると、ノードテキストがヒントテキストになります。ただし、HintMode = hmHintを設定する必要があります。これにより、偶数ハンドラーで現在のマウスカーソルの位置に基づいてさまざまなヒントテキストを指定でき、そのHintModeではヒントテキストが自動的に生成されません。
私の質問は、ノードテキストが完全に表示されているかどうかを知る方法です。そのため、ヒントテキストとしてノードテキストまたは空の文字列を指定する必要がありますか?
ありがとう。
delphi - VirtualStringTree を Excel、csv にエクスポートしますか?
VirtualStringTreeを Excel または CSVにエクスポートできますか?
Delphi 2007 を使用しており、VirtualStringTree データ レコードを Excel または CSV 形式で保存しようとしています。
delphi - 仮想 StringTree のヒント ウィンドウが画面に表示されない
このスクリーンショットを参照してください。中央にあるのは、TVirtualStringTree コントロールによって生成され、画面に残されている小さなヒント ウィンドウです。これらのヒント ウィンドウは、アプリケーションが終了するまでそこに残ります。問題は、ツリービューのヒントが表示され、マウスがその隣のウィンドウにすばやく移動したときに発生します。
これを回避する方法、またはこれを回避するのが難しい場合に消去されていないヒント ウィンドウをクリアする方法について何か考えはありますか?
数日前に同様の質問をしましたが、スクリーンショットのヒント ウィンドウは同じように見えますが、同じ問題ではありません。その問題、ヒント テキストは表示されず、そのような未完了のヒント ウィンドウのみが表示されます。この問題、ヒント テキストは表示されますが、ヒント ウィンドウが完全に消去されない場合があります (上記で説明したように)。それが明確であることを願っています。
delphi - Delphiの仮想ツリービューでの高速スクロール
[これは以前に投稿された質問の更新バージョンです。前のタイトルはDelphiの仮想ツリービューのインデックスによるノードの選択でした。]
1日の大部分を終えると、Virtual Treeviewコンポーネント(強力ですが複雑)が単純な2つのテーブルのデータ対応方式で機能するようになったと思います。
ここで、最上位ノードの1,512番目(たとえば)を単純に選択しようとしています。最初のトップレベルノードを取得してから、ループでGetNextSibling 1,511を呼び出す以外に、これを行う方法はわかりません。
これは不必要に関係しているようです。もっと簡単な方法はありますか?
アップデート
ツリー内のノードを初期化するにはデータベースアクセスが必要なため、起動時にすべてのノードを初期化することはできません。ユーザーがレコードがまだ選択されていないフォームから開始する場合、それは問題ありません。ユーザーがツリーをスクロールすると、現在のウィンドウをツリーに表示するのに十分なノードが作成され、パフォーマンスは良好です。
ユーザーがデータベースレコードを選択した状態でダイアログモードでフォームを開始する場合、ユーザーがフォームを表示する前に、ツリーをそのノードに進める必要があります。レコードがツリーの終わりに向かっている場合、最初のノードからツリーを歩くのに10秒かかる可能性があるため、これは問題です。GetNextSibling()を実行できるたびに、ノードの大部分がユーザーに表示されていなくても、ノードが初期化されます。これらのノードの初期化を、ユーザーに表示されるようになるまで延期したいと思います。
レコードを選択せずにツリーを開き、垂直スクロールバーを使用して、1回の操作でツリーの中央に移動すると、初期化せずに正しいノードが表示されるため、より良い方法があるはずです。スキップしたノード。
これは、レコードを選択してツリーを開いたときに実現したい効果です。移動したいノードのインデックスはわかっていますが、インデックスでそこに到達できない場合は、いくつかのノードを前後にジャンプできると仮定して、ツリーでバイナリ検索を実行できます(直接スクロールして木の真ん中)。
あるいは、グリッドをトラバースするときに中間ノードを初期化しないままにする、ツリービューに作成できる状態設定があるかもしれません。Begin / End Updateを試しましたが、うまくいかないようです。
c++ - IID_IDropTargetとVirtualtrees::IID_IDropTargetの間のあいまいさ
現在、コンパイル時間を短縮するためにリファクタリングインクルードのプロセスを実行していますが、次のコンパイルエラーが発生しました。
[C++ Error] some_class.cpp(53): E2015 Ambiguity between 'IID_IDropTarget' and 'Virtualtrees::IID_IDropTarget'
それが指すコード行は次のとおりです。
使用すると正常にVirtualtrees::IID_IDropTargetコンパイルされますが、実装したCOMIDropTargetインターフェイスを使用する必要があります。問題は、VirtualtreesコンポーネントにIDropTargetインターフェイスの別の実装があり、それらが競合していることである可能性があると思います。
私が望まないことをどのように指定できるかについてのアイデアはありますVirtualtrees::IID_IDropTargetか?または、COMのIID_IDropTargetに使用する名前空間ですか?
delphi - VirtualTreeViewからWindowsエクスプローラーにファイルをドラッグする方法
TVirtualStringTreeがあり、各ノードはファイルを表します。ユーザーがノードをWindowsエクスプローラーまたはOutlookにドラッグできるようにすると、ターゲットが実際のファイルを取得できるようになります。OnGetUserClipboardFormatsandRenderOLEDataイベントハンドラーを実装する必要があるようです。でもどこから始めたらいいのかわからない…手伝ってくれませんか?
delphi - Delphi、VirtualStringTree-レコードの代わりにクラス(オブジェクト)
VirtualStringTreeノードのレコードの代わりにクラスを使用する必要があります。
私はそれを次のように標準的な(しかしこの場合は-トリッキーな)方法で宣言する必要があります:
または直接使用する必要がありますTMyObjectか?もしそうなら-どのように?!オブジェクトを割り当て(構築)して解放するのはどうですか?
よろしくお願いしますm。