![]() |
Nochmal VST - Node einfärben
Hallo,
ich beschäftige mich nun auch mal mit VST da der normale Treeview das nicht konnte was ich wollte :D Mein Problem ist nun das wenn etwas bestimmtes passiert, das sich die Farbe des Node des VST ändern soll.
Delphi-Quellcode:
das problem ist nur es gibt ja nicht direkt sowas wie "n.color".
begin
n := virtualstringtree1.GetFirst; while assigned(n) do begin if assigned(n) then begin data:=virtualstringtree1.GetNodeData(n); if data^.FCaption='hiereindummertext' then begin // hier sollte sich dann von n die Farbe ändern break; end; auch aftercellpaint oder befor oder PaintText nützt ja nix da es ja schon da ist :( weiß nochjemand rat? mfg |
AW: Nochmal VST - Node einfärben
Da du das Zeichnen ja selbst übernimmst (oder?) müsstest du ein neu-Zeichnen auslösen. Bei normalen Controls kann dies zum Beispile über Invalidate ausgelöst werden.
|
AW: Nochmal VST - Node einfärben
Meinst Du so etwas?
![]() |
AW: Nochmal VST - Node einfärben
d.h. also icch müsste ja das vorhandene löschen, genau an der stelle neu zeichnen und einfärben oder? muss aber auch bedenken wenn ich dann auf das node drück das die farbe wieder schwarz wird.
ich zeichne einmal das vst beim programmstart. mfg |
AW: Nochmal VST - Node einfärben
Hallo,
das Ereignis das Du suchst heist OnBeforeCellPaint. In diesem Ereignis kannst Du den Colum-Hintergrund ändern.
Delphi-Quellcode:
Obiges Beispiel färbt in einem Tree jede 2. Zeile in einer alternierenden Farbe.
procedure TForm1.vtBeforeCellPaint(
Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect); begin with TargetCanvas do begin if Odd(Node^.Index) then Brush.Color:=clLightGray else Brush.Color:=clWindow; FillRect(CellRect); end; // with end; |
AW: Nochmal VST - Node einfärben
d.h. bevor das node / column gezeichnet wird, male es an ;) aber ich suche ja etwas wenn das node/die column schon vorhanden ist :D oder bin ich atm blöd ?! :D
|
AW: Nochmal VST - Node einfärben
Hallo,
das Ereignis wird ausgelöst, wenn Die Spalte/Zelle gezeichnet wird. Dies bedeutet, das Ereignis wird nur gefeuert, wenn die Spalte existiert und sie auch Daten enthält, die dargestellt werden sollen. |
AW: Nochmal VST - Node einfärben
Zum Verständnis: die Ansicht ist nicht "stabil" - wischt Du mit der Maus oder einem anderen Fenster darüber oder rufst ein Invalidate/Refresh etc. auf, wird neu gezeichnet.
Es wird also keinesfalls nur beim Programmstart gezeichnet :) |
AW: Nochmal VST - Node einfärben
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahh hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh hhhhhhhhhhhhhhhhhhhhhhhhh
gut zu wissen :D erstma vielen dank das bringt mich schonma weiter :D hehe |
AW: Nochmal VST - Node einfärben
so verstehe nu :D
was ne geburt, na gut nu hab ich mal das bsp vonGollum genommen. muss aber jetzt nur die node färben wo sich die caption geändert hat. muss ich also die node in einer globalen variable übergeben ? wil er ändert immer den ganzen baum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz