問題タブ [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 - TVirtualStringTree と垂直スクロールが正しく機能しない
TVirtualStringTree の使い方を学びましたが、すばらしいと思いました。別のスレッドによって埋められる PackedList と呼ばれるカスタムの非ビジュアル リストが 1 つあります。そして、TVirtualStringTree のすべてのリスト コンテンツをリアルタイムで表示したいと考えています。そこで、メインフォームに 1 つのタイマーを配置して、HexLog (TVirtualStringTree) の RootNodeCount を 500 ミリ秒ごとに更新します。
私のデータはすべて VirtualStringTree に表示され、速度の問題はありません。しかし、垂直スクロール バーには 1 つの問題があります。リストの最後にジャンプするためにコントロールで Ctrl+End を押すと、途中のどこかに移動します。同様に、スクロールバーを最後までドラッグしても、最後まで移動しません。しかし、HexLog は DataCount を知っています。最後までジャンプしないのはなぜですか?Ctrl+END を数回押すと、最後まで到達します。
タイマールーチンの中で、コードでリストの最後にジャンプする HexLog と言いたいです。これを行うにはどうすればよいですか?また、垂直スクロールバーを適切に処理するにはどうすればよいですか?
TLama による提案された返信が正しく機能していません。説明については画像を参照してください。
詳細な画像の説明については、そのリンクを参照してください: http://i43.tinypic.com/1445thi.png
delphi - TVirtualStringTree の Ctrl+End 動作
ユーザーが Ctrl+End を押すと、VirtualStringTree は垂直方向の末尾にジャンプしますが、水平方向にも問題ありません。横に最後まで行きたくない。横スクロールはそのまま。
これを伝える方法は?
delphi - TVirtualStringTree: OnMeasureItem イベントと OnGetText イベントの間で変更されたデータ
TVirtualStringTree で表されるデータを保持する配列があります。この配列はスレッドセーフでロック可能です。そして、別のスレッドによって成長しました。
私の問題は、VST が OnMeasureItem イベントを実行してノードの高さを測定するときに、OnGetText イベントでデータを印刷する時点になると、測定に使用されるデータが変わる可能性があることです。
イベントの実行順序を確認しましたが、設計に適していません。最初に、初期化されていないすべてのノードに対して OnMeasureItem イベントを発生させ、次に OnGetText イベントの呼び出しを開始します。つまり、3 つのノードがあるとすると、イベントは次の順序で発生します。
しかし、ロックできるようにするには、次のようなものが必要です。
OnMeasureItem イベントと OnGetText イベントの間で取得したデータの同期を維持する最善の方法は何ですか?
すべての OnMeasureItem() および OnGetText() イベント中に配列をロックしたくありません。
ありがとうございました。
onTimer を追加:
delphi - TVirtualStringTreeで誤って描画されたテーマのチェックボックス
toThemeAwareが有効になっている場合、VirtualTrees.pasのバージョン5.0.0でのチェックボックス処理が壊れているように見えます。csUncheckedNormalであるノードは、チェック済み+ホットとして描画されます。
DrawElementを使用してチェックされていないテーマのチェックボックスを正しくペイントするには、Detailsレコードは次のようにする必要があります:Element = teButton、Part = 3、State = 5ただし、ノードがcsUncheckedNormalに設定されている場合、VirtualTrees.pasはState=1でDrawElementを呼び出すことになります。 。
VirtualTreesで宣言された間接参照と余分な定数がかなりあるように思われるので、これを修正する最善の方法がわかりません。アイデアを歓迎します...
(TVirtualStringTreeを画面に表示し、データを入力するための最小限のコードでさえ、ここに投稿するには少し時間がかかります。基本を除けば、これを再現するために必要なのは、TreeOptions.MiscOptionsでtoCheckSupportを有効にし、Node.CheckTypeを設定することだけです。 = InitNodeコールバックのctTriStateCheckBox。)
delphi - VirtualTreeViewでセルを背景画像と混色するにはどうすればよいですか?
VT.Background を使用して、VT で背景画像をいくつかの列で表示しています。
しかし、背景画像を隠すため、セルに異なる色を使用する方法が見つかりません。
使用しようとしましたOnBeforeItemErase
がEraseAction := eaColor
、セルの背景ビットマップ領域を使用eaDefault
すると色も適用されず、使用すると色が適用されません。
これを行う方法はありますか?
delphi - TVirtualStringTree-[-] / [+]ボタンを変更するにはどうすればよいですか?
独自のカスタムボタン(画像)を使用して、VSTのデフォルトの[-]
/ボタンを置き換えるにはどうすればよいですか?
代わりに矢印を使用したい(、)が、RTLビディモード(、)もサポートしたい。[+]
編集:私はbsTriangle
スタイル(ButtonStyle)を知っています。RTLを尊重しません。自分のカスタム画像を使いたい。
delphi - 仮想TreeViewループ
VirtualTreeViewのすべてのルートを調べて、それらを削除したいと思います。
クリアしたくない。
このコードでアクセス違反が発生しました:
ご協力ありがとうございました。
delphi - Virtual Treeviewでルートノードのstateindexを変更するにはどうすればよいですか?
仮想ツリービューのStateimagesにImageListが割り当てられています。ルートノードのstateindexを変更するにはどうすればよいですか?何も見つかりません。ご協力ありがとうございました。
delphi - VirtualTreeView でルート ノードのセルテキストを編集する
既存の仮想 (ルート) ノードのセル テキストを変更したいと考えています。データを変更することはできますが、GetText が再度起動されるように TreeView 全体を更新する必要があります。ツリー全体ではなく、1 つのルート ノードのみを更新する簡単な方法または可能な方法はありますか?
ご協力ありがとうございました。