問題タブ [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.

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

multithreading - EnumWindows と EnumChildWindows で Treeview を最新の状態に保つ

Winspector Spy に似たプログラムを作成しようとしています。私の問題は、仮想ツリービューを常に更新したいということです。つまり、ウィンドウが作成されたとき、ウィンドウが破棄されたときなどに更新します。もちろん、すべての外部 HWND です。

そのために、すべてのハンドル + 情報を含むデータ コンテナーを作成し、EnumWindows と EnumChildWindows を別のスレッドで実行して、データ コンテナーに上記の情報を入力することを考えていました。

そのようにすることをお勧めしますか、それとも別の解決策がありますか? このようにすると、プログラムのライフタイム全体でスレッドを実行しExecute、データコンテナをクリアして、毎秒、または何かを埋める無限ループを作成する必要がありますか?

ここに私のデータコンテナがあります:

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

delphi - TVirtualStringTreeのUserDataパラメータを持つInsertNode

TVirtualStringTreeにいくつかの新しいノードを挿入する必要があります。UserDataパラメーターを指定してInsertNodeメソッドを使用します。ただし、ツリーにはデータを表示できません。GetText / FreeNodeイベントのユーザーデータを取得するにはどうすればよいですか?

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

delphi - Is it possible to use animated icons with VirtualTreeView nodes?

I am using the awesome VirtualTreeView component with Delphi 2010. Currently, my nodes are setup with a standard image in a TImageList. What I'd like to do is to be able to show some type of spinning animated icon to show visually that a node is "busy".

Obviously the node won't be busy, but what the node represents to the user will actually be busy. Is there an easy way to do this?

The only way I can think of is to create add 8-10 images represent a spinning wheel to my current TImageList and then cycle through them for that node.

Does anyone have any suggestions?

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

delphi - 基本的な Delphi TVirtualTreeView ノード アイコンの上にオーバーレイ アイコンを表示する最適な方法

標準の TTreeView から TVirtualStringTree を使用するようにツリー ビューを変換しています。私の最後の課題は、既知のノード アイコンの上に「合格/不合格」ステータス インジケーターを描画する必要がある機能を実装することです。私が使用したTTreeViewで:

その結果、以下に示すように、基本アイコンの上に赤い十字が表示されます。

ここに画像の説明を入力

TVirtualStringTree を使用して、より良い方法を見つけるか、必要なオーバーレイ アイコンの位置について、よりよく知られている位置を取得したいと考えました。私がやっている:

これが最善の解決策ですか?恐ろしいノードレベルの呼び出しなしで、基本アイコンの左上隅を取得するより良い方法はありますか?

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

installation - Embarcadero RAD Studio XE での Virtual Treview のインストールの問題

仮想ツリー ビューは、Embarcadero RAD Studio on Stac Overflow に最適なツリー ビューであると聞きました。

そのため、Web サイトから Virtual Treeview Setup 4.8.7.exe をダウンロードしてインストールしました。

エラーなしでインストールされることが示されましたが、IDE には表示されません

誰かが解決策を持っているので、私に教えてください

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

string - TVirtualStringTree の InitNode イベントで文字列を割り当てるとアクセス違反が発生する

Delphi 2007 で問題なく動作する特定のコード。ただし、Delphi 2009 では例外が発生します。

アクセス違反は、アドレス $00000000 の読み取りを示しています。

問題は文字列を割り当てるときにのみ存在し、数値に対して機能します。

Data.Textまた、デバッガー オプションを使用して手動で割り当てると、AV が取得されません。動作します。

正直なところ、私は迷子になっています。誰か助けてください。

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

delphi - VirtualStringTreeで垂直スクロールバーを更新するにはどうすればよいですか?

VirtualStringTree各ノードの高さが異なる高さに変更された場合のスクロールバーを更新する方法。coz、スクロールはまだ同じ状態であるため、スクロールしたときに他のノードを表示できません。

toVariableNodeHeightオプションは機能しませんか?他のアイデアはありますか?

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

delphi - VirtualStringTree スクロールバーを更新するには?

VirtualStringTree の問題を解決するのに苦労しています。

  • Node.NodeHeightNodeDataで最初に追加したものがあります
  • またはDefaultNodeHeight

ここでの問題は、各NodeHeightを異なるサイズに変更することでした。その結果、VirtualStringTree は正しいスクロールを提供せず、他のノードが見えなくなりました。

誰でも助けてもらえますか?

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

delphi - VirtualStringTree セルペイント

さて、次の問題があります。

いくつかのブール変数に応じて、ツリー セルをさまざまな色でペイントしました。例:

  • isProcessService、
  • isProcessInDebugger、
  • isProcessService、
  • isProcessElevated、
  • isProcessNet、
  • isProcessOwner、
  • isProcessinJob、
  • isProcessPacked、
  • isProcessMarkedForDeletion、
  • isProcessMarkedForCreation : ブール値;

したがって、BeforeCellPaint では、次のようなブール値に基づいてセルの背景色をペイントします。


質問は:

プロセスが作成または削除されるかどうかに応じて、セルを緑または赤にペイントするにはどうすればよいですか (色を少なくとも 1 秒間そのままにしてから、元の値に戻しますか?)

つまり、プロセスが作成され、セルが緑色にペイントされ、しばらく待ってから、isProcessService、is ProcessOwner などに応じて元の色に戻ります...

最大の問題は、非ブロック モードでこれが必要なことです (スリープを使用できません。そうしないと、ツリーもフリーズするため、色の変化が認識されません)。

それでもフォローできない場合は、プロセスが作成または削除されたときに Process Explorer または Process Hacker が行うのと同じ動作を模倣しようとしています。どちらのアプリケーションも、これらのプロセスのセルの背景を赤または緑で 1 秒間ペイントしてから、セルの元の色に戻します。

参考までに、wmi 経由でプロセスの作成または削除の通知を受け取ります。

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

delphi - キャッシュシステムを使用してデータを更新するVirtualStringTree

さて、私はVirtualStringTreeを使用して一種のプロセスマネージャーを作成しています...

1000msに設定されたタイマーでツリーを更新したために問題が発生しました(CPU使用率が高すぎて、アプリケーションが大量のデータ(約20列を埋める)を取得できません。

それで、ある種のキャッシュシステムを構築して、何かが変更されたときにのみツリーを更新できるようにするにはどうすればよいのでしょうか。これが、アプリケーションのCPU使用率を大幅に低下させる鍵であると思われます。

をちょきちょきと切る:

アプリケーションが起動したら、実行中のすべてのプロセスでツリーを埋めます。これは一度だけ呼び出されることを覚えておいてください。後でアプリケーションを実行すると、新しいプロセスまたはwmiを介して終了するプロセスの通知を受け取ったので、後でタイマーで次のプロシージャを呼び出してツリーを更新する必要はありません...

必要なすべてのデータを取得して、次のようにツリーに保存するクラスがあります。

したがって、実行中のすべてのプロセスを列挙したい場合は、次のように呼び出します。

問題は、変更されたデータだけでなく、すべてを列挙しているときにここから始まります。これは、CPUを大量に消費します。

基本的に、タイマーはCPU使用率と、次のようなプロセスから取得できるすべてのメモリ情報にのみ必要です。

  • Priv.Memory
  • ワーキングセット
  • ピークワーキングセット
  • 仮想サイズ
  • PageFileの使用法
  • PageFileのピーク使用量
  • ページフォールト
  • CPU使用率
  • スレッド数
  • ハンドル数
  • GDIハンドル数
  • ユーザーハンドル数
  • 合計CPU時間
  • ユーザーCPU時間
  • カーネルCPU時間

したがって、上記のデータをキャッシュして比較する必要があると思います。データが変更された場合、またはどのように、そして何が最も効率的か疑問に思っているだけではないでしょうか。